/a/センサー
Published on

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

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

はじめに

Raspberry Piは多くのセンサーやモジュールと組み合わせて様々なプロジェクトを構築するための強力なプラットフォームです。この記事では、地磁気センサー「MAG3110」をRaspberry Piに接続し、制御する方法について解説します。

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

1. MAG3110センサーの概要

MAG3110は、地磁気を測定するためのセンサーであり、小型でI2C通信を介してデータを提供します。Raspberry Piに接続して使用することで、周囲の地磁気の変化を検知できます。

2. MAG3110の接続

MAG3110をRaspberry Piに接続するには、以下の手順を実行します。

  • VCC: 3.3V電源
  • GND: 接地
  • SDA: I2Cデータライン
  • SCL: I2Cクロックライン

これらのピンをRaspberry Piの対応するピンに接続します。一般的に、Raspberry Piのピン配置はデータシートや製品のマニュアルで確認できます。

3. Raspberry Piのセットアップ

MAG3110を接続したら、Raspberry PiのI2Cインターフェースを有効にします。以下のコマンドを使用して、必要なツールをインストールします。

sudo apt-get update
sudo apt-get install -y i2c-tools

その後、Raspberry Piを再起動します。

4. Pythonコードの作成

次に、MAG3110を制御するPythonコードを作成します。以下は、smbus ライブラリを使用した基本的な例です。

import smbus
import time

# MAG3110のI2Cアドレス
MAG3110_I2C_ADDR = 0x0E

# レジスタ定義
CTRL_REG1 = 0x10
OUT_X_MSB = 0x01
OUT_Y_MSB = 0x03
OUT_Z_MSB = 0x05

bus = smbus.SMBus(1)

# MAG3110初期化
bus.write_byte_data(MAG3110_I2C_ADDR, CTRL_REG1, 0x01)

time.sleep(0.5)

# データ読み取り
def read_data(register):
    data = bus.read_i2c_block_data(MAG3110_I2C_ADDR, register, 6)
    value = (data[0] << 8) | data[1]
    if value > 32767:
        value -= 65536
    return value

try:
    while True:
        x = read_data(OUT_X_MSB)
        y = read_data(OUT_Y_MSB)
        z = read_data(OUT_Z_MSB)

        print(f"X: {x}, Y: {y}, Z: {z}")
        time.sleep(1)

except KeyboardInterrupt:
    pass
finally:
    bus.close()

このコードは、MAG3110からX、Y、Z方向の地磁気データを読み取り、1秒ごとに表示する簡単な例です。

5. コードの実行と結果確認

Pythonコードを保存して実行すると、MAG3110からの地磁気データが表示されるはずです。センサーの向きを変えると、データが変化することが確認できます。

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

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

将 有坂

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

タグ ->