logo
Published on

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

Authors
  • avatar
    Name
    Shou Kawakami / 川上翔
    Twitter

はじめに

Raspberry Piは小型で高性能なシングルボードコンピュータであり、様々なセンサーやモジュールを接続して利用することができます。本記事では、地磁気センサー「AK8963」をRaspberry Piに接続し、制御する方法について解説します。

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

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

AK8963は、三軸地磁気センサーであり、地磁気を検知することができます。このセンサーは、地磁気の方向を計測し、様々なプロジェクトやロボット制御に利用されます。Raspberry Piと組み合わせることで、地磁気情報を取得し、利用することができます。

2. AK8963の接続

まず、AK8963をRaspberry Piに接続します。通常、AK8963には以下のようなピンがあります。

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

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

3. Raspberry Piコードの作成

次に、Pythonを使用してAK8963を制御するためのコードを書きます。I2C通信を利用してデータを読み取ることが一般的です。

以下は、smbusモジュールを使用した例です。

import smbus
import time

# AK8963のI2Cアドレス
AK8963_ADDRESS = 0x0C

# I2Cバスの初期化
bus = smbus.SMBus(1)

# AK8963を初期化する関数
def init_ak8963():
    # AK8963をシングルモードで設定
    bus.write_byte_data(AK8963_ADDRESS, 0x0A, 0x16)
    time.sleep(0.1)

# AK8963からデータを読み取る関数
def read_ak8963():
    # データの読み取り
    data = bus.read_i2c_block_data(AK8963_ADDRESS, 0x03, 6)
    x = (data[1] << 8) | data[0]
    y = (data[3] << 8) | data[2]
    z = (data[5] << 8) | data[4]
    
    return x, y, z

# AK8963の初期化
init_ak8963()

# メインループ
try:
    while True:
        # AK8963からデータを読み取り
        x, y, z = read_ak8963()

        # 読み取ったデータの表示
        print(f"X: {x}, Y: {y}, Z: {z}")

        # 1秒待機
        time.sleep(1)

except KeyboardInterrupt:
    print("プログラムを終了します")

このコードは、AK8963から地磁気データを読み取り、それを1秒ごとに表示する簡単な例です。

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

最後に、コードを実行してAK8963が正しく動作しているか確認します。コードを保存し、ターミナルで実行することで地磁気データが表示されるはずです。

これで、Raspberry PiにAK8963を接続し、Pythonコードを使用してセンサーを制御する手順が完了しました。必要に応じて、この基本的なプログラムを拡張して様々なプロジェクトに応用することができます。