Wio LTE 進捗をLEDで表現してみた
シリアルモニタを使用して起動ログやエラーログするのって
めんどくさいですよね。
簡易的であれば
「LedSetRGB」を使用するといいと思います。
起動時:緑
通信時:青
LTE再起動:赤
あとは接点信号をSORACOM Harvestへ送信
所感:
LCDなどの表示を実装せずに監視だけする場合、
内部エラーが出ていることを赤LEDで表示するだけでも
運用が楽になると思います。
端末側(エッジ側で処理させる)、
エッジコンピュータですね
プログラムソース----------
#include <WioLTEforArduino.h>
#include <stdio.h>
#define BUTTON_PIN (WIOLTE_D38)
#define INTERVAL (100)
WioLTE Wio;
int buttonPush = 0;
int loopCnt = 0;
int ordSte = 0;
int CntInit = 0;
int loopCntReBoot = 0;
void setup() {
delay(200);
SerialUSB.println("");
SerialUSB.println("--- START ---------------------------------------------------");
SerialUSB.println("### I/O Initialize.");
Wio.Init();
//緑色LED点灯
Wio.LedSetRGB(0, 100, 0);
SerialUSB.println("### Power supply ON.");
Wio.PowerSupplyLTE(true);
//LTEモジュールの操作は0.5秒以上待ってください。(LTEモジュールの動作が安定するまで待つ。)
//念の為5秒まつ
delay(5000);
SerialUSB.println("### Turn on or reset.");
if (!Wio.TurnOnOrReset()) {
SerialUSB.println("### ERROR! ###");
return;
}
SerialUSB.println("### Connecting to \"soracom.io\".");
if (!Wio.Activate("soracom.io", "sora", "sora")) {
SerialUSB.println("### ERROR! ###");
return;
}
pinMode(BUTTON_PIN, INPUT);
SerialUSB.println("### Setup completed.");
//LED消灯
Wio.LedSetRGB(0, 0, 0);
}
void loop() {
char data[100];
int connectId;
int buttonState;
SerialUSB.println("Current humidity = ");
buttonState = digitalRead(BUTTON_PIN);
SerialUSB.print("CntInit比較 ");
SerialUSB.println(CntInit);
if (CntInit == 0) {
ordSte = buttonState;
buttonPush = buttonPush + buttonState;
CntInit = 1;
SerialUSB.print("CntInit ");
SerialUSB.println(CntInit);
} else {
if (buttonState == ordSte) {
SerialUSB.println("AAA");
} else {
buttonPush = buttonPush + buttonState;
ordSte = buttonState;
SerialUSB.println("BBB");
}
}
SerialUSB.println(buttonState ? '*' : '.');
SerialUSB.println(buttonPush);
SerialUSB.print("loopCnt : ");
SerialUSB.println(loopCnt++);
if (loopCnt == 30 ) {
sprintf(data, "{\"Cnt\":%lu}", buttonPush);
SerialUSB.println("### Open.");
//送信するときに青LED点灯
Wio.LedSetRGB(0, 0, 100);
connectId = Wio.SocketOpen("harvest.soracom.io", 8514, WIOLTE_UDP);
if (connectId < 0) {
goto err_close;
}
SerialUSB.println("### Send.");
SerialUSB.print("Send:");
SerialUSB.print(data);
SerialUSB.println("");
if (!Wio.SocketSend(connectId, data)) {
SerialUSB.println("### ERROR! ###");
goto err_close;
}
SerialUSB.println("### Receive.");
int length;
do {
length = Wio.SocketReceive(connectId, data, sizeof (data));
if (length < 0) {
SerialUSB.println("### ERROR! ###");
goto err_close;
}
} while (length == 0);
SerialUSB.print("Receive:");
SerialUSB.print(data);
SerialUSB.println("");
//LED消灯
Wio.LedSetRGB(0, 0, 0);
err_close:
SerialUSB.println("### Close.");
if (!Wio.SocketClose(connectId)) {
SerialUSB.println("### ERROR! ###");
buttonPush = 0;
loopCnt = 0;
goto err;
}
/////////////////
//5回後リブートする
SerialUSB.print("loopCntReBoot : ");
SerialUSB.println(loopCntReBoot++);
if (loopCntReBoot > 5) {
//LED消灯
Wio.LedSetRGB(0, 0, 0);
delay(200);
SerialUSB.println("");
SerialUSB.println("--- START ---------------------------------------------------");
SerialUSB.println("### I/O Initialize.");
//Wio再起動
Wio.Init();
//赤LED点灯
Wio.LedSetRGB(204, 0, 0);
SerialUSB.println("### Power supply OFF.");
Wio.PowerSupplyLTE(false);
//念の為5秒待つ
delay(5000);
SerialUSB.println("### Power supply ON.");
Wio.PowerSupplyLTE(true);
//LTEモジュールの操作は0.5秒以上待ってください。(LTEモジュールの動作が安定するまで待つ。)
//念の為5秒待つ
delay(5000);
SerialUSB.println("### Turn on or reset.");
if (!Wio.TurnOnOrReset()) {
SerialUSB.println("### ERROR! ###");
return;
}
SerialUSB.println("### Connecting to \"soracom.io\".");
if (!Wio.Activate("soracom.io", "sora", "sora")) {
SerialUSB.println("### ERROR! ###");
return;
}
pinMode(BUTTON_PIN, INPUT);
SerialUSB.println("### Setup completed.");
//LED消灯
Wio.LedSetRGB(0, 0, 0);
loopCntReBoot = 0;
}
/////////////////
//カウンタリセット
buttonPush = 0;
loopCnt = 0;
}
err:
delay(INTERVAL);
}
----------プログラムソース of END
※2018.06.24 プログラム修正