見出し画像

BNO055とArduino UNO R4 MINIMAでI2C通信

秋月電子で購入したBOSCH社製9軸センサ「BNO055」を実装したセンサーフュージョンモジュール「AE-BNO055-BO」を使用し、「Arduino UNO R4 MINIMA」とI2C通信を行いました。が、動作確認できるまでに少々苦労したので備忘録としてまとめました。


1.動作環境

下記が動作確認に使用したモジュール等です。

  • AE-BNO055-BO

  • Arduino UNO R4 MINIMA

  • Arduino IDE 2.3.2

  • Adafruit BNO055 Library

2.回路構成

下記が回路構成です。Arduino UNO R4 MINIMAの場合はSDL→A5、SDA→A4に変更しても可能なはずです。I2Cアドレスは購入時の「0x28」のままです。

Fig,1 動作確認用回路構成
Fig,2 実物写真(画像左下がBNO055)

3.動作確認結果

まずはI2C通信によるデータ取得に成功した際のデータモニタリングと波形の様子が下記となります。

Fig.3 シリアルデータモニタ
Fig.4 取得波形(ADALM2000/scopy)

SDA信号とSDL信号の波形がなまることなく正常にシリアル通信できております。
ここまで至るのに苦労した点はプルアップ抵抗の有無とその値の決め方になります。BNO055モジュール購入時に付録されている取扱説明書では外部プルアップ抵抗の取り付けを指示していなく、かつネット上ではArduino側に内部プルアップ機能があるとされておりますが、基本的に外部プルアップ抵抗は必要です。
今回の私の回路ではSCLに10kΩSCAに330Ωのプルアップ抵抗を取り付けることでI2C通信が安定しました。I2Cの通信規格の吸込み電流3mAを考慮すると1kΩ程度が妥当だと考えているのですが、配線容量が大きくなってしまっているせいのか1kΩでは全くドライブできませんでした(SCA:1kΩ、10kΩ / SCL:1kΩ、330Ωは安定せず通信不良となりました)。特にLowレベルが上昇しているわけではないのでこの抵抗値が妥当なのだろうと思います。

以上