/a/センサー
Published on

Raspberry Piに「HMC5883L-」を接続し制御する

1539文字3分で読めます–––
閲覧数
Authors
  • avatar
    Name
    将 有坂
    short bio
    ラズパイやArduinoで電子工作をしてます。

はじめに

Raspberry Piは汎用のシングルボードコンピュータで、様々なセンサーやモジュールを組み合わせて利用することができます。この記事では、地磁気センサー「HMC5883L」をRaspberry Piに接続し、Pythonを使用して制御する方法について解説します。

※ センサー類を安く買うなら → AliExpress 🛒 早く届くのが良ければ → Amazon 🚚

1. HMC5883L地磁気センサーの概要

HMC5883Lは、三軸の地磁気センサーであり、地磁気の方向を計測することができます。I2C通信を使用してデータを取得し、Raspberry Piと組み合わせることで、方位角や地磁気の変動を検知するプロジェクトを構築することができます。

2. HMC5883Lの接続

HMC5883LをRaspberry Piに接続するためには、通常以下のような接続が必要です。

  • VCC(赤色): 3.3Vの電源
  • GND(茶色): 接地
  • SCL(緑色): I2Cのクロック
  • SDA(黄色): I2Cのデータ

これらをRaspberry Piの対応するピンに接続します。

3. Pythonコードの作成

HMC5883Lを制御するために、Python言語を使用します。まず、Raspberry Piに smbus ライブラリをインストールします。

sudo apt-get install python3-smbus
sudo apt-get install i2c-tools

次に、以下のPythonコードを使用してHMC5883Lを制御します。

import smbus
import time

# I2Cアドレス
address = 0x1E

# コンパスデータ読み込み
def read_compass(bus):
    bus.write_byte_data(address, 0, 0b01110000)  # Set to 8 samples @ 15Hz
    bus.write_byte_data(address, 1, 0b00100000)  # 1.3 gain LSb / Gauss 1090 (default)
    bus.write_byte_data(address, 2, 0b00000000)  # Continuous sampling

# 角度計算
def calculate_angle(bus):
    data = bus.read_i2c_block_data(address, 0, 6)
    x = data[0] << 8 | data[1]
    z = data[2] << 8 | data[3]
    y = data[4] << 8 | data[5]

    angle = (180 * (atan2(y, x) + pi) / pi) + 180
    return angle

# メインプログラム
def main():
    bus = smbus.SMBus(1)

    try:
        while True:
            read_compass(bus)
            angle = calculate_angle(bus)
            print(f"Current Angle: {angle} degrees")
            time.sleep(1)

    except KeyboardInterrupt:
        print("Program terminated by user.")
        bus.close()

if __name__ == "__main__":
    main()

4. コードの実行と動作確認

Pythonコードを保存し、実行します。地磁気センサーが正しく接続されていれば、コンソールに現在の角度が表示されます。

これで、Raspberry PiにHMC5883Lを接続し、地磁気センサーを制御するための基本的な手順が完了しました。このプロジェクトを拡張するには、取得したデータを可視化したり、他のセンサーと組み合わせて利用したりすることができます。

※ センサー類を安く買うなら → AliExpress 🛒 早く届くのが良ければ → Amazon 🚚
avatar

将 有坂

電子部品専門家 / ラズベリーパイのプロ / 数多くのセンサーやモジュールの導入実績
ラズベリーパイやArduinoの電子工作に関わるソフトウェアエンジニア。これまで100種類以上のセンサーやモジュールの導入を行い、その知識と経験を活かして、多くの人々に電子工作の楽しさを伝えることを使命としている。

タグ ->