如何解决树莓派 3B & Bme280 远程 I/O 错误

问题描述

让我从使用的组件开始:

  • GPIO 扩展板,用于将树莓派连接到组件
  • Bme280
  • 圆周率 3B

问题描述:

这个问题一开始是间歇性的。我们正在接收读数并且错误突然发生,对传感器进行了调整(取出并重新安装)解决了它,但是当我们触摸传感器时,错误再次出现。

我们决定更换传感器,问题从间歇性变为持续性。现在我们将此作为永久性问题。

我们删除了 BME280 和 SmBus2 的包,并决定重新安装。

RPI Bme280:https://pypi.org/project/RPi.bme280/

我遵循了这个 BME280 安装指南,但是当提示“i2cdetect -y 1”时,有行但没有显示数字。

目前已确认的内容:

  • 电路修补很好,经过我的讲师 pi 和它的测试
    工作正常。

  • 代码很好,我们甚至使用了RPi.bme280提供的示例代码

  • I2c 每次都启用

请帮助我,因为我真的迷路了。我需要在下周之前提交此文件,因此不胜感激。

问题图片 --> Picture of the problem

解决方法

我已尝试回复,但 SMBus 和 i2c 存在一些陷阱,因此为了将问题分解为较小的部分,我用缩进引用了您的原始消息。回复如下。

这个问题一开始是间歇性的。我们正在接收读数并且错误突然发生,对传感器进行了调整(取出并放回)解决了它,但是当我们触摸传感器时,错误再次出现。

我锁定了“触摸传感器”这句话。 BME280 是否有可能发生 ESD 放电?因此现在部分或完全损坏?

您在使用 ESD 安全室吗?或者至少是 ESD 手镯。您不会注意到小的 ESD 放电,对于小型电子产品,即使是低于 1000V 的放电也会立即或随着时间的推移造成损坏。 (Fundamentals of Electrostatic Discarge - incompliancemag.com)

我遵循了这个 BME280 安装指南,但是当提示“i2cdetect -y 1”时,有行但没有显示数字。

I2Cdetect -y 1 将向每个可能的从站 0-127 发送 ReadBit 消息。然后侦听从地址上的 ACK。 该消息非常简单,但可以检测工作的 i2c 从站。 正如您所说,没有“线路”,如果 BME280 提供了正确的 3v3+GND,我建议从设备要么有响应问题。

作为另一种可能性,您能否重做此步骤 dtparam=i2c_arm=on,i2c_baudrate=400000

(将波特率设置为 10000 /10k。如果这可以解决问题并且您需要更高的带宽,请尝试“50000 /50k”或“100000 /100k”)这只是为了消除从机无法操作的可能性在这个高频。对于原型/测试场景,SMBus 的 400k 波特率很高。极少量的干扰可能会破坏 SDA 上的数据。

另一种可能性是吸收电流,我在 i2c 和 i2c 上的 SMBus 上艰难地了解到它是不一样的。 你的上拉电阻是否适合有限的灌电流?

SMBus 规定的最小灌电流为 100µA,最大为 350µA,相比之下,I²C 总线的3mA(安培=电压/电阻欧姆)。

现在是软件问题。

来自您在 imgur 上提供的图片。 文件“newcodes_''''''''''''''.py”第2行,在

您的编译器在您尝试导入 bme280 的地方找不到“bme”。参考/路径问题? 这可能是代码调用中其他问题的原因。

我不知道你在用什么软件编写代码,但是如果有插入断点和运行调试版本的选项。我建议从那里开始:)

,

好的,我已经解决了这个问题,我将电线从跳线改为硬线。谢谢你们的回应。我很感激他们 :D

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...