Raspberry Pi Pico W に BME280(温度・湿度・気圧センサー)と OLED(SSD1306) を I²C でつなぎ、センサーで測った値をLCDに表示します。
測定したデータはリアルタイムに画面に表示され、室内の環境の変化がすぐにわかるようになります。
1. 配線
両方とも I²C を使うので、SDA と SCL の 2 本を共通でつなぎます。
2. ライブラリのインストール(Thonny)
Pico W を PC に接続し、Thonny を開きます。
メニュー [ツール] → [パッケージを管理..] をクリック。
OLED 用ライブラリ
検索窓に
ssd1306と入力 →micropython-ssd1306を選び Install。
(詳しい手順や日本語解説は、前回の記事を参考にしてください)
BME280 用ライブラリ
検索窓に
bme280と入力 →micropython-bme280を選び Install。
(詳しい手順や日本語解説は、前回の記事を参考にしてください)
インストールできたか確認する方法
Thonny の REPL でimport ssd1306, bme280と打ってエラーが出なければ OK。
3.ソースコード
処理の流れ
🛠 ライブラリ読み込み
machine.I2C,bme280,ssd1306,utimeをインポート🔌 I²C バス初期化
I²C0 を SDA=GP16, SCL=GP17, 400 kHz で開始📟 デバイス生成
bme = BME280(i2c)… BME280 センサーoled = SSD1306_I2C(128, 64, i2c)… 128×64 OLED
🖼 固定ヘッダ描画
タイトルと “T / P / H” のラベルをあらかじめ表示 →oled.show()🧮 前回値の初期化
old_ti,old_pi,old_hiを 0 にセット
メインループ(while True:)
🌡 センサー読み取り
t_raw, p_raw, h_raw = bme.read_compensated_data()🔢 単位変換 & 四捨五入
温度
ti = int(t_raw / 100 + 0.5)(°C)気圧
pi = int((p_raw // 256) / 100 + 0.5)(hPa)湿度
hi = int(h_raw / 1024 + 0.5)(%RH)
👁
TPH_disp()で差分更新✏️ 温度が変われば数値部を再描画
🌀 気圧が変われば数値部を再描画
💧 湿度が変われば数値部を再描画
いずれもoled.fill_rect()で旧値を消してから新値を描画
⏸ ウェイト
utime.sleep(5)で 5 秒待機 → ① に戻る
0 件のコメント:
コメントを投稿