Raspberry Pi Picoに温度・気圧・湿度センサーBME280を接続し、温度・気圧・湿度をOLEDに表示します。
BME280とOLEDは、いずれもI2C接続です。接続回路図です。
電源は、電池2本(3V)とし、スタンドアローンで動作します。
スクリプトです。これまでのBME280のテストとOLED表示テストの結果を利用します。小数点以下の数値は、けっこう変動しますので、小数点1位を四捨五入しています。測定は5秒ごとに行い、数値が変わった時だけ表示を変更します。
--------------------------------------------------------------------------------------
"""
Raspberry Pi Pico BME280 TPH meter
2021.11.29
JH7UBC Keiji Hata
"""
from machine import I2C,Pin
import bme280
import ssd1306
import utime
i2c=I2C(0,sda=Pin(16),scl=Pin(17),freq=400000)
bme=bme280.BME280(i2c=i2c)
oled=ssd1306.SSD1306_I2C(128,64,i2c)
oled.text("BME280 TPH meter",0,0)
oled.text("T : C",8,16)
oled.text("P : hPa",8,32)
oled.text("H : %",8,47)
oled.show()
old_ti=0
old_pi=0
old_hi=0
def TPH_disp():
global ti,pi,hi
global old_ti,old_pi,old_hi
if ti != old_ti:
oled.fill_rect(48,16,24,8,0)
oled.show()
oled.text(str(ti),48,16)
oled.show()
old_ti = ti
if pi != old_pi:
oled.fill_rect(40,32,32,8,0)
oled.show()
oled.text(str(pi),40,32)
oled.show()
old_pi = pi
if hi != old_hi:
oled.fill_rect(48,48,24,8,0)
oled.show()
oled.text(str(hi),48,48)
oled.show()
old_hi = hi
while True:
#補正された温度t・気圧p・湿度hデータを読み込む
t,p,h=bme.read_compensated_data()
ti=int(t/100 + 0.5)
p=p//256
pi=int(p/100 + 0.5)
hi=int(h/1024 + 0.5)
TPH_disp()#t,p,hを表示
utime.sleep(5)#5sec待つ
--------------------------------------------------------------------------------------
ブレッドボードです。
測定値を市販の温度・湿度計の値と比べてみました。温度、湿度ともほぼ同じ値を示しました。
※コメント投稿者のブログIDはブログ作成者のみに通知されます