logo
Published on

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

Authors
  • avatar
    Name
    Shou Kawakami / 川上翔
    Twitter

はじめに

Raspberry Piは豊富なGPIOピンを備え、様々なセンサーやデバイスを接続して利用することができます。この記事では、地磁気センサー「HMC5983」をRaspberry Piに接続し、Pythonを使用して制御する方法について解説します。

※モジュールの価格を比較 ▶ TemuAliExpress楽天メルカリ

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

HMC5983は、三軸地磁気センサーであり、地磁気を測定することができます。I2C通信を介してデータを取得し、地磁気の変動や方向を検出することが可能です。このセンサーをRaspberry Piに接続することで、地磁気データを取得して利用することができます。

2. HMC5983の接続

HMC5983をRaspberry Piに接続するためには、I2C通信に対応したGPIOピンを使用します。通常、以下のような接続が行われます。

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

3. Pythonコードの作成

Raspberry PiでHMC5983を制御するために、Python言語を使用します。まず、Raspberry PiにsmbusというI2C通信用のライブラリがインストールされていることを確認します。インストールされていない場合は、以下のコマンドでインストールします。

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

次に、Pythonコードを作成します。

import smbus
import time

# HMC5983のI2Cアドレス
HMC5983_I2C_ADDR = 0x1E

# 初期化
bus = smbus.SMBus(1)

def read_data():
    # HMC5983からデータを読み込む
    data = bus.read_i2c_block_data(HMC5983_I2C_ADDR, 0x00, 6)
    
    # X, Y, Zの値を取得
    x = (data[0] << 8) | data[1]
    z = (data[2] << 8) | data[3]
    y = (data[4] << 8) | data[5]

    return x, y, z

try:
    while True:
        # 地磁気データを取得
        x, y, z = read_data()

        # 取得したデータを表示
        print(f"X: {x}, Y: {y}, Z: {z}")

        # 1秒待つ
        time.sleep(1)

except KeyboardInterrupt:
    pass
finally:
    bus.close()

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

Pythonコードを保存し、Raspberry Pi上で実行します。地磁気データが表示されるはずです。センサーを回転させると、それに合わせてデータが変動することが確認できます。

これで、Raspberry PiにHMC5983を接続し、Pythonを使用して地磁気データを取得する基本的な手順が完了しました。取得したデータを利用して様々なプロジェクトを構築することができます。