見出し画像

LCDが無いなら無線で飛ばせば良いじゃない ~ M5AtomでAmbientしてみる

タイトルのまんまですw

↑いちおうこれの続きです~。

このM5AtomさんはLCDが付いていないので、LEDマトリクスの光でなんとか情報を表すしかないのですが、そこはそれ、腐っても(腐ってない)M5系ですから、最初からWiFiが搭載されています。

じゃあそれでデータを母艦におくってーって誰でも思うところ。でも、母艦PC側にサーバーを立ち上げておかないといけないので、それもまた面倒くさいなぁー。

なにか良いほうほうないもんでしょうかねーって探してみたら、ちょうどよいのがありました。

Ambient

画像1

↑これ。そのまま絵で詳しく説明してくれてます。マイコン(今回はM5Atom)につないだセンサーの情報を、インターネットでAmbientサーバーへ送り込んで、そこでグラフにしたり可視化してくれるってわけです。

しかも今なら無料!(いつでも、です。8チャンネル以上使うと有料みたいw)

面倒くさいところはもうあるサービス使っちゃいましょう。これでやってみます。

使い方

つかいかたはかんたん!

って、サイトにも書いてありますw

画像2

ほらねw

Ambientのトップページから↑のユーザー登録をして

↑のチュートリアルに従って、チャネルを作成して、キーを表示させるところまでやってみます。(何度でも出せるので使うときにコピペすればOK)

画像3

チャネルを作成するとこんなかんじの画面になるはず。(チャネル名は最初チャネル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!

画像4

↑これはもうインストールしちゃったあと。

これを入れると、

サンプルスケッチ

画像5

ファイルー>「スケッチ例」に、「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のページを開き、先ほど作ったチャネルをクリックしてみます。

すると、

画像6

じゃん!

ばっちり拾えていますね!

これ、青いのがCo2で、赤いのがTVOCなのですが、そっくり同じに見えます……。

重ねてみると(こういうこともAmbient上で簡単にできます)

画像7

こんなかんじ。ほっとんど同じですねぇ。これでいいのかなー?(もともとこのセンサーは直接CO2を計っているわけではなくてTVOCから推定しているようなので、これでいいの、かも? (詳しくはわかりません><)

ともあれ、こんなに簡単にクラウドでデータを可視化できちゃうわけですね。しかも無料なんて、なかなか便利そう~。

これなら、表示部がないマイコンでもいけますね! 実際、M5シリーズにも

こんなただ一個しかLEDのない(通称カオナシ!?)ヤツもいるので、そういう子でやってみることもできちゃいそうです。

※ていうかもともとESP32自体にはLCDなんてついていなくて、ESP32に画面とかボタンとかつけてパッケージにしたのがM5シリーズらしいんですけどねw

ご注意:Ambientは5秒おきにしかデータを送れないので、ループは5秒以上開けて回すようにしましょうー。

とゆーわけで、なかなか便利そうなサービスのご紹介でした! こういう可視化部分って格好よく自分でつくろうとするとけっこう大変なところなので、とってもありがたやですねー☆

#M5Stack #可視化 #クラウド #M5Atom #Ambient

よろしければサポートお願いします!いただいたサポートはクリエイターとしての活動費にさせていただきます!感謝!,,Ծ‸Ծ,,