SCSK いわいです。
前回からだいぶ間が空いてしまいましたが、今回はRaspberry Pi 5で気温/気圧/湿度センサーを使って測定し、
Webで表示するシステムを構築したいと思います。
DBに取得データを格納し、あとから検索できるといろいろ便利です。
今回は前回セットアップした環境をそのまま流用します。(Rapspberry Pi5のみ)
下準備
使用するRaspberry Piは前回同様に以下のものです。
【Raspberry Pi 5】
CPU: Broadcom BCM2712 quad-core Arm Cortex A76 processor @ 2.4GHz
Memory: 8GB
OS: Bookworm
前回同様にflaskを利用してWeb画面に測定結果を表示、DBから過去の測定結果を表示できるシステムを組んでみます。
【追加で用意するもの】
温湿度・気圧センサーモジュールキット(BME280使用)
ジャンパーケーブル×5
ブレッドボード×1
Webサーバアクセス用PC
システムのイメージ
PythonでFlaskアプリケーションを作成します。今回はWeb画面に測定結果をグラフ表示するようにしてみます。
さらにDB(sqlite3)を使用して、センサーでの測定結果をローカルDB(bme280_data.db)に格納し、
過去のデータを検索できるようにします。
イメージはこんなカンジで。
今回のシステムで導入する機能と各ライブラリの説明は以下のとおりです。
| 機能 | ライブラリ | 説明 |
|---|---|---|
| Webサーバ | Flask | 軽量なWebフレームワーク。センサー値や予測結果をWebアプリとしてブラウザに表示。 |
| センサー通信 | Smbus2 | ラズパイとI2C通信する。BME280と通信するために利用。 |
| bme280 | Bosch製の温湿度・気圧センサー BME280用のPythonライブラリ。データ取得する。 | |
| データ保存 | sqlite3 | 軽量な組み込み型データベースSQLiteを操作するためのライブラリ。計測データをローカルDBに保存・検索するために利用。 |
| 時刻処理 | datetime | 計測時刻の記録に利用。ローカルDBに保存するtimestampを生成。 |
Flaskとsmbus2とbme280は前回導入済み、sqlite3とdatetimeはデフォルトでインストールされているライブラリです。
温湿度・気圧センサーモジュールキットとRaspberry Piを接続する
前回同様にブレッドボードに温湿度・気圧センサーモジュールキットを接続します。
※BME280のSDOもRaspberry Piの6ピンに接続します。
次に回路とRaspberry Pi 5を接続します。
| センサ側 | Raspberry Pi 5 |
|---|---|
| BME280 VDD | 3.3V:1ピン |
| BME280 GND | GND:9ピン |
| BME280 SDI | GPIO2(SDA):3ピン |
| BME280 SDO | GND:6ピン |
| BME280 SCK | GPIO3(SDL):5ピン |
【Raspberry Pi 5のピン配置】
Raspberry Pi 5 Pinouts including GPIO for the 40 Pin Header – element14 Community
接続が終わったら、以下のコマンドを実行します。
| sudo i2cdetect -y 1 |
実行結果に「76」という表記があれば、正常に接続できています。
Pythonスクリプトの作成
ファイル名はtemp_DB.pyにしてみました。
ChatGPTを利用してPythonスクリプトを作りました。
Pythonスクリプトで実行していることは以下です。
-
センサーからデータを読む
BME280から温度・湿度・気圧の最新値を取得します。 -
データを保存する
取得した値を毎回データベース(SQLite)に記録していきます。 -
Webページで表示する
FlaskでWebページを作り、以下を表示します。- 最新の値(温度・湿度・気圧)
- データをグラフ化したもの
- 期間や間隔を指定した検索グラフ
-
2秒ごとに自動更新
ブラウザは2秒ごとに新しい測定値を取りに行き、自動でグラフや数値を更新します。 - データ検索
期間と間隔を指定して、過去データをまとめてグラフ表示します。
Pythonスクリプトの実行
次に各Raspberry PiでWebサーバを起動します。
| python3 temp_DB.py |
Webブラウザからアクセス
Webサイトアクセス用PCでブラウザを起動し、以下のURLにアクセスします。
| http://Raspberry Pi 5のIPアドレス:5000 |
センサーが稼働し、2秒ごとに現在の「温度」「気圧」「湿度」が表示されます。
画面右側では2秒ごとに「温度」「気圧」「湿度」のグラフが表示されます。
画面下側では過去データの検索結果を表示します。
これで乾燥対策もばっちりです。
次はDBに格納したデータを使っていろいろ試してみたいと思います。







