BMP280 ServiceSpecificException:I / O错误(代码5)

时间:2017-12-18 13:34:22

标签: java android android-sensors android-things

我尝试使用AndroidThings测量Raspberry Pi 3和BMP280的温度。

enter image description here

由于specification of BMP280

,我选择了3,3V
  

要为电路板供电,请为其提供与微控制器逻辑电平相同的电源

然后我想初始化传感器

mTemperatureSensorDriver = new Bmx280SensorDriver("I2C1");

通过执行,我收到以下例外

Error configuring sensor
    com.google.android.things.pio.PioException: android.os.ServiceSpecificException: I/O error (code 5)
    at com.google.android.things.pio.I2cDeviceImpl.readRegByte(I2cDeviceImpl.java:81)
    at com.google.android.things.contrib.driver.bmx280.Bmx280.connect(Bmx280.java:215)
    at com.google.android.things.contrib.driver.bmx280.Bmx280.<init>(Bmx280.java:193)
    at com.google.android.things.contrib.driver.bmx280.Bmx280.<init>(Bmx280.java:180)
    at com.google.android.things.contrib.driver.bmx280.Bmx280SensorDriver.<init>(Bmx280SensorDriver.java:55)

同样通过5V Power我也会收到同样的例外。

我找到了this。但我不知道怎么检查,如果BMP280真的与adp连接到Raspberry。

通过own testing device.readRegByte(0xD0) adb shell pm grant app.package com.google.android.things.permission.MANAGE_SENSOR_DRIVERS收到的连接。

是否意味着BMP280连接不正确? 如果是,如何正确连接BMP280与Raspberry?

连接需要一些电阻吗?

更新

通过焊接BMP280和标题条来解决。

同样使用传感器是必须的权限,只能在命令行中进行登记。 ref

Instant

3 个答案:

答案 0 :(得分:0)

查看你的fritzing图表,你有SDO连接到BCM3?

从数据表中,SDO引脚决定了传感器的地址。

datasheet

  

将SDO连接到GND会导致从机   地址1110110(0x76);将其连接到VDDIO会导致从地址1110111(0x77)

最重要的是:

  

SDO引脚不能悬空;如果离开,那么   I²C地址将是未定义的。

com.google.android.things.pio.PioException: android.os.ServiceSpecificException: I/O error (code 5)

因此,您的问题可能是未定义的i2c地址。

查看您用于Bmx280SensorDriver的代码,它使用地址0x77

https://github.com/androidthings/contrib-drivers/blob/master/bmx280/src/main/java/com/google/android/things/contrib/driver/bmx280/Bmx280.java#L48

因此,您应该确保您的SDO线连接到覆盆子pi上的5V。这将确保您的传感器具有正确的地址。

或者将SDO连接到Ground并使用此构造函数:

mTemperatureSensorDriver = new Bmx280SensorDriver("I2C1", 0x76);

如果你想了解传感器驱动程序在“引擎盖下”正在做什么,那么有一篇很棒的博文和回购文章可以看到:

http://blog.blundellapps.co.uk/tut-android-things-temperature-sensor-i2c-on-the-rainbow-hat/

https://github.com/blundell/androidthings-i2c-input/blob/master/app/src/main/java/com/blundell/tut/MainActivity.java

- )

答案 1 :(得分:0)

感谢信息,正确连接

bmx280 = new Bmx280("I2C1",0x76);和SDO to gnd。

但读取值很奇怪。

myweatherstation D / statie:temp: 186.83298 pres: -296.47287

传感器是否可能损坏?

TNX

克里斯

答案 2 :(得分:0)

要从IoT设备读取数据,应固定接触点,不要松动连接。

这只能通过将BMP280与插头条焊接在一起来实现

只有这样才能建立连接