LinuCエヴァンジェリストの鯨井貴博@opensourcetechです。
秋月電子通商でI2C キャラクタ液晶ディスプレイ ACM0802C-NLW-BBW-IICとI2C 温湿度・気圧・ガスセンサーモジュールBME680を購入しました。
それぞれ単体でRaspberry Pi zeroに接続すると、センサー動作もディスプレイも動作するところまで確認できました。
そして、I2Cでは複数デバイスの接続にも対応しているので、接続したのですが、
、
、
、
、
"ディスプレイだけうまく動作しない!" という状態。
文字を表示するためのスクリプトを実行すると、"Error: Write failed"となります。
と、ここから約数か月放置していたのですが、
再チャレンジすることにしました。
"I2C 複数接続 ACM0802C-NLW-BBW-IIC"などで色々と調べまくってみると、
ヒントになるであろう情報にヒット!
秋月電子通商のACM0802C-NLW-BBW-IICのFAQページでした。
とはいえ、本当にこれが原因なのか判断できなかったので、もう少し調べてみることにしました。
そして、
・Raspberry Pi zeroは内部にプルアップ抵抗を持っているらしい ※詳細は不明です
・複数抵抗が並列で接続された状態となり、抵抗値が低下することで電流値が高くなりErrorとなる模様
というところまで辿り着いた。
ということで、早速ACM0802C-NLW-BBW-IICのR13/R14に取り付けられているチップ抵抗(2.2kΩ)を取り外します。
これが取り付けられているようです。
以下、外した後。
チップ抵抗も1mm程度の大きさで、袋などに入れて置かないと見失う可能性大ですw
そして、いざリトライ!!
成功!!!!!!!
解決まで数か月かかりましたが、1つレベルアップ出来たような気がします。
また、色々と調べる中でいくつかの製品の仕様などを見ていたのですが、プルアップ抵抗の有無が記載されているので、そこもよく見ておかなければいけませんねw
Raspberry Pi zeroで複数のI2C機器を接続する際は、プルアップ抵抗に気を付ける必要がある
Raspberry Pi
Raspberry Pi zero
I2C
プルアップ抵抗
秋月電子通商
キャラクタ液晶ディスプレイ
ACM0802C-NLW-BBW-IIC
温湿度・気圧・ガスセンサーモジュール
BME680
Error: Write failed