Raspberry Piで気温/気圧/湿度計測 結果をWebサーバで見てみよう

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スクリプトで実行していることは以下です。

  1. センサーからデータを読む
    BME280から温度・湿度・気圧の最新値を取得します。

  2. データを保存する
    取得した値を毎回データベース(SQLite)に記録していきます。

  3. Webページで表示する
    FlaskでWebページを作り、以下を表示します。

    • 最新の値(温度・湿度・気圧)
    • データをグラフ化したもの
    • 期間や間隔を指定した検索グラフ

     

  4. 2秒ごとに自動更新
    ブラウザは2秒ごとに新しい測定値を取りに行き、自動でグラフや数値を更新します。

  5. データ検索
    期間と間隔を指定して、過去データをまとめてグラフ表示します。

Pythonスクリプトの実行

次に各Raspberry PiでWebサーバを起動します。

python3 temp_DB.py

 

Webブラウザからアクセス

Webサイトアクセス用PCでブラウザを起動し、以下のURLにアクセスします。

http://Raspberry Pi 5のIPアドレス:5000

センサーが稼働し、2秒ごとに現在の「温度」「気圧」「湿度」が表示されます。
画面右側では2秒ごとに「温度」「気圧」「湿度」のグラフが表示されます。

画面下側では過去データの検索結果を表示します。
これで乾燥対策もばっちりです。

次はDBに格納したデータを使っていろいろ試してみたいと思います。

著者について

インフラPL/PMを担当しています。

いわいをフォローする

クラウドに強いによるエンジニアブログです。

SCSKでは、自社クラウドと3大メガクラウドの強みを活かし、ハイブリッドクラウド/マルチクラウドのソリューションを展開しています。業界の深い理解をもとに、お客様の業務要件に最適なアーキテクチャをご提案いたします。サービスサイトでは、お客様のDX推進をワンストップで支援するサービスの詳細や導入事例を紹介しています。

その他技術ナレッジ
シェアする
タイトルとURLをコピーしました