2019年9月15日日曜日

STM32とGY-BNO055でi2c通信

一年ぶりの更新です(笑)
いくつか記事にできそうな物はあったのですがどうも億劫になってしまって...(;´∀`)

さて本題に入りましょう!
今日はお初のSTM32を用いたBNO055とのi2c通信です。(タイトル通り

ざっくり当方の環境は

  • Windows 10 (ver 1903 build 18362.356)
  • STM32CubeMX (ver 5.3.0)
  • Atollic TrueSTUDIO® for STM32, Built on Eclipse Neon.1a.(ver 9.3.0 build id 20190212-0734)

といった感じです。
使用マイコンはSTM32F303K8でございます。
使用センサモジュールはAliexpressで購入したGY-BNO055でございます。

今回の最重要ポイントは実はGY-BNO055にありまして...(おい
右側のセンサが購入時の状態、左側が加工を施した状態
このセンサモジュールには何も書いてないですが、意味ありげなパターンが2箇所ございまして、どうやら購入する物によっては最初から2つともショートさせてあったりなかったりするらしいです。
結論から言うと、
i2cでコネクションする人はどちらもショートさせてください!
そうしないとi2cのアドレスを探索させても何も表示されません。

詳細はこちらをみてください。
UARTを用いる場合はメインICに近い方のパターンをショートさせなければ良いようです。

センサモジュールの下ごしらえさえできてしまえばもう何も怖くありません(フラグじゃないヨ

あとはフツーにモジュールに電源とGNDとSCLとSDAをつないでやれば配線はおk

配線図(概念
ここでもう一つ注意するならばセンサモジュールにSDA/TxのとなりにADDっていうピンがあると思います。
それをGNDにショートしてやると、モジュールのアドレスが変わるようです。
当方の環境ではショートさせたら0x28、そうでないときは0x29となりました。

マイコンのプログラムは下記参照(同じマイコンならそのまま動くはず
https://github.com/yukimakura/stm32F303K8_bno055_quat_reader_i2c


こんなかんじでひたすらクォータニオンを吐き続けてくれるはず...




このセンサモジュールはMPU6050とかMPU9250よりは値段は少々張ります。
ですが、センサとしての性能と利便性がずば抜けているので私はこのセンサいっぱいしゅきです(笑)
実際に触ってみるとわかりますが、パラメータの調整なしでドリフトが起きない姿勢情報を吐いてくれます。
こりゃ感動もんですなぁ...

あとはじめてmbed環境じゃないstm32の使い方をしましたが、以外となんとかなりました(笑)
TrueStudio使えば環境構築もあっという間に出来て好印象でしたね~
stm32いろんなバリエーションがあって、かつ高コスパなのでいいと思いますよ👍