Raspberry piのI2CでOSError: [Errno 121] Remote I/O error

Raspberry piにI2Cのセンサーを繋ぎ、smbus2でデータの取得を試みたところ表題のエラー。

File "/usr/local/lib/python3.7/dist-packages/smbus2/smbus2.py", line 425, in i2c_rdwr
    ioctl(self.fd, I2C_RDWR, ioctl_data)
OSError: [Errno 121] Remote I/O error

まずはi2c接続が正常かどうか確認。

$ sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

ちゃんとアドレス0x48にセンサーが表示されているので物理的な配線はOK。

以下のページによると、I2Cへのアクセスが頻回だとエラーが出るらしい。

Attention Required! | Cloudflare

read/writeが発生する要所要所でtime.sleep(1)を追記することでエラーは出なくなった。

コメント

タイトルとURLをコピーしました