紅熊の日記

マイコン制御の実験など

M5STACK GRAYの地磁気センサーでHSI風の表示

地磁気センサーを使って方位磁針のプログラムはM5STACK Gray用も世に出回っているので航空計器でいうところのHSI風な表示を試しました。
内蔵されている地磁気センサーはBMM150でした。

f:id:x8MkvW:20210102185519j:plain

表示画面

キャリブレーションを適切に行わないとオフセットがずれているのであさっての方向が指示されます。

USBケーブルの抜き差しだけですぐセンサの値が狂うみたいです。USBケーブル差したままでキャリブレーションしたときは抜かずに表示させたほうが良いようです。

方向は±5°くらいばらつくのでX,Y軸それぞれ移動平均をかけました。

グラフィックはlovyanGFXを使用し、ちらつき防止のためにスプライト機能を使用しています。M5DisplayクラスのM5.Lcdを使うより格段に速いです。

らびやん (@lovyan03) | Twitter


地磁気センサのX-Y軸のみでHeadingを計算しているのでpitch方向やroll方向に傾けるとHeadingが狂います。今後は6軸IMU結果からTilt補正かける方法および、MPU6886とBMM150のXYZ軸の関係を調べている途中で中断したままにしている9軸のIMU実装を再挑戦検討しています。

そのための下準備としてBMM150の各軸のスケール補正をキャリブレーションに入れ込むのとMPU6886のXYZ軸の位置関係とジャイロのサンプリング間隔がらみで長いことはまってました。

文字盤の数字も回転させたかったのですが、実際のデジタル計器は回転していない製品もあるので良しとした。最新のlovyanGFXでは文字盤の回転のサンプルがあるので実装検討しています。見たまま編集ではプログラムコード貼り付けられない。無理にテキスト貼り付けると文字化けするようで、はてな記法やマークダウンに後から変更できなかったので、今後は記法を変えてコードを入れるか(サイドバーにある)Gist開設後にリンクを張り付ける予定です。

 M5Stack ESP32 Mpu6886+BMM150 9Axiesモーションセンサーコア開発キットArduino用の拡張可能なIoT開発ボード