- Published on
Raspberry Piに「ITG-3200」を接続し制御する
- Authors
- Name
- 将 有坂
- short bio
- ラズパイやArduinoで電子工作をしてます。
はじめに
Raspberry Piは、小型で手軽に利用できるシングルボードコンピュータで、様々なセンサーやモジュールを組み合わせて利用することができます。この記事では、「ITG-3200」と呼ばれる3軸ジャイロセンサーをRaspberry Piに接続し、制御する方法について解説します。
1. ITG-3200の概要
ITG-3200は、3軸のジャイロセンサーであり、角速度を計測することができます。このセンサーは、慣性センシングや姿勢制御などのアプリケーションで利用されています。Raspberry Piと組み合わせることで、自己安定化ロボットや傾き検知システムなどのプロジェクトを実現することができます。
2. ITG-3200の接続
ITG-3200は、通常、4つのピンがあります。
- VCC(赤色): 3.3Vの電源
- GND(茶色): 接地
- SCL(緑色): I2Cのクロックライン
- SDA(黄色): I2Cのデータライン
これらのピンをRaspberry Piに接続します。Raspberry PiのGPIOピンに対応するように接続しましょう。
3. Raspberry Piの設定
Raspberry PiでI2Cを有効にする必要があります。以下のコマンドを使用して、I2Cを有効にします。
sudo raspi-config
「Interfacing Options」→「I2C」を選択し、有効にします。再起動後、I2Cが有効になります。
4. Pythonコードの作成
次に、Pythonコードを使用してITG-3200を制御します。以下は、smbus
ライブラリを使用した例です。
import smbus
import time
# I2Cアドレス
ITG3200_ADDRESS = 0x68
# ITG-3200レジスタ
ITG3200_REG_XOUT_H = 0x1D
ITG3200_REG_YOUT_H = 0x1F
ITG3200_REG_ZOUT_H = 0x21
# スケールファクター(±2000度/秒の場合)
ITG3200_SCALE_FACTOR = 14.375
# I2Cバスの初期化
bus = smbus.SMBus(1)
# ジャイロデータの読み込み
def read_gyro_data():
x = bus.read_i2c_block_data(ITG3200_ADDRESS, ITG3200_REG_XOUT_H, 2)
y = bus.read_i2c_block_data(ITG3200_ADDRESS, ITG3200_REG_YOUT_H, 2)
z = bus.read_i2c_block_data(ITG3200_ADDRESS, ITG3200_REG_ZOUT_H, 2)
return (combine_bytes(x), combine_bytes(y), combine_bytes(z))
# 16ビットの2つのバイトを結合
def combine_bytes(data):
return (data[0] << 8) | data[1]
try:
while True:
# ジャイロデータの取得
gyro_x, gyro_y, gyro_z = read_gyro_data()
# 角速度の計算
gyro_x /= ITG3200_SCALE_FACTOR
gyro_y /= ITG3200_SCALE_FACTOR
gyro_z /= ITG3200_SCALE_FACTOR
# 結果の表示
print(f"Gyro X: {gyro_x} deg/s, Gyro Y: {gyro_y} deg/s, Gyro Z: {gyro_z} deg/s")
# 1秒待機
time.sleep(1)
except KeyboardInterrupt:
# キーボード割り込みで終了
pass
finally:
# バスを閉じる
bus.close()
このコードは、ITG-3200から角速度のデータを読み取り、それを度数に変換して表示する単純な例です。
5. コードの実行と確認
Pythonコードを保存し、実行してITG-3200からのデータを確認します。正しく接続されていれば、ジャイロのX、Y、Z方向の角速度が表示されるはずです。
これで、Raspberry PiにITG-3200を接続し、Pythonコードを使用して制御するための基本的な手順が完了しました。自分のプロジェクトに組み込んで、様々なアプリケーションに活用してみてください。