先日、ATOM Liteの環境構築、および動作確認を行いました(記事は こちら)。
それでは早速、スケッチをつくってみたいと思います。
ATOM Liteは、安価なIoTデバイスとして使いたいと考えているので、ATOM Liteにセンサをつなぎ、データを採取してみることにします。
今回は、ATOM Liteに「M5Stack用環境センサユニット」をつなぎ、温度と湿度を採取します。
Arduino IDEで、「ファイル」>「スケッチ例」>「M5StickC」>「Unit」>「ENV」を開き、ATOM Lite向けに修正します。
修正項目は以下のとおりです。
- ATOM用ライブラリをインクルード
- I2Cのためのポート番号を変更
- 今回は、温度と湿度のみを採取するので、気圧採取のための記述を削除
- LCDに採取データを表示できない代わりに、データ採取時にLEDを点灯
#include "M5Atom.h"
#include "DHT12.h"
#include <Wire.h>
DHT12 dht12;
void setup() {
M5.begin(true, false, true);
delay(50);
M5.dis.drawpix(0, 0xf00000);
Wire.begin(26, 32, 100000);
}
void loop() {
M5.dis.drawpix(0, 0x00f000);
float tmp = dht12.readTemperature();
float hum = dht12.readHumidity();
Serial.printf("Temp: %2.2f*C Humi: %0.2f%%\r\n", tmp, hum);
delay(100);
M5.dis.drawpix(0, 0xf00000);
delay(900);
}
動作結果は以下のとおりです。
1秒毎に、ATOM LiteのLEDが緑から赤に変わり、シリアルモニタに、温度と湿度が表示されます。
次に、ATOM LiteをWi-Fiにつなぎ、採取したデータをクラウドに送りたいと思います。
AmbientというWebサービスを使います。Ambientでは、マイコンなどから送られたセンサデータを、簡単に受信・蓄積・可視化(グラフ化)することができます(Ambientについては こちら)。
スケッチは以下のとおりです。
#include "M5Atom.h"
#include "DHT12.h"
#include <Wire.h>
#include "Ambient.h"
DHT12 dht12;
WiFiClient client;
Ambient ambient;
const char* ssid = "XXXXXXXX";
const char* password = "XXXXXXXX";
unsigned int channelId = XXXXX;
const char* writeKey = "XXXXXXXX";
void setup() {
M5.begin(true, false, true);
delay(50);
M5.dis.drawpix(0, 0xf00000);
Wire.begin(26, 32, 100000);
WiFi.begin(ssid, password);
while(WiFi.status()!=WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.print("\r\nWiFi connected\r\nIP address: ");
Serial.println(WiFi.localIP());
ambient.begin(channelId, writeKey, &client);
}
void loop() {
M5.dis.drawpix(0, 0x00f000);
float tmp = dht12.readTemperature();
float hum = dht12.readHumidity();
Serial.printf("Temp: %2.2f*C Humi: %0.2f%%\r\n", tmp, hum);
ambient.set(1, tmp);
ambient.set(2, hum);
ambient.send();
delay(100);
M5.dis.drawpix(0, 0xf00000);
delay(9900);
}
ATOM Liteにスケッチを書き込み、しばらくたってから、Ambientでデータをグラフ表示してみます。
途中でしばらく、環境センサユニットを握っていたので、その期間だけ、温度、湿度とも、急激に上昇しています。
非常に簡単に、IoTデバイスが実現できました。
データ観測場所に置きっぱなしになるIoTデバイスは、表示機能が不要なケースも多いので、ATOM Liteは安価なデバイスとして、さまざまな用途が考えられそうです。
なお、私がM5Stack、M5StickCの使い方を習得するのにあたっては、以下の書籍を参考にさせていただきました。
ごく基本的なところから、かなり複雑なスケッチや、ネットワーク接続など、比較的高度なものまで、つまづかずに読み進めていけるような構成になっており、大変わかりやすい本です。