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 秒待機 → ① に戻る
コメント
コメントを投稿