- Published on
Raspberry Piに「MAG3110」を接続し制御する
1504文字3分で読めます–––
閲覧数
- Authors
- 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 🚚