気温、湿度、気圧、磁気センサの値をサーバにあげてIoT!
こんにちは!
棚の中に眠っていた、Raspberri Pi2やPi3やM5Stack、ESP等々、、、を生き返らせる試みを行っています。
眠っていたM5Stackに、各センサを接続し、気温、湿度、気圧、磁気を測定できるようにしました。
今日は、これらの値をクラウドサーバにあげてみます。
各センサ値がグラフ推移で見れるようになることが目標!
1.こんな感じ
①M5Stack起動
②気温、湿度、気圧、磁気の値を取得
③自宅Wifiに接続
④気温、湿度、気圧、磁気の値をクラウドサーバに送信
⑤5分間ディープスリープに入る
⑥5分後、起床して①へ。
を、繰り返します。
2.クラウドサーバ
IoTデータの可視化サービス Ambient にします。
https://ambidata.io/
3.プログラム作成
今回から、GitHubにプログラムを載せることにしました。
ここには、メモだけ。。。(手抜きですみません)
3.1 Wifi接続
#include <WiFi.h>として、WIFI用のAPIを使います。
※WとFは大文字だから注意!
WiFi.begin(ssid, password); で接続。
WiFi.status() が WL_CONNECTEDになればOK。
ちなみに、ssid, passwordは、const char*で定義しておけばOK。
3.2 「5分間ディープスリープ」の実装
M5.Power.deepSleep(SLEEP_MIN(5));
を呼べばディープスリープに入って5分後に起きてくれます。
3.3 Ambient にアップロード
こちら参照して作成しました。
簡単な流れは以下です。
・Ambient側
①チャネル生成
②チャネル設定メニューで、チャネル名とアップロードしたいデータ名を登録
③チャネルID、ライトキーを控えておく。
・M5Stack側
①Ambient用Arduinoライブラリ「Ambient ESP32 ESP8266 lib」をインクルード
②ambientライブラリの初期化
ambient.begin(channelId, writeKey, &client);
// チャネルIDとライトキーを指定してAmbientの初期化
※channelIdはunsigned int型
writeKeyははconst char*型
③指定番目データとして指定地をアップロードする設定をする。
(例) ambient.set(1, 123); 1番目のデータとして123をアップロードしたい
ちなみに、データ型は、int型かfloat型ならそのまま直接アップロードOK。違う型なら型変換する。
④ambient.send(); でデータ送信。
3.4 その他
その他、LCD表示等細々としたことを追加。
※プログラムはGitHubにアップしました。
良かったらどうぞ。
https://github.com/hiyashiame/emv_m5stack
4.実行結果
実行結果は以下です。
表示できたよ!