Raspbery pi on Fedora 23でI2Cを使ってジャイロの値取得.
Raspberry PI でI2C 通信する方法を模索中.
Raspbian であれば,raspi-config から簡単に有効化できるのですが,
Fawkes の関係で,Fedora 23が動いているうちの研究室のRaspberry Pi.
さて,どうしましょう.
まず,Raspbian での説明はRaspberry PiのGPIO制御方法を確認する(GPIO制御編その2)あたりが詳しい.
Raspbian だと,libi2c-dev のパッケージを入れれば良いのだけど,Fedora だと,
sudo dnf search i2c
とやっても,i2c-tools しか出てこない….
WireingPiのページを見ても[url=http://wiringpi.com/reference/i2c-library/]I2C Library[/code]として,
gpio load i2c
が書かれているけど,試してみても,raspi-config でi2cモジュールを読み込めとしか出てこない….
うーんうーんと思っていたら,似たようなことをしている人 発見(*゚Д゚).
Raspberry Pi/Fedora/RTC導入(DS1307)
こちらを参考に,/boot/config.txt に dfparam=i2c_arm=on を追加したところ,/dev/i2c-1 が無事現れました.
[pi@pi-01] $ sudo i2cdetect -y 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --
で,amazonで買った安物ジャイロSODIAL(R) GY-521 MPU-60503軸ジャイロ+3軸加速度センサを接続.
配線は,Raspberry Pi 3 Model Bの GPIOに I2C通信方式のジャイロ+加速度の6軸センサー MPU-6050を接続する方法がわかりやすいですが,
私はLab 4.2: Raspberry Pi – working with GPIOと基板の文字を参考に接続しました.
再度i2cdetect を実行
[pi@pi-01 ~]$ sudo i2cdetect 1 WARNING! This program can confuse your I2C bus, cause data loss and worse! I will probe file /dev/i2c-1. I will probe address range 0x03-0x77. Continue? [Y/n] y 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --
0x68に,現れました.
そして,Cのソースは,GY-521 on Raspberry Pi in C++にいいのがあります.
ただ,私の手元でコンパイルしたところ,以下の修正が必要でした.
- fd == -1 のretrun の引数がないのでエラー.return -1; へ修正.
- float を%d で表示しているので,変….signed char x, y, z; へ修正.
- 加速度を表示しているっぽいので,「加速度を得るには」の部分へと変えたら,向きの値っぽいのになりました.X, Y, Zの0x43-0x47 => 0x3B-0x3Fへ変更.
とりあえず,8bit で情報収集可能になりました.
コメントを残す