我在https://www.hackster.io Windows IOT上关注WheatherStation项目。
我在 github 上下载了项目,并在 Raspberry 上连接了我的BMP280传感器。
你可以检查我的连接
对我来说,这是正确的,但我有一个例外bmp280.WriteRead(WriteBuffer, ReadBuffer);
System.IO.FileNotFoundException:系统找不到指定的文件。从地址未被确认。
我在https://www.hackster.io Windows IOT上关注WheatherStation项目。
我在 github 上下载了项目,并在 Raspberry 上连接了我的BMP280传感器。
你可以检查我的连接
对我来说,这是正确的,但我有一个例外bmp280.WriteRead(WriteBuffer, ReadBuffer);
System.IO.FileNotFoundException:系统找不到指定的文件。从地址未被确认。
这个问题有几个不同的原因,其中大部分与硬件有关。
我看到您正在使用 Adafruit 分线板,并将基于此引用引脚。
确保您的 SDO 和 SCL 线路正确连接到您的 Raspberry PI。SDO 应连接到引脚 3,SCL 应连接到引脚 5。从您的图表图片来看,这应该是正确的。
接下来是Vin。Hackster.io 上的 Fritzing 图像不正确。Vin 应该连接到你的 3.3V 线,你的 PI 上的 Pin 1。
这是因为 Vin 是逻辑信号的电源电平。在这种情况下,Raspberry PI 为 3.3V,将其设置为 5 可能会导致无法通过 I2C 正确输入数据的问题。
最后,通过将 SDO 绑定到 V3.3 将其拉高。
其原因是,如果您阅读 BMP280/BME280 的数据表并查看原理图,您会看到 SDO 有一个上拉电阻,可将其拉至 3.3V,这是内部逻辑电平。如果使用 5v 导轨,这将非常奇怪,因为从技术上讲,您不是处于三态,既不低也不高,因此您最终可能会得到一个随机地址。
通过接地将其拉至 0V 将导致从地址为 0x76。随着它被拉高,BMP280/BME280 传感器的从地址将为 0x77。通过查看他们提供的代码,他们期望这个引脚被拉高,给出一个 0x77 地址。
#3 的替代软件解决方案是更改 BME280 器件代码中的 I2C 从器件地址。在示例代码中,这包含在 Lesson_203\StartSolution\BMP280.cs 中:
class BMP280
{
//The BMP280 register addresses according the the datasheet: http://www.adafruit.com/datasheets/BST-BMP280-DS001-11.pdf
const byte BMP280_Address = 0x77; //If SDI is pulled high 0x77, if pulled low 0x76
const byte BMP280_Signature = 0x58;
最后,如果您从顶部查看 pi 并且 HDMI 端口指向您并且左侧的 SD 卡插槽位于您对 40 针头的最左侧针脚感兴趣,那么您在 Pi 上的针脚连接。
5V | 5V | 地
3.3V | SDA(SDI) | 时钟
另请参阅此标题映射。Pi3 标头映射
这可能是 I2C 总线的问题(因为未收到 ACK)。
如果没问题,请交叉检查您是否使用 --recursive 标志克隆了他们的仓库?所有子模块都将使用它正确克隆。(否则可能会丢失一些文件。)
检查你的电线。确保它们被完全推到正确的位置。这对我来说是个问题。
你必须焊接 BMP280 ......