手持ちセンサー全部盛りの欲張りセットで測定値をAzure IoTに送信しようと思う。
そこで
CO2センサー(SCD30)を接続したM5Stackで測定値を記録して毎週の変化をグラフで見てみる。
のときに書いたソフトウェアを BME280 / SGP30 / SCD30 / ENV.III unit / SCD41に対応するようにほぼ全部書き換えた。
用意するもの
M5Stack Core2 for AWSを用意できればそれを使えばいいと思うよ。
あのとき売り切れだったからM5Stack Core2とM5GO Bottom2を組み合わせただけなので。
- M5Stack Core2 IoT開発キット
- M5GO Bottom2 - M5Stack Core2用バッテリーボトム
- この時のセンサー。中身はこれ BME280搭載 温湿度・気圧センサモジュール
- TVOC/eCO2 ガスセンサユニット(SGP30)
- Grove - SCD30搭載 CO2・温湿度センサ(Arduino用)
- M5Stack用温湿度気圧センサユニット Ver.3(ENV Ⅲ)
- M5Stack用 温湿度CO2センサ(SCD41)
- Grove - I2C ハブ (6ポート)
接続
上のM5Stack UNITを見ると"I2C INTERFACE"となっていてコネクタが赤色なのでPORT.Aに全部つなぐ。
具体的にはこういうふうにM5Stack の I2CポートであるPort.Aにハブ経由で全部つなぐだけ
さすがに全部盛りだからか電源から800mAも(状況によってはおそらく1Aくらいは)ひっぱるのでそのつもりで。
GitHubリポジトリ
ENV.III unit/ SCD41を追加した。
https://github.com/ak1211/m5stack-azure-iot
VSCode + PlatformIO
できるだけ新しいC++を使いたいから皆すでにVSCode と PlatformIO の準備はできているでしょう。
しらんけど。
Azure IoT Hub
M5Stack Core2 IoT開発キットをAzure IoT Hubに接続してBME280で測定した環境のグラフをみる。
のときに準備したAzure Iot Hubと
M5Stack Core2で測定したデータをAzure Cosmos DBに蓄積してみた。
のときに準備したAzure Cosmos DBを今回も使っていきます。
デバイスの追加
Azure IoT Hub の「デバイスの追加」から「デバイスの作成」に移動してデバイスIDを入力して保存することで
このM5Stackを追加する。(実はもうあるけど気にしないで)
認証は「対象キー」で
このデバイスをIoTハブに接続する。
は「有効化」で保存する。
追加したデバイスの認証情報はこの画面にある。 「プライマリ接続文字列」または「セカンダリ接続文字列」が必要になる。
functions
Azure Cosmos DBに蓄積した時のバッチ処理に失敗していたようなので直した。
ここをManyからOneにして
関数をこうした。
|
|
この保持日数を過ぎるとIotHubにおくったメッセージが消える可能性があるので
たまにこのURLにアクセスしてfunctionsを実行してメッセージをCosmosDBに送っておく。
include/credentials.hを用意する
このファイルの以下の部分を編集してcredential.hにリネームして保存する。
- 17行目の.wifi_ssid = “WiFiアクセスポイントのSSID”;
- 18行目の.wifi_password= “WiFiアクセスポイントのパスワード”;
- 19行目の.iothub_fqdn= “接続文字列の「HostName=」から「;」まで(;を含まない)の文字列”;
- 20行目の.device_id= “追加したデバイスの名前”;
- 21行目の.device_key= “接続文字列の「SharedAccessKey=」から残り全部の文字列”; ここで設定するのは「プライマリ接続文字列」でも「セカンダリ接続文字列」のどっちでもいい。
platformIOでビルドしてM5Stackに書き込む
ビルドが問題なく終わるとUSBケーブルをつないで Upload か Upload and Monitor すればいいと思うよ。
WiFiがつながっていれば、次回からは(platformio.iniを編集する必要があるが) Over The Air アップデートできる(だいたいOTAの方が早い。WiFiの速度だし)。
グラフ化
test/にplot_db.pyをおいているので
|
|
でグラフ化できる。
CosmosDBのURIとCosmosDBのキーはこの画面にある。
1週間分のグラフ
ソフトのバグを修正したので, データが欠落しないようになった。
M5ENV.Ⅲ UnitのSHT30とBME280はほぼ同じ温度と湿度と気圧。
SCD41はそれより温度が高めになる
SCD30はさらに温度が高めになる
SCD41とSCD30のCO2はほぼ一致する。
SGP30のequivalent CO2は何を測定しているんだ?
実行
こんな感じになる。 タッチスクリーンを使うとスマホみたいなUIになるね。