RaspberryPi[9] ラズパイで KKHMF GY-521 MPU-6050 ジャイロ加速度計 IMUを i2c を制御する。
ラズパイから見えるようにする。
MPU-6050は 6 CH ジャイロ加速度計 です。これをラズパイで制御させた時の覚書です。まずは、ラズパイのI2Cを有効にします。
sudo raspi-config コマンドを使ってInterface Optionsにある P5 I2C をSelect して有効にします。MPU-6050をラズパイのI2C端子と電源に繋いで、
ラズパイピン番号 | MPU6050 |
1pin | VCC |
3pin | SDA |
5pin | SCL |
6pin | GND |
i2cdetect -y 1 と打つと正しくつながって入ればI2Cのアドレスが表示されます。
プログラム各前準備
今回は、C言語で作りますので、DIO制御で で有名な、WiringPiを使用します。まずは、WiringPiをコンパイルします。
その前に、i2cのライブラリをインストールします。
$ sudo apt-get install libi2c-dev 次に WiringPi のコンパイルをするために、以下のコマンドを打ちます。 $ git clone https://github.com/WiringPi/WiringPi.git WiringPi のフォルダができているので、そこに入り、コンパイルを行います。 $ cd WiringPi $ ./build WiringPi がインストールできると、gpio コマンドが使えるので、以下のように正しくインストールができているか確認できます。 Copyright (c) 2012-2018 Gordon Henderson This is free software with ABSOLUTELY NO WARRANTY. For details type: gpio -warranty Raspberry Pi Details: Type: Pi 4B, Revision: 02, Memory: 4096MB, Maker: Sony * Device tree is enabled. *--> Raspberry Pi 4 Model B Rev 1.2 * This Raspberry Pi supports user-level GPIO access.
Wiring Piのリファレンスはここです。
コンパイルの仕方。
gcc -Wall -o XXX XXX.c -lwiringPi -lm
-lm オプションは math.h を使用するときに使います。
I2Cの制御
I2Cの使い方は、基本下記のくりかえしです。
- アドレスを指定して通信を開始 Wire.beginTransmission(I2Cアドレス);
- コマンド Wire.write(レジスタアドレス);
- コマンド Wire.write(データ);
- 通信の終了 Wire.endTransmission();
レジスターマップは以下からダウンロードできます。
MPU-6000 and MPU-6050 Register Map and Descriptions Revision 4.2