JH7UBCブログ

アマチュア無線 電子工作 家庭菜園など趣味のブログです

Raspberry Pi Pico MicroPython BME280 温度・気圧・湿度計

2021-11-30 10:23:05 | Raspberry Pi Pico
  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待つ

--------------------------------------------------------------------------------------
 ブレッドボードです。

 測定値を市販の温度・湿度計の値と比べてみました。温度、湿度ともほぼ同じ値を示しました。

 

最新の画像もっと見る

コメントを投稿