2024年2月24日土曜日

m5シリーズのUI FLOW, micropythonでLSM9DS1を使う

m5のUI FLOWやmicropythonでLSM9DS1を使えるlibrayを作成。
手っ取り早く使いたい方は、githubに説明とコードをupしたので以下を見てください。

秋月のLSM9DS1使用9軸センサモジュール AE-LSM9DS1-I2Cを買ってきて、m5stickCやm5atom matrix, liteで使おうとしたらひとしきりハマりました。

LSM9DS1は、1つのチップにそれぞれ3次元の加速度センサ、ジャイロセンサ、地磁気センサが詰まっていて、9軸自由度=9DoFセンサと呼ばれるもの。
今回はこのうち地磁気センサ、つまり電子コンパスを使う予定。
そもそも6軸imuなら多くのm5デバイスやスマートウォッチにも入っていて、作例も豊富だけど、意外と地磁気センサを使う作例は少ない気がする。

(画像は秋月電子より借用)



LSM9DS1は秋月やスイッチサイエンスでも手に入り、値段もたぶん一番安い。
しかしながら真面目に使おうとすると、分解能を設定し、各センサ値を2byte リトルエンディアンで読み取らないといけず、ちゃんとドキュメントを読まないと手も足も出ない。
自ずから既存のライブラリに頼りたくなるのだが、そのライブラリがArduino C++やcircuitpython向けしかない。

micropython、m5用は全く無い
タコ猫が出てしまう

また、既存のライブラリを移植しようにも、UI FLOWで簡単に使えるI2Cと微妙に読み書き関数の仕様が異なるので、そこの読み解きが難しい。
そして、UI FLOWで使われているi2c_bus.easyI2Cもまたリファレンスや作例がないので模索しながら構築した。

3日以上格闘した結果何とか動くものができたので公開しました。

0 件のコメント:

コメントを投稿