![見出し画像](https://assets.st-note.com/production/uploads/images/44282613/rectangle_large_type_2_e2717df96cc92c292f90a3c15fe989d4.png?width=1200)
LCDが無いなら無線で飛ばせば良いじゃない ~ M5AtomでAmbientしてみる
タイトルのまんまですw
↑いちおうこれの続きです~。
このM5AtomさんはLCDが付いていないので、LEDマトリクスの光でなんとか情報を表すしかないのですが、そこはそれ、腐っても(腐ってない)M5系ですから、最初からWiFiが搭載されています。
じゃあそれでデータを母艦におくってーって誰でも思うところ。でも、母艦PC側にサーバーを立ち上げておかないといけないので、それもまた面倒くさいなぁー。
なにか良いほうほうないもんでしょうかねーって探してみたら、ちょうどよいのがありました。
Ambient
↑これ。そのまま絵で詳しく説明してくれてます。マイコン(今回はM5Atom)につないだセンサーの情報を、インターネットでAmbientサーバーへ送り込んで、そこでグラフにしたり可視化してくれるってわけです。
しかも今なら無料!(いつでも、です。8チャンネル以上使うと有料みたいw)
面倒くさいところはもうあるサービス使っちゃいましょう。これでやってみます。
使い方
つかいかたはかんたん!
って、サイトにも書いてありますw
ほらねw
Ambientのトップページから↑のユーザー登録をして
↑のチュートリアルに従って、チャネルを作成して、キーを表示させるところまでやってみます。(何度でも出せるので使うときにコピペすればOK)
チャネルを作成するとこんなかんじの画面になるはず。(チャネル名は最初チャネルIDと同じものになっていますが後で変えられます)
プログラムいじるよ
マイコン側(M5Atom側)のプログラミングをいじります。
チュートリアルのドキュメントを見ると、基本的に
WiFiにつながったら
ambient.begin(channelId, writeKey, &client);
でAmbientの初期設定をして(channelId と writeKey はそれぞれさっきWebで表示させたIDとキーのことですね。)、
データーを送るときは、
ambient.set(1, temp);
ambient.set(2, humid);
で送りたいデータをセットして、
ambient.send();
で送る。というだけのようです。ほんとにめっちゃかんたん!
ライブラリとか
AmbientのESP32(M5シリーズの脳みそチップです)のライブラリなどは
で公開されていますが、AruduinoIDEでフツーに入れることができます。
Arduino IDEを立ち上げて、「ツール」メニューの→「ライブラリを管理…」でライブラリマネージャを立ち上げて、検索窓に「ambient」と入力して、表示された「Ambient ESP32 ESP8266 lib」をインストールすればOK!
↑これはもうインストールしちゃったあと。
これを入れると、
サンプルスケッチ
ファイルー>「スケッチ例」に、「Ambient ESP32 ESP8266 lib」 というのが出てきます。
その中を見ると「M5Stack_ESP32」って最初からはいってるじゃないですかー!
これはありがたいですねw BME280とかのセンサーを使っているなら、そのまんまこのサンプルスケッチをつかえちゃいそうです♪
とりあえず今回は違うセンサーなので、参考にしつつ、自分のソースを書き換えます。
ソース書き換え
サンプルのスケッチを開いておいて、必要なところをコピペしてくるだけなのでかなりラクチンです。
まず、最初の方に
#include "Ambient.h"
WiFiClient client;
Ambient ambient;
const char* ssid = "MySSID";
const char* password = "MyPASS";
unsigned int channelId = 100; // AmbientのチャネルID
const char* writeKey = "MyKey"; // ライトキー ※書き込むほうのキー
と入れておきます。ssidやチャンネルID、キーなどは自分のものをコピペしてね。
それから、setup()の中に、WiFiの接続と、Ambientへの設定を盛り込みます。
WiFi.begin(ssid, password); // Wi-Fi APに接続
while (WiFi.status() != WL_CONNECTED) { // Wi-Fi AP接続待ち
delay(100);
}
Serial.print("WiFi connected\r\nIP address: ");
Serial.println(WiFi.localIP());
ambient.begin(channelId, writeKey, &client); // チャネルIDとライトキーを指定してAmbientの初期化
こんなかんじ。
あとは、loop()内のセンサーのデータを読んでいるところからAmbientへおくるのを追加すればOK!
// Ambientデータセット
ambient.set(1, String(co2).c_str());
ambient.set(2, String(tvoc).c_str());
// Ambient送出
ambient.send();
こんなかんじですね♪
ここらへんを書き換えたソースをここに置いておきました
実行・結果
じゃ、実行してAmbientをひらいてみましょう!
マイコン(M5Atom)を立ち上げてからAmbientのページを開き、先ほど作ったチャネルをクリックしてみます。
すると、
じゃん!
ばっちり拾えていますね!
これ、青いのがCo2で、赤いのがTVOCなのですが、そっくり同じに見えます……。
重ねてみると(こういうこともAmbient上で簡単にできます)
こんなかんじ。ほっとんど同じですねぇ。これでいいのかなー?(もともとこのセンサーは直接CO2を計っているわけではなくてTVOCから推定しているようなので、これでいいの、かも? (詳しくはわかりません><)
ともあれ、こんなに簡単にクラウドでデータを可視化できちゃうわけですね。しかも無料なんて、なかなか便利そう~。
これなら、表示部がないマイコンでもいけますね! 実際、M5シリーズにも
こんなただ一個しかLEDのない(通称カオナシ!?)ヤツもいるので、そういう子でやってみることもできちゃいそうです。
※ていうかもともとESP32自体にはLCDなんてついていなくて、ESP32に画面とかボタンとかつけてパッケージにしたのがM5シリーズらしいんですけどねw
ご注意:Ambientは5秒おきにしかデータを送れないので、ループは5秒以上開けて回すようにしましょうー。
とゆーわけで、なかなか便利そうなサービスのご紹介でした! こういう可視化部分って格好よく自分でつくろうとするとけっこう大変なところなので、とってもありがたやですねー☆
いいなと思ったら応援しよう!
![神楽坂らせん](https://assets.st-note.com/production/uploads/images/26348/profile_1d24f04075547f14101d054656b3146a.jpg?width=600&crop=1:1,smart)