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 で情報収集可能になりました.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*