【python】Rasberry Pi + Grove TDS 水質センサのエラー「Check whether I2C enabled and Grove Base Hat RPi or Grove Base Hat RPi Zero inserted」の対処法

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 --  
タイトルとURLをコピーしました