Raspberry Pi [Errno 121] 远程 I/O 温度传感器错误

Raspberry Pi [Errno 121] Remote I/O Error with Temperature Sensor

我正在尝试设置一个 Raspberry Pi 3 B+ 和一个 Waveshare BME280 Environmental Sensor. I followed this guide 来连接电缆和 运行 提供的 bme280.py 脚本。我的传感器有 2 根额外的电缆,CS 和 ADDR/MISO,指南中的模型中没有这些电缆,但其余电缆已插入相同的 GPIO 引脚。 I2C 和 SPI 接口已启用,我正在 运行ning 最新的 Raspbian OS Lite。

当我 运行 脚本时,我收到以下消息:
Traceback (most recent call last):
File "bme280.py", line 172, in <module>
main()
File "bme280.py", line 161, in main
(chip_id, chip_version) = readBME280ID()
File "bme280.py", line 56, in readBME280ID
(chip_id, chip_version) = bus.read_i2c_block_data(addr, REG_ID, 2)
OSError: [Errno 121] Remote I/O error

还有一个奇怪的问题:当我 运行 i2cdetect -y 1 我得到的每一行都是破折号,但是如果我 运行 紧接着第二次,我得到 x77 显示, 但 x76 仍然没有。

我找到了一个类似的 thread 并尝试通过添加 i2c_baudrate=100000 并重新启动来修改我的 /boot/config.txt 文件,但这并没有解决它。

我确保使用 gpiotest 测试了 pi,结果返回为
Skipped non-user gpios: 0 1 28 29 30 31
Tested user gpios: 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
Failed user gpios: None

我在使用 DHT11 传感器和 运行ning Adafruit 库时遇到了类似的问题,并收到一个错误,表示没有数据从传感器流出。我尝试使用几种不同的传感器和 Raspberry Pis,并多次重新安装 OS。 在这一点上,我不确定如何进行。感谢任何帮助。

我设法为这个问题创建了一个非常老套的解决方案。 由于 i2cdetect 似乎只在第二次(或更晚)时读取设备 运行,我决定在传感器脚本中模拟 运行ning 它。

我在我的代码中添加了以下几行:

import os
from time import sleep
os.system('i2cdetect -y 1')
sleep(0.1)
os.system('i2cdetect -y 1')

输出仍然显示第一个 i2cdetect 命令没有读取任何设备,所以我不得不添加第二个。我注意到有时它们都没有读取数据,所以我添加了一个 1/10 秒的睡眠命令。

这从 i2cdetect 命令获得了不必要的输出,但我忽略了它,只将温度数据发送到我的服务器。