我尝试使用AndroidThings测量Raspberry Pi 3和BMP280的温度。
由于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
答案 0 :(得分:0)
查看你的fritzing图表,你有SDO连接到BCM3?
从数据表中,SDO引脚决定了传感器的地址。
将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
因此,您应该确保您的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/
- )
答案 1 :(得分:0)
感谢信息,正确连接
bmx280 = new Bmx280("I2C1",0x76);
和SDO to gnd。
但读取值很奇怪。
myweatherstation D / statie:temp: 186.83298 pres: -296.47287
传感器是否可能损坏?
TNX
克里斯
答案 2 :(得分:0)
要从IoT设备读取数据,应固定接触点,不要松动连接。
这只能通过将BMP280与插头条焊接在一起来实现
只有这样才能建立连接