首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过BH1750中的USB-I2C模块从I2C设备Python3中获取数据?

如何通过BH1750中的USB-I2C模块从I2C设备Python3中获取数据?
EN

Stack Overflow用户
提问于 2020-04-04 12:29:09
回答 1查看 1.1K关注 0票数 1

我是Linux用户,我有这样的设备:

USB-I2C转换器:

https://www.robot-electronics.co.uk/htm/usb_i2c_tech.htm

GY-30 I2C模块:

https://5.imimg.com/data5/TY/AK/MY-1833510/gy-30-bh1750-intensity-digital-light-sensor-module.pdf

GY-30配有BH1750环境光传感器:

https://www.mylms.cz/wp-content/uploads/2017/07/bh1750-datasheet.pdf

我需要通过BH1750在Python3中的虚拟串口上阅读Luxs,但我不知道该如何做。我的结尾是这样的:

代码语言:javascript
复制
import serial
ser = serial.Serial(port="/dev/ttyUSB0",
                    baudrate=19200,
                    parity=serial.PARITY_NONE,
                    stopbits=serial.STOPBITS_TWO,
                    bytesize=serial.EIGHTBITS,
                    timeout=0.500,
                    )

ser.flushInput()
ser.flushOutput()

ser.write(bytearray([0x55, 0x23, 0x11, 0x01]))
test = ser.read()

但我不确定什么是正确的字节。我有GY-30直接连接到USBI2C。

谢谢你最终的帮助..。

伊日

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-05 12:11:27

最后的解决办法是:

代码语言:javascript
复制
import serial
import time

ser = serial.Serial(port="/dev/ttyUSB0",
                    baudrate=19200,
                    parity=serial.PARITY_NONE,
                    stopbits=serial.STOPBITS_TWO,
                    bytesize=serial.EIGHTBITS,
                    timeout=0.500,
                    )

ser.flushInput()
ser.flushOutput()

ADDR_BASE = 0x23 # nebo 0x5c pokud je ADDR pin HIGH
ADDR_READ = ADDR_BASE << 1 | 1
ADDR_WRITE = ADDR_BASE << 1

CMD_WRITE_1B = 0x53
CMD_READ_MULT = 0x54

LUX_RESOLUTION_1X = 0x10
LUX_RESOLUTION_4X = 0x13

# nastavení senzoru
ser.write(bytearray([CMD_WRITE_1B, ADDR_WRITE, LUX_RESOLUTION_1X]))

while True:
    time.sleep(1)

    # požádám převodník o 2 B
    ser.write(bytearray([CMD_READ_MULT, ADDR_READ, 0x02]))

    # přečtu je
    raw = ser.read(2)

    # interpretace bytů podle datasheetu
    lx = (raw[1] << 8 | raw[0]) / 1.2

    print("--> %.d lx" %(lx))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61028083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档