3

我在https://www.hackster.io Windows IOT上关注WheatherStation项目。 我在 github 上下载了项目,并在 Raspberry 上连接了我的BMP280传感器。 你可以检查我的连接

对我来说,这是正确的,但我有一个例外bmp280.WriteRead(WriteBuffer, ReadBuffer);

System.IO.FileNotFoundException:系统找不到指定的文件。从地址未被确认。

4

4 回答 4

3

这个问题有几个不同的原因,其中大部分与硬件有关。

我看到您正在使用 Adafruit 分线板,并将基于此引用引脚。

  1. 确保您的 SDO 和 SCL 线路正确连接到您的 Raspberry PI。SDO 应连接到引脚 3,SCL 应连接到引脚 5。从您的图表图片来看,这应该是正确的。

  2. 接下来是Vin。Hackster.io 上的 Fritzing 图像不正确。Vin 应该连接到你的 3.3V 线,你的 PI 上的 Pin 1。

    这是因为 Vin 是逻辑信号的电源电平。在这种情况下,Raspberry PI 为 3.3V,将其设置为 5 可能会导致无法通过 I2C 正确输入数据的问题。

  3. 最后,通过将 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 标头映射

于 2016-05-18T20:33:04.260 回答
0

这可能是 I2C 总线的问题(因为未收到 ACK)。

如果没问题,请交叉检查您是否使用 --recursive 标志克隆了他们的仓库?所有子模块都将使用它正确克隆。(否则可能会丢失一些文件。)

于 2016-02-16T17:34:06.400 回答
0

检查你的电线。确保它们被完全推到正确的位置。这对我来说是个问题。

于 2019-02-02T22:04:15.647 回答
0

你必须焊接 BMP280 ......

于 2019-09-29T08:24:23.487 回答