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向けしかない。
また、既存のライブラリを移植しようにも、UI FLOWで簡単に使えるI2Cと微妙に読み書き関数の仕様が異なるので、そこの読み解きが難しい。
そして、UI FLOWで使われているi2c_bus.easyI2Cもまたリファレンスや作例がないので模索しながら構築した。
3日以上格闘した結果何とか動くものができたので公開しました。
0 件のコメント:
コメントを投稿