樹莓派連線STH30獲取溫度濕度

2021-09-24 16:40:01 字數 1303 閱讀 4593

首先需要先安裝i2ctool和smbus

安裝說明

然後現在有了smbus2,上官網,如果pip install 裝不上又不翻牆,就上官網上下源**自己build。

**簡單如下,設定命令都用write_i2c_block_data(位址,命令高8位,命令低8位)

read_i2c_block_data(位址,0x00,讀取長度一般是6)

sth30有兩種模式,單次取樣和迴圈取樣模式。示例**是迴圈取樣模式。如果是單次取樣,就是發一次取樣命令,再讀一次6byte的資料。也即一次write命令,一次read命令,所用命令如下圖。

圖1 單次取樣模式命令

圖2 迴圈取樣模式命令

txtfile=open('mydb.txt','w')

bus.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=16

while(mycount>0):

data=bus.read_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.0

txtfile.write(str(celsius)+','+str(humidity)+'\n')

time.sleep(0.25)

mycount=mycount-1

bus.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()

樹莓派 c獲取樹莓派CPU溫度

c語言檔案io操作 新建乙個名為cpu temp.c檔案,檔案的具體內容如下 include include include include include define temp path sys class thermal thermal zone0 temp define max size 3...

樹莓派 c獲取樹莓派CPU溫度

c語言檔案io操作 新建乙個名為cpu temp.c檔案,檔案的具體內容如下 include include include include include define temp path sys class thermal thermal zone0 temp define max size 3...

樹莓派 c獲取樹莓派CPU溫度

c語言檔案io操作 新建乙個名為cpu temp.c檔案,檔案的具體內容如下 include include include include include define temp path sys class thermal thermal zone0 temp define max size 3...