7/20/2012

9DOF Sensor Stickをmbedでテスト



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); の部分を確認するだけ.
 Arduinoのシリアルモニタで手軽に確認.問題なし.
Thanks to: 北卓人君