質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Q&A

解決済

3回答

2000閲覧

BNO055をArduino DUEで使用する方法

zyu-mossan

総合スコア15

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

0グッド

0クリップ

投稿2022/05/25 08:29

はじめまして。

現在、BNO055とArduinoを使用し角度や角速度を取得したいと考えています。
Arduino DUOでは、下記リンクのサンプルプログラム(read all data)を動作させる事ができたのですが
Arduino DUEでは、最初のセンサの確認で躓き動作させることができません。
https://github.com/adafruit/Adafruit_BNO055

他のセンサを搭載する関係で、DUEを使わざるを得ない状況であり
どのようにすれば起動させる事ができるのか、またなぜこのような事象が発生しているのかご教示頂きたいです。

私自身で下記内容を確認しています。
・結線に関しては電源/SDA(20)/SCL(21)に間違いなくつながっていることは確認済みです。
・センサはDUO/DUEで同じものを使用しているので、センサの故障という事はありません。

他、確認が必要な内容があれば対応いたします。

以上です。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

thkana

2022/05/25 11:36

寡聞にして"Arduino DUO"という機種は知りませんが、それはともかく。 > 最初のセンサの確認で躓き動作させることができません。 「できません」ではなく、では何が起こるのか、目の前の現象を解説していただくとなにか言えるかも知れません。
zyu-mossan

2022/05/25 12:03

追記させていただきます。 今回使用しているコードは下記です。 https://github.com/adafruit/Adafruit_BNO055/blob/master/examples/read_all_data/read_all_data.ino その中でも該当箇所は下記です。 if (!bno.begin()) { /* There was a problem detecting the BNO055 ... check your connections */ Serial.print("Ooops, no BNO055 detected ... Check your wiring or I2C ADDR!"); while (1); } センサの接続を確認する箇所で、接続ができていない場合コメントが出るようになっています。 同じコードと同等と思われる結線を行なった場合でも、DUOではセンサの接続が認められ次に進めますが、DUEではコメントが出るため次に進めないといった状況です。
thkana

2022/05/26 22:27

ここは「質問への追記・修正の依頼」の欄です。 追記・修正自体は質問の編集で質問に対して行ってください。
guest

回答3

0

自己解決

thkana様 y_waiwai様

ご回答ありがとうございました。
色々試した結果、無事解決することができました。

問題は動作電圧にありました。
オシロでy_waiwai様のご指摘の通り波形を確認したところDUEに接続した際のみ波形の出方がおかしい事がわかりました。
※波形が乱れている/出力が正常に動いているDUOに比べて大きい
DUOもDUEも搭載されている5V出力に接続していたのですが、
DUEの5V出力に接続した場合のみ、波形が乱れるという事が確認できました。

使用しているセンサは3.3Vでも駆動可能だったため、3.3Vの出力に接続した所
問題なく動作するようになりました。
なぜDUEの5V出力でのみ波形が乱れたのかは不明のままですが
DUEで動作しないということに関しては解決することができました。

投稿2022/05/27 01:13

zyu-mossan

総合スコア15

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2022/05/27 01:28

なぜ5Vでダメなのかってのはきっちり原因追求するべき、だとは思いますが。。 #なぜ3.3だと動くのかわからない、ってはなしですね
thkana

2022/05/27 04:04

「波形が乱れる」は波形見ないとなんともいえませんが、そもそもDUEは3.3VIN/OUTなので5Vを供給していた時点で間違いなのでは。(5Vトレラントなのか、とかは調べていませんが、過電圧防止のダイオードの効果で波形が乱れるとかはありうるかも...)
zyu-mossan

2022/05/27 04:38

おっしゃる通りなぜ5Vで動作しなかったか?は調査するべきだと思いますが 私自身、回路/プログラミングとは全く違う分野の専攻であり知識が乏しい事、時間がない事からここでクローズとさせていただきたいと思います。 thkana様の仰る通り、DUEはINが3.3Vであるため3.3Vで動作可能なセンサは3.3VをINにするのが良いのかもしれません。
nac_tnk

2022/05/27 18:01

DUEのI/Oピンに5Vを入れたら駄目なのは、DUEを使用する上で常識的な事です。 太字で注意書きしていますよ。 https://store.arduino.cc/products/arduino-due また、DUEの20,21は内部で3.3Vで吊っている(つまりI2Cバス電圧は3.3V)のは知っているらしいのに、なぜもう一方で5Vのバスを作ろうとするのか? そのあたりの事は、「調査する」とか「良いのかも」というレベルの事ではなく、使用する上での常識的な知識ですよ。
thkana

2022/05/29 11:25

> 3.3VをINにするのが良い のではありません。5Vを印加しては**ダメ、絶対**、です(まぁ、即壊れるということでもないですが)。 「自分が間違った」ということ認めたくないのですか?
guest

0

オシロスコープを持ってきて、SCL、SDAの波形を確認しましょう。
きちんとデータの入出力がなされてるのかをチェックしましょう。

投稿2022/05/25 12:51

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

とりあえず、

・結線に関しては電源/SDA(20)/SCL(21)に間違いなくつながっていることは確認済みです。

I2Cなのにプルアップ抵抗という言葉が出てきていないのが気になりますがいかがでしょうか。


確かに、回路図を見ると10KΩで釣られていますね。
じゃあちょっと踏み込んで、
Adafruit_BNO055::begin()は成功/失敗しか返しませんが、途中でいくつか調べて条件が満たされないとfalseを返すようです。
falseを返す各所にSerial.print(__LINE__);(アンダースコア2個がMDの強調に解釈されちゃうのでいわゆる全角で入れたけど、よくある行番号マクロ。実行場所が特定できるなら他のメッセージでもなんでもいいですが)かなにかを入れて、実際にどこで引っかかっているのかを確かめて次の手をどう打つかの情報を得てはいかがでしょう。

投稿2022/05/25 11:39

編集2022/05/26 22:32
thkana

総合スコア7639

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

zyu-mossan

2022/05/25 12:06

DUEの該当ポートにはプルアップ抵抗が組み込まれています。 他のセンサに関しては該当ポートで問題なく動いているため、原因ではないと考えています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問