×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
Raspberrypiで温湿度 SHT31
今回はI2C接続のSHT31を使って高精度温度測定に挑戦
秋月電子のSHT31-D15使用センサモジュールキット
回路
VCC、GRDにSDAとSCLを接続
設定
sumbusとI2Ctoolsを導入し、i2cを有効可
プログラム
・秋月電子のデータシートに基づいて
・アドレス 0X45 sudo i2cdetect 1でサーチ
・SHT31にbus.write_i2c_block_data(0x45, 0x2C, [0x06])でコマンドを送信
・しばらく待って 温度2秒 湿度4秒 テストでは1秒
・0x00から6バイト読み込み bus.read_i2c_block_data(0x45, 0x00, 6)
・0バイト目 温度のMSB 1バイト目 温度のLSB
・3バイト目 湿度のMSB 4バイト目 湿度のLSB
・MSBを8ビットシフトしLSBとAND
temp = data[0]<<8|data[1] バイト単位なのでdata[0] * 256 + data[1]でも可
・秋月電子のデータシート計算式で温度と湿度
全プログラム
今回はI2C接続のSHT31を使って高精度温度測定に挑戦
秋月電子のSHT31-D15使用センサモジュールキット
回路
VCC、GRDにSDAとSCLを接続
設定
sumbusとI2Ctoolsを導入し、i2cを有効可
プログラム
・秋月電子のデータシートに基づいて
・アドレス 0X45 sudo i2cdetect 1でサーチ
・SHT31にbus.write_i2c_block_data(0x45, 0x2C, [0x06])でコマンドを送信
・しばらく待って 温度2秒 湿度4秒 テストでは1秒
・0x00から6バイト読み込み bus.read_i2c_block_data(0x45, 0x00, 6)
・0バイト目 温度のMSB 1バイト目 温度のLSB
・3バイト目 湿度のMSB 4バイト目 湿度のLSB
・MSBを8ビットシフトしLSBとAND
temp = data[0]<<8|data[1] バイト単位なのでdata[0] * 256 + data[1]でも可
・秋月電子のデータシート計算式で温度と湿度
全プログラム
import smbus
import time
# I2CBUS = 1
bus = smbus.SMBus(1)
# address
# sudo i2cdetect 1
#0x45 comand upMSB 0x2C downMSB 0X06
# address comand bytedata
bus.write_i2c_block_data(0x45, 0x2C, [0x06])
time.sleep(1.0)
# Read data back from 0x00(00), 6 bytes
#data
#data[0]+dat[1]+data[2]+data[3]+data[4]+data[5]+data[6]
# MSB +LSB +CRC +MSB +LSB +CRC
data = bus.read_i2c_block_data(0x45, 0x00, 6)
# Convert the data
#msb+lsb
#temp = data[0] * 256 + data[1]
temp = data[0]<<8|data[1]
temp = -45 + (175 * temp/(pow(2,16) - 1))
#humi =(data[3] * 256 + data[4])
humi =(data[3] <<8|data[4])
humi = 100 * humi/ (pow(2,16) - 1)
# Output data
print ('Temp: %.3f C' %temp)
print ('Humi : %.2f %%RH'%humi)
PR