HATという拡張モジュールを手に入れた、という話の続きだ。HATを使って、ジャイロセンサー+加速度センサー+地磁気センサーの9DoFを試してみる。IDEで前回試してみたENV-HAT用のENVというexampleのスケッチに手を入れて作ってみた。ジャイロセンサー+加速度センサー+地磁気センサーの9つの値の計測を行い、計測値を液晶に表示し、UARTに計測値の9つの値を出力している。次のようなコードを作成した。(bmm150.cpp、bmm150.h、bmm150_defs.hがビルドには必要なので注意。Serial.println("");}実行すると、このような液晶画面の表示となる。地磁気センサーのX,Y,Z軸の計測値が表示される。あと、測定周期がdtとしてミリ秒単位で表示されている。今回の場合9ミリ秒が測定周期となっている。地磁気センサーのキャリブレーションのソフトを自前で作り直している。本当はもっとちゃんとしたキャリブレーションソフトも作れるのだが、とりあえず元のENVのexampleスケッチと同様な簡易版を書いた。(磁気センサーのキャリブレーションは、感度まで合わせようとするとちょっと計算が大変で、昔そういうのを開発する仕事をしてた。)とりあえず今回実装したのは、暫く測定して最大最小の中間を原点オフセットにするという簡易なキャリブレーション方法のものだ。使い方としては、(1)HOMEボタン(M5のロゴのボタン)を1度押すと、画面に「CAL」と表示される。キャリブレーション(Calibration)中であるという表示だ。HATを、水平に±180度回すようにYaw方向に動かし、次に、Roll方向にも±180度回すように動かし、Pitch方向にも±180度回すように動かす。(3)動かし終わったら、HOMEボタン(M5のロゴのボタン)を1度押すと、キャリブレーションを終了し、動かしていた間の磁気センサーX,Y,Z軸それぞれの計測値の最大値と最小値の中間を原点のオフセット値として採用する。画面のCAL表示は消える。いう使い方となっている。計測値はUARTに出力される。IDEのシリアルコンソールで115200bpsで表示させると、確認できる。PCでTeraTermなどを使って受信させることも可能だ。—9DoFのMadgwickフィルターというのを使って、M5StickCの姿勢(Roll,Pitch,Yaw)を計算させるというのをこれから試してみる。SPPで無線UARTに出力するのも試してみる予定だ。腕時計タイプのバンドを使って腕に取り付けて、モーションキャプチャー的に使ってみようと考えている。1個だけだと本物のモーションキャプチャーみたいな使い方はできないけど、かといって複数を同時にPCにつなぐソフトを作ろうとすると面倒そうだ。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。56kakoのblogです。携帯型コンピュータ、ゲーム機関係、電子工作やソフト作り、改造等のWebサイト「kako.com」をやってます。最近は旅行ネタとかも。