BMP280 ServiceSpecificException:I/O 错误(代码 5)
BMP280 ServiceSpecificException: I/O error (code 5)
我尝试使用 AndroidThings 通过 Raspberry Pi 3 和 BMP280 测量温度。
3,3V 我选择是因为 specification of BMP280:
To power the board, give it the same power as the logic level of your microcontroller
然后我要初始化传感器
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 电源我收到同样的异常。
我找到了this。但是我不知道如何检查 BMP280 是否真的通过 adb 连接到 Raspberry。
通过 own testing 我收到的连接通过 device.readRegByte(0xD0)
相同的异常。
是不是说BMP280连接不正确?
如果是,如何正确连接BMP280和Raspberry?
连接需要一些电阻吗?
更新
通过将 BMP280 与排针焊接解决。
与传感器一起工作还需要权限,只能在命令行中授予权限。 ref
adb shell pm grant app.package com.google.android.things.permission.MANAGE_SENSOR_DRIVERS
看看你的 fritzing 图你有 SDO 连接到 BCM3 吗?
根据数据表,SDO 引脚决定了传感器的地址。
Connecting SDO to GND results in slave
address 1110110 (0x76); connection it to VDDIO results in slave address 1110111 (0x77)
最重要的是:
The SDO pin cannot be left floating; if left floating, the
I²C address will be undefined.
com.google.android.things.pio.PioException: android.os.ServiceSpecificException: I/O error (code 5)
因此您的问题可能是未定义的 i2c 地址。
查看您用于 Bmx280SensorDriver 的代码,它使用地址 0x77
因此您应该确保您的 SDO 线连接到 raspberry pi 上的 5V。这将确保您的传感器具有正确的地址。
或者将 SDO 接地并使用此构造函数:
mTemperatureSensorDriver = new Bmx280SensorDriver("I2C1", 0x76);
如果您想了解传感器驱动程序在做什么 "under the hood" 有一个很棒的博客 post 和 repo 可以看到:
http://blog.blundellapps.co.uk/tut-android-things-temperature-sensor-i2c-on-the-rainbow-hat/
;-)
感谢信息,正确连接
bmx280 = new Bmx280("I2C1",0x76);
和 SDO 到 gnd。
但是读取值很奇怪。
我的气象站D/statie:temp: 186.83298 pres: -296.47287
有没有可能是传感器损坏了?
TNX
克里斯
要从物联网设备读取数据,必须固定触点,不要松动。
这只能通过焊接 BMP280 和头条来实现
才能建立连接
我尝试使用 AndroidThings 通过 Raspberry Pi 3 和 BMP280 测量温度。
3,3V 我选择是因为 specification of BMP280:
To power the board, give it the same power as the logic level of your microcontroller
然后我要初始化传感器
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 电源我收到同样的异常。
我找到了this。但是我不知道如何检查 BMP280 是否真的通过 adb 连接到 Raspberry。
通过 own testing 我收到的连接通过 device.readRegByte(0xD0)
相同的异常。
是不是说BMP280连接不正确? 如果是,如何正确连接BMP280和Raspberry?
连接需要一些电阻吗?
更新
通过将 BMP280 与排针焊接解决。
与传感器一起工作还需要权限,只能在命令行中授予权限。 ref
adb shell pm grant app.package com.google.android.things.permission.MANAGE_SENSOR_DRIVERS
看看你的 fritzing 图你有 SDO 连接到 BCM3 吗?
根据数据表,SDO 引脚决定了传感器的地址。
Connecting SDO to GND results in slave address 1110110 (0x76); connection it to VDDIO results in slave address 1110111 (0x77)
最重要的是:
The SDO pin cannot be left floating; if left floating, the I²C address will be undefined.
com.google.android.things.pio.PioException: android.os.ServiceSpecificException: I/O error (code 5)
因此您的问题可能是未定义的 i2c 地址。
查看您用于 Bmx280SensorDriver 的代码,它使用地址 0x77
因此您应该确保您的 SDO 线连接到 raspberry pi 上的 5V。这将确保您的传感器具有正确的地址。
或者将 SDO 接地并使用此构造函数:
mTemperatureSensorDriver = new Bmx280SensorDriver("I2C1", 0x76);
如果您想了解传感器驱动程序在做什么 "under the hood" 有一个很棒的博客 post 和 repo 可以看到:
http://blog.blundellapps.co.uk/tut-android-things-temperature-sensor-i2c-on-the-rainbow-hat/
;-)
感谢信息,正确连接
bmx280 = new Bmx280("I2C1",0x76);
和 SDO 到 gnd。
但是读取值很奇怪。
我的气象站D/statie:temp: 186.83298 pres: -296.47287
有没有可能是传感器损坏了?
TNX
克里斯
要从物联网设备读取数据,必须固定触点,不要松动。
这只能通过焊接 BMP280 和头条来实现
才能建立连接