新旧LCDとError: Write failedについて検証してみた

秋月電子で売られているI2C接続小型キャラクタLCDモジュール 8×2行を利用した製品で、スイッチサイエンスからI2C controlled 8×2LCD Breakout for Raspberry Piが販売されていたのだが、それが販売見合わせとなっている。
そこを見ると、どうやら液晶モジュールの内部仕様変更があったらしい。

前回も触れた内容だが、前回は新型LCDしか使っていなかったので改めて新旧LCDで比較してみた。

左が旧型LCD直結した時で、右が新型LCD直結した時の写真。
旧型LCDの方は/RESETを基板上でプルアップしていないので、ブレッドボード上で10KΩでプルアップしている。
i2crep16i2crep17

旧型LCDは問題なく認識して文字を表示させることができる。

1root@rasapp:~# i2cdetect -y 1
2     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
300:          -- -- -- -- -- -- -- -- -- -- -- -- --
410: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
520: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
630: -- -- -- -- -- -- -- -- -- -- -- -- -- -- 3e --
740: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
850: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
960: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
1070: -- -- -- -- -- -- -- --
11root@rasapp:~#
12root@rasapp:~# i2cset -y 1 0x3e 0 0x38 0x39 0x14 0x70 0x56 0x6c i
13root@rasapp:~# i2cset -y 1 0x3e 0 0x38 0x0c 0x01 i
14root@rasapp:~# i2cset -y 1 0x3e 0 0x01 i
15root@rasapp:~# i2cset -y 1 0x3e 0x40 0x77 0x61 0x69 0x74 0x20 i
16root@rasapp:~#

 

新型LCDの方は認識されていない。

1root@rasapp:~# i2cdetect -y 1
2     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
300:          -- -- -- -- -- -- -- -- -- -- -- -- --
410: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
520: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
630: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
740: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
850: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
960: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
1070: -- -- -- -- -- -- -- --
11root@rasapp:~#

 

さて、新旧の比較を行ったところで、1回目のi2csetコマンドでError: Write failedとなる件について、TI製PCA9515AとNXP製PCA9515A、旧型LCDと新型LCDの組み合わせを確かめてみた。
TI製PCA9515A → 旧型LCD
TI製PCA9515A → 新型LCD
NXP製PCA9515A → 旧型LCD
NXP製PCA9515A → 新型LCD
i2crep08

1root@rasapp:~# i2cdetect -y 1
2     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
300:          -- -- -- -- -- -- -- -- -- -- -- -- --
410: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
520: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
630: -- -- -- -- -- -- -- -- -- -- -- -- -- -- 3e --
740: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
850: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
960: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
1070: -- -- -- -- -- -- -- --
11root@rasapp:~#
12root@rasapp:~# i2cset -y 1 0x3e 0 0x38 0x39 0x14 0x70 0x56 0x6c i
13root@rasapp:~# i2cset -y 1 0x3e 0 0x38 0x0c 0x01 i
14root@rasapp:~# i2cset -y 1 0x3e 0 0x01 i
15root@rasapp:~# i2cset -y 1 0x3e 0x40 0x77 0x61 0x69 0x74 0x20 i
16root@rasapp:~#

どの組み合わせでも確かめてもError: Write failedが発生することはなかった。
見た目は全く同じなのでログは一つだけ貼る。

次に、BME280を組み合わせてみる。
本当ならApplePiと同じものを使いたかったけど、すぐに手に入る秋月のBME280使用 温湿度・気圧センサモジュールキットを使うことにした。
TI製PCA9515A → 旧型LCD + BME280
TI製PCA9515A → 新型LCD + BME280
NXP製PCA9515A → 旧型LCD + BME280
NXP製PCA9515A → 新型LCD + BME280
i2crep18i2crep19

1root@rasapp:~# i2cdetect -y 1
2     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
300:          -- -- -- -- -- -- -- -- -- -- -- -- --
410: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
520: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
630: -- -- -- -- -- -- -- -- -- -- -- -- -- -- 3e --
740: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
850: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
960: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
1070: -- -- -- -- -- -- 76 --
11root@rasapp:~#
12root@rasapp:~# i2cset -y 1 0x3e 0 0x38 0x39 0x14 0x70 0x56 0x6c i
13root@rasapp:~# i2cset -y 1 0x3e 0 0x38 0x0c 0x01 i
14root@rasapp:~# i2cset -y 1 0x3e 0 0x01 i
15root@rasapp:~# i2cset -y 1 0x3e 0x40 0x77 0x61 0x69 0x74 0x20 i
16root@rasapp:~#
17root@rasapp:~# cd script/ApplePi/
18root@rasapp:~/script/ApplePi# ./getBME
1924.26C
20101060Pa
2146.31%
22root@rasapp:~/script/ApplePi#

やっぱりError: Write failedが発生することがなかった。

BME280をつないだ時点で再現しなかった時点で意味はないと思うが、最後にRTCをつないだ状態でも確認してみる。
TI製PCA9515A → 旧型LCD + BME280 + DS1307
TI製PCA9515A → 新型LCD + BME280 + DS1307
NXP製PCA9515A → 新型LCD + BME280 + DS1307
NXP製PCA9515A  →旧型LCD + BME280 + DS1307
i2crep11i2crep20

1root@rasapp:~# i2cdetect -y 1
2     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
300:          -- -- -- -- -- -- -- -- -- -- -- -- --
410: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
520: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
630: -- -- -- -- -- -- -- -- -- -- -- -- -- -- 3e --
740: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
850: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
960: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
1070: -- -- -- -- -- -- 76 --
11root@rasapp:~#
12root@rasapp:~# i2cset -y 1 0x3e 0 0x38 0x39 0x14 0x70 0x56 0x6c i
13root@rasapp:~# i2cset -y 1 0x3e 0 0x38 0x0c 0x01 i
14root@rasapp:~# i2cset -y 1 0x3e 0 0x01 i
15root@rasapp:~# i2cset -y 1 0x3e 0x40 0x77 0x61 0x69 0x74 0x20 i
16root@rasapp:~#
17root@rasapp:~# cd script/ApplePi/
18root@rasapp:~/script/ApplePi# ./getBME
1924.20C
20101050Pa
2146.76%
22root@rasapp:~/script/ApplePi#
23root@rasapp:~/script/ApplePi# timedatectl status
24      Local time: 金 2016-10-28 20:22:30 JST
25  Universal time: 金 2016-10-28 11:22:30 UTC
26        RTC time: 火 1965-07-20 06:36:28
27       Time zone: Asia/Tokyo (JST, +0900)
28     NTP enabled: no
29NTP synchronized: no
30 RTC in local TZ: no
31      DST active: n/a
32root@rasapp:~/script/ApplePi#

結局Error: Write failedの再現せず。

結局キットについてきたLCDとPCA9515Aの個体の問題で、この個体の組み合わせの時だけ発生するだろうか。
ただ、1回目のi2csetコマンドを打ってからプロンプトが返ってくるときに時間がかかっていることがたまにあったので、それがこの組み合わせの時だけ許容できない範囲になってエラーとなったということだろうか。

カテゴリー: RaspberryPi, 電子工作 パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください