先日wio-terminal + M5Stack ENV Unitで温度測定してnode-red経由でAlexaに喋らせる実験をしたが冷静に考えると温度測定はArduino nano/Unoレベルでも余裕で処理可能な内容なので最近人気が出つつ有るSeeed XIAOに移植してみた。XIAOはモジュールなのでGroveデバイスを接続するには工作が必要だが幸いXIAO用のシールド(というかGroveコネクタ接続用ベースボード)ともう少し本格的な拡張ボードが販売されており国内でもスイッチサイエンス/秋月/マルツ?等で容易に入手出来る。
Seeeduino XIAO Groveシールド - スイッチサイエンス
本体より高い事実上のコネクタボードに金払うのはどうかとも考えたが最近ハンダゴテ探すのも面倒臭い病でXIAOもピン半田付けバージョンを併せて購入してXIAOをシールドに載せてGroveセンサ(今回はDHT12温湿度センサ)を接続すれば作業は完了する。
シールドといっても単なるコネクタボードだから当然裸基板である。なので実用にするにはカバーなりケースなりが必要だろうが物が小さいので紙箱でも良いのではと思えてくる。
・arduinoのプログラム
wio-terminalから表示部分を取り除きシリアル通信モニタ用にLEDをシリアル処理中は点灯するようにした。なので温度測定中は青LEDが点灯する。
/*
20210505 : Wio terminal + M5Stack ENV Unit(DHT12 only)
20210509 : append alexa interface with serial
29210516 : modify to xiao
*/
#include "DHT12.h"
#include <Wire.h> //The DHT12 uses I2C comunication.
#include "Adafruit_Sensor.h"
DHT12 dht12; //Preset scale CELSIUS and ID 0x5c.
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
Wire.begin();
//Serial.println(F("ENV Unit(DHT12 and BMP280) test..."));
}
void loop() {
float tmp = dht12.readTemperature();
float hum = dht12.readHumidity();
if (Serial.available() > 0) {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
String data = Serial.readStringUntil('\n');
Serial.printf("%2.2f\r\n", tmp);
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
}
delay(1000);
}
インデント滅茶苦茶だけど加工面倒臭いのでご容赦。
・シリアル処理中(=温度測定中)は先述の通り青LEDが点灯する。こういった細かい処がSeeedは意外と丁寧でアマチュアが勢いで作ったようなベンチャー臭がしないでもない(偏見です)M5Stackと違い安心感がある。
上図の如く表示はLEDだけなので当然温度は表示されないがIoT(笑)とはそういうものなのではと思ったりもする。
・まとめ
・wio-terminal + M5Stack ENV UnitをXIAO + Groveシールドにダウンサイジング?した。
・修正内容は表示部分除去とシリアル処理時のLED点灯/滅灯処理のみ。
arduinoをはじめようのチュートリアル3章目ぐらいに出てきそうなお題ではあるがすんなり動いてくれるのは有り難い。