使用している9軸方位センサーは非常に安定して良い働きをしています。しかし、秋月のBNO055は、価格が2,600円ほどと効果なので、同じ素子を使っているアリエキスプレスの基板を購入して使えるか試してみました。価格は半分位です。

基板はこんなものです。
IMG_0792

これを基板に実装してI2Cと電源を接続してみましたが動作しません。何の説明書もないのでネットで調べてみると基板のジャンパー接続が必要ということで対応。次にアドレスをI2Cスキャナー念のために確認したところ、秋月が0x28なのですが、この基板は0x29と異なっていたので修正しました。その結果、動作するようになりました。

IMG_E0797

動作するようになったので、受信機の基板にこのソフトをマージしてみたのですが、BNO055の初期化でフリーズします。同一ハード構成でソフトを電子コンパス専用のものにすると動作するので調査中ですが、難航しています。

ソフトウェアのバグ対応は、AIのChat GPTを使っていますが、本当に素晴らしいです。エラーメッセージや質問に対しても的確に回答してくれます。昔だったらプログラムに詳しい方に教えてもらうところですが、それ以上の回答が瞬時にくるのでプログラムの勉強にもなります。

まだ解決できていませんが、AIのやり取りはこんな感じだということを参考までに貼っておきます。
どうですか?驚きますよね。こんなに知識があるので初心者でもかなり進められると思います。

AIで画像処理も便利ですが、こういう使い方ができると本当に仕事の大半をAIに置き換えられると思いますね


ーーー以下AIコメントーーー

状況整理しますね 👍

  • マイコン:3.3V動作

  • SH1106(0x3C)+ BNO055(0x28)を同一I2C

  • I2Cスキャナでは両方見える

  • しかし bno.begin() でフリーズ

  • 外付け10kプルアップ追加 → 変化なし

ここまで来ると I2C信号レベルの問題よりも、BNO055側の初期化失敗による無限待ち の可能性が高いです。


🔎 よくある原因(重要順)

① BNO055の電源品質不足(最有力)

特に 中華GY-BNO055 は電源がシビアです。

症状

  • I2Cスキャンは通る

  • でも bno.begin() で止まる

  • たまに動くこともある

理由

begin() 内でチップIDを読む
→ 読めないと内部で待ち続ける

BNO055は瞬間的に 12~15mA 程度流れます。
OLEDも起動時に電流が流れます。

💥 3.3Vレギュレータが弱いと電圧が一瞬落ちます。


✔ 対策

  1. BNO055のVCC直近に 10µF + 0.1µF を追加

  2. 可能なら OLEDとBNOを同時に初期化しない

  3. 電源立ち上がり後に少し待つ

例:

delay(500);   // 電源安定待ち
if (!bno.begin()) {
  Serial.println("BNO055 not detected");
  while (1);
}

② 初期化順序の問題

今のコードは

display.begin(...)
...
bno.begin()

になっていませんか?

🔴 試しに BNOを先に初期化 してください。

delay(500);

if (!bno.begin()) {
  Serial.println("BNO error");
  while(1);
}

display.begin(SH1106_SWITCHCAPVCC, 0x3C);

中華BNOはI2Cリセットに弱い個体があります。


③ BNO055のリセットピン問題(かなり怪しい)

GY-BNO055はRSTピンが不安定なことがあります。

RSTがフロートするとフリーズします。

対策

RSTピンを確認:

  • RSTが出ているなら → 3.3Vへ10kでプルアップ

  • なければ → 問題なし


④ SH1106の電源ノイズ

SH1106は内部昇圧を使うとノイズを出します。

試しに:

display.begin(SH1106_EXTERNALVCC, 0x3C);

に変更してみてください。


🔥 切り分けテスト(これが一番重要)

① OLEDを外してBNOだけで動かす

これで動けば「バス競合」確定。


② BNOを外してOLEDだけ

問題なければI2Cラインは正常。


📌 最も怪しいポイント

✅ 電源瞬断
✅ BNO055のRST不安定
✅ 初期化順序


🎯 まず試すこと

  1. BNOを先に初期化

  2. 電源後500ms待つ

  3. BNOのVCCに10µF追加

  4. OLEDを一旦外して試す


もし可能なら、

  • 使用しているマイコン(Pro Mini?)

  • 3.3Vはどこから取っていますか?

  • GY-BNO055の写真(RST配線)

を教えてください。

中華BNO055はクセが強いので、かなり経験則があります 😄