質問:
i2cモードでのArduinoDueとBNO055アドレス
BunkSB
2015-07-31 18:34:00 UTC
view on stackexchange narkive permalink

複数のIMU、BNO055シャトルボードが必要なプロジェクトがあります(プロジェクトについてはここで説明しました)。アドレスを持つ1つのBNO055センサーからオイラー角を取得できます。 0x29、I2C_MODE_ADR_SELをHIGHレベルにリンクしたため。

アドレス0x28の別のセンサーが欲しいのですが。データシートに記載されているように、I2C_MODE_ADR_SELをLOWレベル(GND)にリンクする必要があります。ArduinoPlaygroundのi2cスキャナーはi2cデバイスを認識しません。

センサーを変更する方法がわかりません。アドレス、誰かがこの問題で私を助けることができますか?

三 答え:
alvaroferran
2016-02-27 15:49:36 UTC
view on stackexchange narkive permalink

BNO055をベースにしたモーションキャプチャスーツであるMotioSuitを作成しました。現在、センサーは9つありますが、最大18個になる可能性があります。

https://hackaday.io/project/9266- motiosuit

センサーボードとライブラリはオープンソースであり、リンクに記載されています。お役に立てば幸いです。

TIのhttp://www.ti.com/product/PCA9548Aチップとhttps://github.com/bqlabs/I2C-multiplexerコードを使用した多重化を使用していると言うかもしれません。
すみません、見たばかりです。確かに、それはすべてリンクされたテキストで説明されています。明確にするために、それは私が実際にそのプロジェクトのために書いたhttps://github.com/alvaroferran/I2C-multiplexerからのフォークです:)
おっと。あなたがインターフェースコードの作者であることを見逃しました。私はBN055コードを探していましたが、ハッカデイプロジェクトに気を取られ、グーグルにスキップしてBN055コードを見つけました。リンクをありがとう。
心配ありません、それが役に立ったことをうれしく思います:)
James Waldby - jwpat7
2015-07-31 20:25:34 UTC
view on stackexchange narkive permalink

adafruit.comの BNO055データシートの90ページの表4-7によると、BNO055は3つのI2Cアドレスをサポートします。スレーブモードでは0x28または0x29(COM3がローまたはハイで選択されます。それぞれ)、またはHID-I2C構成では0x40。

ファイル BNO055_Shuttleboard_Flyer.pdf(BoschによるBNO055シャトルボードの説明)の2ページの図によると、COM3 BNO055(またはPSERCOM3)のピン17は、0ΩジャンパーR106を介してJ102の中央のピンに配線されています。

5つの異なるBNO055からデータを取得する場合は、マルチプレクサ(または1つのBNO055ボードのCOM3を他の4つのボードとは異なるレベルに設定し、アクセスする5つのボードの1つを選択するためのいくつかのI / O)。たとえば、7438(MM74HC138またはDM74LS138など)を使用できます。 7438のアドレス入力を j に設定すると、ラインYⱼ(Y₀からY₇の間)はローになり、他のYᵢはハイのままになります。その場合、COM3がYⱼに接続されたBNO055は、I2Cアドレス0x28に応答する唯一のBNO055になります。

テストでは、複数のBNO055をセットアップし、複数の個別のI / Oラインを使用して複数のCOM3入力を制御できます。個別のI / Oラインを使用すると、5つのCOM3に対して5つのI / Oラインが必要になりますが、7438マルチプレクサを使用すると3つのI / Oラインが必要になります。 2つのラインを節約することは、マルチプレクサを入手して使用するという余分な努力の価値がないかもしれません。

別のアプローチは、追加のBNO055用に別々のI2Cバスをサポートするためにさらに2つのArduino(Pro MiniまたはMicroなど)ユニットを使用することです。これらの補助Arduinoは、(シリアルまたはI2Cを介して)プリンシパルArduinoにデータを送信する前に、ある程度のデータ削減を行うことができます。

注:1つまたは2つ以上のBNO055を使用することが理にかなっていることは私にはわかりません。 BNO055の集合体が多かれ少なかれユニットとして空間を移動するが、BNO055間で姿勢、ロールレートなどが異なる場合、異なるBNO055からのデータの3/4程度は同じになります。代わりに、I2Cアドレスが異なる一般的でないセンサー(磁力計なしなど)を使用することもできます。

このプロジェクトは、上肢の動きを監視することを目的としています。今のところ、1つの腕だけを監視したいので、必要なセンサーは3つ(腕に1つ、前腕に1つ、胸に1つ)なので、マルチプレクサは必要ありません。私の問題は、アドレスを選択するピンにローレベルを設定すると、センサーが機能しないことです。低レベルを送信するGNDまたはArduinoのデジタルピンに配線してみましたが、i2cスキャナーがセンサーを検出しないたびに。
ピン6PS0とピン5PS1がローであり、ピン17 COM3がグランドに接続または切断するとローまたはハイになることを(メーターまたはスコープで)再確認します。また、アドレス0x28で読み取りを試みます。 I2Cスキャナーはそのアドレスを認識しません。どのI2Cスキャナープログラムを使用していますか?
私はこれを使用しますhttp://playground.arduino.cc/Main/I2cScanner
スコープで確認したところ、PS0とPS1はロー(それぞれ0V)で、COM3はソースに接続すると3.3V、グランドに接続すると0Vになります。プルアップ抵抗を使うべきかもしれないと読んだのですが、私の場合は役に立ちますか?
プルアップは必要ありません。 p。を参照してください。 BST_BNO055_DS000_12.pdfの89、表4.6は、COM3に内部プルアップがあることを示しています。 40K。表4.4の後に、「プロトコル選択ピンをフローティング状態に保つことは許可されていません」と記載されていることに注意してください。つまり、PSピンはハイまたはローに接続する必要があります。 1つのBNO055のみを接続してアドレス0x28を使用してみましたか?
はい、BNO055を1つだけ使用してみました。毎回PSピンをGNDに接続しました。 2つのBNO055を同時に使用することができました。1つは2番目のI2C入力(SDA1、SCL1)と1,5kOhmsのプルアップ抵抗(アドレス0x29)で、もう1つは通常のI2C(PIN 20と21)で使用しました。 。繰り返しますが、アドレス0x29でのみ機能します。
Craig.Feied
2017-05-15 00:31:34 UTC
view on stackexchange narkive permalink

これは古い質問ですが、まだこの問題の解決策を探している人がいるかもしれません。 BNO055シャトルボードのドキュメントはかなり薄いです。以下に回路図を少し追加しました。

BNO055Com3(ピン17)は、シャトルボードのピン22(12C_MODE_ADR_SEL)にあります。このピンは、抵抗を介してシャトルボードピン4(SD0、GND)またはシャトルボードピン5(SD1)のいずれかに接続する必要があります。データシートには、これを実現する2ポジションジャンパーJ102が記載されていますが、このジャンパーまたはそれを取り付ける場所が含まれていないバージョンのシャトルボードがあります。 OPのセットアップの写真(リンクがなくなる場合に備えて下部に貼り付けられています)では、ジャンパーヘッダーがピン3(GND)に隣接する3つの穴に取り付けられ、中央のピンを左側または右側のピンにジャンプします。アドレスを0x028または0x029に設定します。

ジャンパーがない場合は、ピンを直接接続します。10K抵抗を介してピン17をピン4に接続すると、Arduinoの「サンプル」スキャナーが接続します。 I2Cアドレス0x28でそれを参照してください。

個人的には、シャトルよりもはるかに優れたAdafruit BNO055ボードが好きです。電圧レギュレーターやその他の多くの追加機能があり、デフォルトのI2Cアドレスとして0x028を使用します。 。

Arduinoコード環境で作業していて、3つ以上のBNO055デバイスを組み込みたい、マルチプレクサを使用したくない場合は、32ビットARM cortexCPUのTeensyファミリを検討することをお勧めします。ボード。これらはArduinoと完全にコード互換ですが、複数のI2Cバスを提供します。実際、Teensy 3.6(180 MHz !!、1Mフラッシュ、256Kラム、4K eeprom、FPU)は、異なるポートに4つ*の個別のI2Cワイヤーインターフェイスを提供し、8つのBNO055デバイスを使用できるようにします。

複数のBNO055デバイスで使用した場合、Teensyボードのパフォーマンスと機能に個人的に非常に満足しています。

BNO055 Shuttle Board Pinout The OP's Shuttle Board



このQ&Aは英語から自動的に翻訳されました。オリジナルのコンテンツはstackexchangeで入手できます。これは、配布されているcc by-sa 3.0ライセンスに感謝します。
Loading...