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