STEMMAで広がるArduinoの世界㉓Step1 9軸加速度センサBNO-055
加速度センサ単体では、衝撃などを受けたときに加速度を検知できますが、進行(x軸)方向が北を向いていたか、回転しているかどうかなど知ることができません。
BNO-055はボッシュの製品で、加速度センサに3軸磁力計、3軸ジャイロスコープが組み合わされています。3軸+3軸+3軸で9軸です。
磁界センシングを使ってキャリブレーションを行えば、北に向かっているかを知ることができます。
回転速度がわかれば、センサ自体が水平に進んでいるかどうかがわかります。
加速度がわかれば、一定速度で動いているかどうかがわかります。
これら三つのセンサのデータから、例えば飛行機であれば、進む方向、飛行機の傾きなどを表せるオイラー角やクォータニオンが算出できます。
- 3軸の加速度(重力 + 直線運動):加速度ベクトル
- 3軸の回転速度:角速度ベクトル
- 3軸の磁界センシング:磁界強度ベクトル
- 温度
生データ以外に、
- 絶対方位(オイラー角)
- 絶対方向(クォータニオン)
なども出力できます。
●Adafruitのブレークアウト・ボード
IC自体が3.3V電源で使うデバイスのため、5V->3.3VのレギュレータとI2Cの信号レベル変換回路が入っています。Arduino UNOのような5Vで動作するボードでも正しく動作します。SDA/SCL信号のプルアップ抵抗は10kΩが入っています。
STEMMA QT(JST SH 4ピン)コネクタは2か所に装着されていて、どちらにつないでもかまいません。このコネクタを使ってI2Cで制御する場合、特に、ジャンパ線をつなぐなどは不要です。
●9軸加速度センサBNO-055のおもなスペック
- 動作電圧 2.4~3.6V
- 加速度測定範囲 ±2、±4、±8、±16g、14ビット
- ジャイロスコープ ±125°から±2000°/sec 切り替え可能な範囲、16ビット
- 地磁気(磁気) ±1300µT(x、y軸)、±2500µT(z軸)、分解能0.3µT、13/13/15ビット
- インターフェース I2C、UART
- I2Cアドレス デフォルト0x28、裏面ジャンパで0x29
●環境
- Arduino UNO R3
- Arduino IDE 1.8.13
- Windows10 20H2
●接続
電源は5Vを使いました。Arduino UNO R3のI2Cは、専用のSCLとSDA端子がありますが、SCLはA5に、SDAはA4につながっています。どちら側につないでもかまいません。白色のリード線は見えないので、黄色で配線図を描きました。
●スケッチ
利用手順は、Adafruit BNO055 Absolute Orientation Sensor Overviewに書かれています。
ライブラリを導入します。メニューのツールから、「ライブラリを管理」を選び、検索欄にBNO-055を入力します。見つけてきたAdafruit BNO055のインストールをクリックします。
同時にサンプル・スケッチも導入されます。
メニューのファイルからサンプルの入っているスケッチ例を選択します。Adafruit BNO055から、read_all_dataを選択します。
実行中の様子です。
Absolute Orientation (Euler Vector, 100Hz) オイラー角
360°球に基づく3軸方位データ
Absolute Orientation (Quaterion, 100Hz) クォータニオン
正確なデータ操作のために4点のクォータニオンを出力
Angular Velocity Vector (100Hz) 角速度ベクトル
3軸の回転速度(rad/s)
Acceleration Vector (gravity + linear motion) (100Hz) 加速度ベクトル
3軸の加速度(重力 + 直線運動)(m/s2)
Magnetic Field Strength Vector (20Hz) 磁界強度ベクトル
3軸磁界センシング(uT)
Linear Acceleration Vector (acceleration minus gravity) (100Hz) 線形加速度ベクトル
3軸の線形加速度データ(加速度 - 重力)(m/s2)
Gravity Vector (minus any movement) (100Hz) 重力ベクトル
3軸の重力加速度(m/s2)
●サンプル・スケッチposition
●サンプル・スケッチrawdata
●サンプル・スケッチbunny
roll、pitch、heading用Orientation (方向);x、y、z
センサに送るcalibrationデータ;sys、gyroscope 、accelerometer、magnetometer
8の字にゆっくり回して、3 3 x 3になったらキャリブレーションが完了のようです。xは加速度の値なので、キャリブレーションには関係ありません。
●サンプル・スケッチwebserial_3d
クォータニオン(四次元ベクトル)の値が出力されています。
角度 回転軸のx 回転軸のy 回転軸のz
(※)9軸のセンサは、LSM9DS1やFXOS8700 + FXAS21002の組み合わせのNXP9-DOF(現時点でSTEMMA QTではない)があります。