我正在尝试通过 Ubuntu-16.04 上的 I²C 接口使用BH170FVI 传感器。我的电路板是UpSquared而不是 Raspberry。
为了能够使用 i2c 接口,我安装了i2c-tools
. 我之前也用这个工具控制了BMI160传感器,没有遇到问题。
当我尝试使用以下命令在终端上检测我的传感器时:
i2cdetect -r -y 5
此命令正确检测到我的传感器,如下所示:
看来我的设备地址是0x23
.
在此之后,当我尝试通过命令读取所有寄存器映射数据时:
i2cdump -y -f 5 0x23
结果是:
问题是所有地图地址都为零。其中至少有一个应读取光量。我以为传感器电源可能会关闭,但我尝试使用命令i2cset
打开电源,但仍然没有任何变化。
注意:我的传感器没有问题,因为我使用 Arduino 以及以下代码进行了尝试:
#!/usr/bin/python
import smbus
import time
# Define some constants from the datasheet
DEVICE = 0x23 # Default device I2C address
POWER_DOWN = 0x00 # No active state
POWER_ON = 0x01 # Power on
RESET = 0x07 # Reset data register value
ONE_TIME_HIGH_RES_MODE = 0x20
bus = smbus.SMBus(1) # Rev 2 Pi uses 1
def convertToNumber(data):
# Simple function to convert 2 bytes of data
# into a decimal number
return ((data[1] + (256 * data[0])) / 1.2)
def readLight(addr=DEVICE):
data = bus.read_i2c_block_data(addr,ONE_TIME_HIGH_RES_MODE)
return convertToNumber(data)
def main():
while True:
print "Light Level : " + str(readLight()) + " lux"
time.sleep(0.5)
if __name__=="__main__":
main()
我的问题是为什么我不能通过 on 控制我的传感器i2c-tools
。