问题描述
让我从使用的组件开始:
- 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