GY-91モジュールでRaspberry Pi上に堅牢な温度・センサーAPIを構築
Raspberry Pi上でFlask APIを作成し、GY-91マルチセンサーモジュールから温度、気圧、湿度などを読み取る方法を学びます。このガイドでは、配線、ソフトウェアセットアップ、独自プロジェクトに適応可能なサンプルコードを解説します。
GPIO経由でセンサーを接続
GY-91ボードは4ピンI²Cインターフェースを使用。以下のようにピンを接続:
- 3.3V → ピン1 (3V3POWER)
- GND → ピン6 (GROUND)
- SCL → ピン5 (I²C Clock)
- SDA → ピン3 (I²C Data)
正確なピンカラーとレイアウトについてはGY-91回路図を参照。
Python依存関係の準備
Raspberry PiにPython 3をインストール。以下のコマンドで最新3.6.xをソースからインストールし、以降のセンサーライブラリに必要なすべてのライブラリを確保。
$ sudo apt-get update
$ sudo apt-get install build-essential tk-dev libncurses5-dev libncursesw5-dev libreadline6-dev libdb5.3-dev libgdbm-dev libsqlite3-dev libssl-dev libbz2-dev libexpat1-dev liblzma-dev zlib1g-dev
$ wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz
$ tar xf Python-3.6.5.tar.xz
$ cd Python-3.6.5
$ ./configure
$ make
$ sudo make altinstall
次に、センサーデータを公開する軽量Webスタックをインストール:
$ pip3 install flask flask-cors flask-restful
サンプルコード
最小限のFlask APIスケルトンとセンサーラッパーを含むレディツーランリポジトリをクローン:
$ git clone https://gist.github.com/wdelenclos/4f0c4b8d564aa5c58f47653fd184eaa7
プログラムの核心はbme280ドライバからデータを取得し、それがGY-91ボード上のMPU9250とBMP280チップと通信。単一行で関連するすべての読み取り値を取得:
temperature, pressure, humidity = bme280.readBME280All()
他のすべてのルートは最新センサー値をJSONとして返す標準的なFlaskハンドラーです。
APIの実行
ローカルでサーバー起動:
$ python3 app.py
バックグラウンドでサービスを継続するには:
$ sudo nohup python3 app.py &
デモ
起動後、https://your-pi-ip:5000/statusにアクセスすると、センサー読み取り値のライブJSONペイロードが表示されます。元ページの例では、このエンドポイントをAjaxで取得し、Webダッシュボードに表示する方法を示しています。
追加の説明やカスタマイズが必要な場合はコメントでお気軽にどうぞ。
出典: Environmental sensor API with a RPi
製造プロセス
- センサーデータをRaspberry Piに統合:実践ガイド
- Raspberry Piでライントラッキングセンサー – シンプルなKY-033ドア/ライン検出器
- Raspberry Piと湿度センサーで作る自動エアロポニックスシステム
- Raspberry Pi GPIOマスター:PIRモーションセンサーをB+/Model 2でインターフェース
- Acconeer A111パルスレーダーをRaspberry Piと統合:実践ガイド
- Python/MicroPythonセンサーロガー:センサーデータをGoogleスプレッドシートにシームレス保存
- Raspberry Piカメラをバードハウスに設置:ステップバイステップガイド
- Arduino Portenta H7にMAX6675でサーモカップル温度センサーを接続する
- Arduino Nanoで水滴を高速撮影 – DIYハイスピードフォトグラフィ
- K30 CO2センサで室内空気質をリアルタイム監視する
- Pythonモジュールインポート完全ガイド:実例付きで徹底解説