Raspberry pi + Grove + pythonで水質(TDS)計測をしようとした際に、エラーが発生したが日本語の参考資料がなかったので対処法メモ。
エラー内容
以下の機器構成で、公式サイトに記載のインストール・動作確認手順を「Play With Raspberry Pi – Software – Step 6」まで実施するとエラーが発生する。
機器構成
エラー
$ python3 python/tds.py 0
Detecting TDS...
Check whether I2C enabled and Grove Base Hat RPi or Grove Base Hat RPi Zero inserted
対処法
日本語のドキュメントはなかったが、英語版があった。
以下の手順を実施するとエラーが解消し、TDS値が計測できた。
エラー原因を大雑把に言うと、最近の「GROVE – ベースHAT for Raspberry Pi」の内蔵チップが変わって、I2Cのアドレスが「0x04」から「0x08」に変わったということらしい。このため、公開しているpythonライブラリのアドレス直書き部分(adc.pyの57行目付近)を修正すると動く。
# 修正前
def __init__(self, address = 0x04)
# 修正後
def __init__(self, address = 0x08)
今回は水質センサでエラーが出たが、adc.pyはGroveのアナログ端子全体のライブラリと思われるので、他の機器でも発生しそう。「GROVE – ベースHAT for Raspberry Pi」を装着し、I2C有効化後に、以下のコマンドを実行して「0x08」が増えていたら、とりあえず試してみるといいかも。
$ sudo i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: 08 -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- 39 -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- 58 -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- 76 --