複数のi2cインターフェイスデバイスをArduinoの単一ピンA4(SDA)およびA5(SCL)に接続する方法


31

私の小さなプロジェクトにリアルタイムクロックモジュールを追加したいです。既存のi2c 2x16 LCDモジュールに時刻と日付の両方を表示したい。

i2cインターフェースリアルタイムクロックモジュールと2x16 LCDモジュールは、Arduino Unoで同じピンA4(SDA)とA5(SCL)を使用します。ネット上で数時間検索した後、i2cバスは実際に多くのシリアルデバイスを使用できます。これは、各デバイスに固有のアドレスがあるため可能です。

私の質問は、2つのi2cインターフェイスデバイスを物理的に単一のA4およびA5に配線する方法ですか?ありがとう。


2
短い答え:それらを並列に配線します。SDAを接続してA4に接続し、SCLをA5に接続します。その後、もちろん役立つプルアップの問題があります。
–SDsolar

回答:


32

一部の人々は、接続されたものを視覚化するのに苦労しているので、ここに写真があります:

(ヒントをあげる)

回路図

この回路のシミュレーションCircuitLab I2Cを使用して作成された回路はバスであるため、同様の名前の信号が一緒に接続されます。アドレス指定スキームにより、マイクロコントローラは通信先のデバイスを選択できます。Arduinoでは、10kプルアップ抵抗は「VDD」になります。これは5Vまたは3.3Vピンです。


こんにちは、これは非常に基本的なものかもしれませんが、私はエレクトロニクスに慣れていないので、Google検索からこのページに行きました、uCは何を指しますか?
シアストピエカルツ16年

特に明記されていない限り、接続スキームは同じである必要があるため、すべてのuCを参照していると思います。
-KingsInnerSoul

uCはArduinoにすることができます。SDAはピンA4で、SCLはピンA5です。
–SDsolar

8
@ Ciastopiekarz、μCは「マイクロコントローラー」の略です。ギリシャ文字μは、microの略語です。μはuのように見えるため、多くの人が「uC」と書くだけです。
foob​​arbecue

9

I2Cの場合、すべてのスレーブデバイスのデバイスアドレスが異なる場合、すべてのSDAピンを互いに接続し、すべてのSCLピンを互いに接続する必要があります。それはそれと同じくらい簡単です。

当然、I2Cの必要に応じて、両方のラインにプルアップ抵抗も含める必要があります。抵抗値の選択方法はここで以前に議論されました。


デバイスの1つがDS3231 RTCである限り、外部プルアップは不要であることがわかりました。
SDsolar

3
@SDsolarは、おそらくDS3231に内部プルアップがあることを意味するため、そのデバイスを使用することで、バスにプルアップを提供します。バス上のデバイスの数に応じてプルアップ抵抗を調整する自由が制限されるため、必ずしも良いことではありません。
フォトン

私の考えは正確に。外部プルアップの追加は、DS3231にあるものと並行するため、I2Cを満足させるには不十分な場合があります。
–SDsolar

@SDsolar、これはOPの質問または私の答えと何の関係がありますか?これは一般的なディスカッションサイトではありません。何かについて話したいだけなら、チャットルームに参加できます。
フォトン

3

2本のピンA4-sdaをA5-scl(ボードuno-unoの両方)に接続し、対応する各sda-sclラインから5vの抵抗を接続します。

ここに画像の説明を入力してください


答えが元の質問、つまり「物理的に2つのi2cインターフェイスデバイスを単一のA4とA5に配線する」に答えないため、投票しませんでした。
オレグマズロフ

削除できなかったので、(おそらく)より満足のいく答えに編集します
daedalucian

電圧を共有する必要はありませんか?
clankill3r

0

I2Cは、Philipsが開発したデータ転送プロトコルです。通信に2線を使用するため、2線インターフェースとも呼ばれます。SCL-シリアルクロックライン。SDL-Serial Data Line。したがって、EEPROMまたはLCDであるi2cデバイスの対応するピンを、VDDへのプルアップ抵抗を使用して使用しているマイクロコントローラーのSCLおよびSDLピンに接続する必要があります。接続された各デバイスの7ビットアドレスを持つアドレスプロトコルであるため、最大2 ^ 7個の異なるデバイスをアドレス指定できます。ただし、通常、スレーブデバイスのI2Cアドレスは、開発者が配線するいくつかのビットで事前に定義されています。これは、同じバス上の異なるハードワイヤードアドレス部分で同じタイプのデバイスを接続するのに役立ちます。


1
本当ですが、BH1750光強度ユニットのように、複数必要な場合はそれはお粗末です。そのうち4つが必要で、I2Cデュアルバススイッチングを処理したくありません。また、DS3231などの一部のデバイスには内部プルアップがあり、外部プルアップはそれらと並列になります。
–SDsolar
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.