Opensourcetechブログ

OpensourcetechによるNGINX/Zabbix/Neo4j/Linuxなどオープンソース技術に関するブログです。

Raspberry Pi zeroで複数のI2C機器を接続する際は、プルアップ抵抗に気を付ける必要がある


LinuCエヴァンジェリストの鯨井貴博@opensourcetechです。

秋月電子通商I2C キャラクタ液晶ディスプレイ ACM0802C-NLW-BBW-IICI2C 温湿度・気圧・ガスセンサーモジュールBME680を購入しました。
f:id:opensourcetech:20210421141433j:plain:w400


それぞれ単体でRaspberry Pi zeroに接続すると、センサー動作もディスプレイも動作するところまで確認できました。


そして、I2Cでは複数デバイスの接続にも対応しているので、接続したのですが、




"ディスプレイだけうまく動作しない!" という状態。
文字を表示するためのスクリプトを実行すると、"Error: Write failed"となります。


と、ここから約数か月放置していたのですが、
再チャレンジすることにしました。


"I2C 複数接続 ACM0802C-NLW-BBW-IIC"などで色々と調べまくってみると、
ヒントになるであろう情報にヒット!

秋月電子通商のACM0802C-NLW-BBW-IICのFAQページでした。
f:id:opensourcetech:20210421210009p:plain:w400


とはいえ、本当にこれが原因なのか判断できなかったので、もう少し調べてみることにしました。


そして、 ・Raspberry Pi zeroは内部にプルアップ抵抗を持っているらしい ※詳細は不明です
・複数抵抗が並列で接続された状態となり、抵抗値が低下することで電流値が高くなりErrorとなる模様
というところまで辿り着いた。


ということで、早速ACM0802C-NLW-BBW-IICのR13/R14に取り付けられているチップ抵抗(2.2kΩ)を取り外します。
これが取り付けられているようです。
f:id:opensourcetech:20210421135358j:plain:w500


以下、外した後。
f:id:opensourcetech:20210421140749j:plain:w500
チップ抵抗も1mm程度の大きさで、袋などに入れて置かないと見失う可能性大ですw
f:id:opensourcetech:20210421140737j:plain:w400


そして、いざリトライ!!

成功!!!!!!!
f:id:opensourcetech:20210421212014j:plain:w500


解決まで数か月かかりましたが、1つレベルアップ出来たような気がします。
また、色々と調べる中でいくつかの製品の仕様などを見ていたのですが、プルアップ抵抗の有無が記載されているので、そこもよく見ておかなければいけませんねw

Opensourcetech by Takahiro Kujirai