M5StackとENV IIIセンサーを使用した環境快適度予測システムです。TensorFlow Liteを使用してエッジデバイスで機械学習モデルを実行し、温度・湿度・気圧から不快指数(THI)を予測します。
- センサー: SHT3X (温湿度), QMP6988 (気圧)
- デバイス: M5Stack Core
- ML Framework: TensorFlow Lite for Microcontrollers
- データ保存: Ambient IoTクラウド
- モデル更新: OTA (Over-The-Air) via WiFi
- M5Stack Core (ESP32ベース)
- ENV III Unit (SHT3X + QMP6988)
- USB Type-Cケーブル
- Arduino IDE 1.8.x または 2.x
- ESP32ボードマネージャー
pip install numpy pandas matplotlib tensorflow scikit-learn ambient requests scheduleArduino IDEで以下を設定:
ファイル→環境設定- 追加のボードマネージャーURL:
https://dl.espressif.com/dl/package_esp32_index.json ツール→ボード→ボードマネージャー- "ESP32" を検索してインストール
スケッチ → ライブラリをインクルード → ライブラリを管理 から以下をインストール:
| ライブラリ名 | バージョン | 説明 |
|---|---|---|
| M5Stack | 最新 | M5Stack基本機能 |
| M5Unit-ENV | 最新 | ENV IIIセンサードライバ |
| Ambient ESP32 ESP8266 lib | 最新 | Ambientクラウド連携 |
| TensorFlowLite_ESP32 | 最新 | TensorFlow Lite推論エンジン |
重要: TensorFlowLite_ESP32は以下のURLから手動でインストールが必要な場合があります:
https://github.com/tanakamasayuki/TensorFlowLite_ESP32
MLOPS_M5STACK.inoと同じディレクトリに以下のファイルが必要です:
-
model.h - 初期モデルデータ
- TensorFlow Liteモデルのバイト配列
- Pythonスクリプトで生成されたモデルをC配列に変換
-
config.h (作成が必要) - 認証情報
#ifndef CONFIG_H #define CONFIG_H // WiFi設定 const char* ssid = "YOUR_WIFI_SSID"; const char* password = "YOUR_WIFI_PASSWORD"; // Ambient設定 unsigned int channelId = YOUR_CHANNEL_ID; const char* writeKey = "YOUR_WRITE_KEY"; #endif
# プロジェクトディレクトリで
cp config.h.example config.h
# config.hを編集して実際の認証情報を入力- M5StackをUSBで接続
ツール→ボード→M5Stack-Core-ESP32を選択ツール→シリアルポート→ 接続されたポートを選択ツール→Upload Speed→115200を選択スケッチ→マイコンボードに書き込む
初回書き込み時の注意:
- メモリ不足エラーが出る場合:
ツール→Partition Scheme→No OTA (Large APP)を選択
pyファイルの32行目を編集:
# Ambientクライアントの初期化
am = ambient.Ambient(
"YOUR_CHANNEL_ID",
"YOUR_WRITE_KEY",
"YOUR_READ_KEY",
"YOUR_USER_KEY"
)python mlops_training_tflite.py --mode both --ip 192.168.1.XXXpython mlops_training_tflite.py --mode trainpython mlops_training_tflite.py --mode upload --ip 192.168.1.XXX# 毎日午前3時に自動学習・アップロード
python mlops_training_tflite.py --mode both --ip 192.168.1.XXX --time 03:00| オプション | 短縮形 | 説明 | デフォルト |
|---|---|---|---|
--mode |
-m |
実行モード (train/upload/both) | both |
--ip |
-i |
M5StackのIPアドレス | - |
--time |
-t |
定期実行時刻 (HH:MM) | 03:00 |
--model-file |
-f |
アップロードするモデルファイル | 最新を自動検出 |
M5Stackが表示するIPアドレスにブラウザでアクセス:
http://192.168.1.XXX/
モデルの手動アップロード:
http://192.168.1.XXX/upload
.
├── MLOPS_M5STACK.ino # M5Stack メインプログラム
├── config.h # 認証情報 (gitignore対象)
├── config.h.example # 設定ファイルのテンプレート
├── model.h # 初期モデルデータ
├── mlops_training_tflite.py # 学習・アップロードスクリプト
├── models/ # 学習済みモデル保存ディレクトリ
│ └── YYYYMMDD/
│ ├── model_weight_YYYYMMDD.tflite
│ ├── model_weight_YYYYMMDD.keras
│ └── learning_curve_YYYYMMDD.png
└── README.md
エラー: "Sketch too big"
- 解決:
ツール→Partition Scheme→No OTA (Large APP)
エラー: "A fatal error occurred: MD5 of file does not match"
- 解決: ボードを再接続し、リセットボタンを押しながら書き込み
- SSIDとパスワードが正しいか確認
- 2.4GHz WiFiを使用しているか確認 (5GHzは非対応)
- ボタンCでWiFi再接続を試行
- M5StackのIPアドレスが正しいか確認
- M5StackとPCが同じネットワークにいるか確認
- ファイアウォール設定を確認