先日、M5StickCとGPSユニットをつないで、緯度、経度が測定できることを確認しました(記事は こちら)が、緯度と経度が分かるようになると、現在地の位置情報を地図上に表示したくなります。
位置情報を地図上に表示する方法を少し調べてみたところ、「Ambient」というWebサービスを使うのが非常に簡単なようです。
Ambientは、IoTデータを可視化するためのWebサービスで、マイコンなどから送られたセンサーデータを、簡単に受信・蓄積・可視化(グラフ化)できます。また、センサ端末の台数やデータ数の制限はあるようですが、無料で利用できます。
色々なIoTシステムを実現する上で便利そうなので、今回はAmbientの導入方法を確認しようと思います。
まずは、Ambientのユーザ登録を行います。
- Ambientのホームページ(https://ambidata.io)にアクセスします。
- 「ユーザー登録(無料)」をクリックします。
- メールアドレスとパスワードを入力して「ユーザー登録(無料)」をクリックします。
- 設定したメールアドレスに確認メールが届くので、記載されているURLにアクセスします。これで登録が完了します。
- 「ログイン」をクリックします。
- 「チャネルを作る」をクリックします。
- 新しいチャネルが追加されました。これで、Ambientにデータを送る準備ができました。
次に、Ambientにデータを送るための、M5StickC用のスケッチを準備します。
まずは、Arduino IDEに「Ambientライブラリ」をインストールします。
- Githubの「Ambientライブラリ」ページ(https://github.com/AmbientDataInc/Ambient_ESP8266_lib)にアクセスします。
- 「Clone or download」>「Download ZIP」をクリックします。
- Arduino IDEを起動します。「スケッチ」>「ライブラリをインクルード」>「.ZIP形式のライブラリをインストール…」をクリックし、ダウンロードしたZIPファイルを選択します。
- もう一度「スケッチ」>「ライブラリをインクルード」を選択します。「Ambient ESP32 ESP8266 lib」があれば、正常にインストールできています。
M5StickC用のスケッチを作成します。今回はセンサは使わず、以下のようなスケッチを準備しました。一定時間毎に、1ずつカウントアップしたデータを送信するだけのものです。
「ssid」と「password」には、お使いのWi-Fiネットワークの情報を、「channelId」と「writeKey」には、先ほど作ったAmbientチャネルの情報を書き込みます。
#include <M5StickC.h> #include "Ambient.h" WiFiClient client; Ambient ambient; const char* ssid = "XXXXXXXX"; const char* password = "XXXXXXXX"; unsigned int channelId = XXXXX; const char* writeKey = "XXXXXXXX"; int cnt=0; void setup() { M5.begin(); M5.Lcd.setRotation(3); M5.Lcd.setCursor(0, 0, 2); WiFi.begin(ssid, password); while(WiFi.status()!=WL_CONNECTED) { delay(500); M5.Lcd.print("."); } M5.Lcd.print("\r\nWiFi connected\r\nIP address: "); M5.Lcd.println(WiFi.localIP()); ambient.begin(channelId, writeKey, &client); } void loop() { ambient.set(1, cnt++); ambient.send(); M5.Lcd.setCursor(0, 0, 2); M5.Lcd.printf("%d\n",cnt); delay(5000); }
M5StickCにスケッチを書き込み、しばらく待ちます。その後、Ambientページの「チャネル名」欄の、該当するチャネル名をクリックすると、送信データのグラフが表示されます(今回はスケッチの再書き込みを行ったため、データが一旦ゼロに戻って、再度カウントアップしています)。
とても簡単にIoTデータのグラフ化ができました。
最近、設備の稼働状態を表示するためのグラフ形式もリリースされたようで、工場などでの現実的な用途にも活用できそうです。