首先需要先安装i2ctool和smbus
安装说明
然后现在有了smbus2,上官网,如果pip install 装不上又不翻墙,就上官网上下源代码自己build。
代码简单如下,设置命令都用write_i2c_block_data(地址,命令高8位,命令低8位)
read_i2c_block_data(地址,0x00,读取长度一般是6)
STH30有两种模式,单次采样和循环采样模式。示例代码是循环采样模式。如果是单次采样,就是发一次采样命令,再读一次6byte的数据。也即一次write命令,一次read命令,所用命令如下图。
图1 单次采样模式命令
图2 循环采样模式命令
from smbus2 import SMBusWrapper #引入相关类
txtfile=open(','w')
with SMBusWrapper(1) as bus:#打开i2cbus.write_i2c_block_data(0x44,0x23,[0x22])#我这个STH30的默认地址是0X44,本命令写入0X2322命令,意思是设置为每秒采样4次,精确水平是中等time.sleep(0.016)#给STH30一点时间bus.write_i2c_block_data(0x44,0xe0,[0x00])#开始采样time.sleep(0.016)mycount=16while(mycount>0):dataad_i2c_block_data(0x44,0x00,6)#读取采样结果temperature=data[0]*256+data[1]celsius = -45 + (175 * temperature / 65535.0)humidity = 100 * (data[3] * 256 + data[4]) / 65535.0txtfile.write(str(celsius)+','+str(humidity)+'n') time.sleep(0.25)mycount=mycount-1bus.write_i2c_block_data(0x44,0x30,[0x93])#中止循环采样模式time.sleep(0.016)bus.write_i2c_block_data(0x44,0x30,[0xa2])#STH30软重启time.sleep(0.016)
txtfile.close()
本文发布于:2024-01-29 05:36:01,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170647776613066.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |