Sparkfunから出ている9軸モーションセンサを試してみたので備忘録を記しておきます.このセンサはわずか1x3.5cm ほどの基盤に3軸ジャイロ,3軸加速度センサ,3軸地磁気センサを搭載していて,価格も$100程度とお手頃なボードです.接続も,I2Cインタフェースなので電源2本,信号2本のわずか4本です.
mbedでのテスト環境は右図のように超簡単です.mbedのVOUT(3.3v regulated), GND, p9(SDA)とp10(SCL)に直結するだけ.普通I2Cはオープンコレクタなのでプルアップ抵抗が必要ですが,このセンサは内部で3.3Vにプルアップされているので必要ありません.
mbedのCookbookセクションにサンプルコードがあるので,これを若干の手直しするだけですぐ試せます.
- 3軸加速度センサ ADXL345
サンプルからADXL345_I2C.h, ADXL345_I2C.cpp, main.cpp を持ってくる.main.cpp で ADXL345_I2C accelerometer(p9, p10); のピン番号とシリアル通信の速度 pc.baud(115200); の部分を確認するだけ. - ジャイロ ITG-3200
サンプルからITG3200.h, ITG3200.cpp, main.cpp を持ってくる.ITG3200.h でI2Cのアドレスを0x68に修正.
#define ITG3200_I2C_ADDRESS 0x68 //7-bit address.
main.cpp で ITG3200 gyro(p9, p10); のピン番号とシリアル通信の速度 pc.baud(115200); の部分を確認するだけ. - 地磁気センサ HMC-5883L
サンプルからHMC5843.h, HMC5843.cpp, main.cpp を持ってくる.これは旧機種のHMC5843用のものなのでデータシートに従って微修正.まずHMC5843.h でY軸とZ軸のレジスタ番号を入れ替える.
/* exchange Y<->Z */ #define HMC5843_Z_MSB 0x05 #define HMC5843_Z_LSB 0x06 #define HMC5843_Y_MSB 0x07 #define HMC5843_Y_LSB 0x08
あとは同様にmain.cpp で HMC5843 compass(p9, p10); のピン番号とシリアル通信の速度 pc.baud(115200); の部分を確認するだけ.
Thanks to: 北卓人君