パチンコ AWS支部員 SORACOMユーザー会

ガーデン八潮実践、作ったものリスト

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 プログラム修正