師匠に触発されて、9軸センサー購入しました。
動き系のセンサーは、どんなものか調べてみるのと、動力系と合わせて倒立振子をつくってみようと思ってます。 どんなものかは、YouTubeにたくさん出てます。
センサー情報を元にモーターを制御するのはいろいろと難しい感じですが、結構サンプルもあるのでなんとかなりそうな感じです。目に見えて動くものはわかりやすいのでお勉強にはよろしいかと。
購入したのはBOSCH社BMX055です。めちゃくちゃ小さいです。3つ並んだ真ん中のチップに3つのセンサーが入ってます。他は電源レギュレータと信号線のレベル変換器です。
I2Cのアドレスや駆動電圧により、ジャンパーが必要です。 JP1,JP2,JP3はすべてオープンのため、I2Cアドレスは以下のとおりです。
JP6オープン、J7ショート、J8オープンとして、電源は3.3V信号レベルを3.3Vに設定しました。J7は基盤の裏面を半田でジャンパーします。写真わかりにくいですがAEの右上を半田でジャンパーしてます。
ESP32ボードはこんな感じでいろいろと乗っかってます。
動作確認はMicroPythonで実施します。先人の知恵をGitHubで見つけました。 すんなりいくかと思えばそうはいかずです。 Pybordで動いたコードのようで、ちょっと修正が必要です。 センサーは、I2Cアドレス3つでそれぞれ読み出さないといけないので、加速度、ジャイロ、地磁気センサーそれぞれを1つのデバイスに入れた感じです。 コードもそのようになっていて、センサー毎ライブラリーになってました。
こちらを参考に https://github.com/micropython-IMU/micropython-bmx055
それぞれがライブラリになっていて、importで読み込む必要があります。
今日のところは、加速度とジャイロを読み取れるところまでできました。 uPyCraftの画面キャプチャーです。黄色枠に加速度の3軸(x,y,z)、ジャイロの3軸(x,y,z)計6個の値を0.5秒毎にESP32が読み取って表示しています。
地磁気は次回に。 この値だけではよくわからないので、時間変化とともにわかるように可視化も必要です。センサー動かさなくても値が微妙に変わっているので、感度の調整や値の補正も必要なのかもです。 シリアルにセンサー情報をprintするためのpythonコードです。いろいろといらない部分もありますが。
|
|