M5Stack の稼働時間を Harvest Data に保存するサンプルスクリプトを実行します。
操作を始める前に準備が必要です (クリックして確認してください)
(1) M5Stack の開発環境を準備する
Arduino IDE 2 をインストールしたり、ボート定義やライブラリをインストールしたりします。詳しくは、M5Stack の開発環境を準備する を参照してください。
準備完了SORACOM Harvest Data の設定をする
M5Stack で利用する IoT SIM に対して、SORACOM Harvest Data を有効化します。詳しくは、Harvest Data を有効化する を参照してください。
PC と M5Stack を接続する
M5Stack を PC に接続して、Arduino IDE で利用するボードとシリアルポートを選択します。
M5Stack に付属している USB Type-C ケーブルを使用して PC と接続します。
Arduino IDE を起動して、
→ → → の順にクリックします。→ の順にクリックして、通信に利用するシリアルポートを選択します。
通信に利用するシリアルポートは、USB シリアルドライバーをインストール したときに表示されたシリアルポート (COM ポート番号または
/dev/
から始まるデバイス名) です。
スケッチを作成する
Arduino IDE に表示されているソースコードを削除して、以下のソースコードをコピー&ペーストします。
#include <M5Stack.h> #define TINY_GSM_MODEM_UBLOX #include <TinyGsmClient.h> TinyGsm modem(Serial2); /* Serial2 is Modem of 3G Module */ TinyGsmClient ctx(modem); void setup() { Serial.begin(115200); M5.begin(); M5.Lcd.clear(BLACK); M5.Lcd.setTextColor(WHITE); M5.Lcd.println(F("M5Stack + 3G Module")); M5.Lcd.print(F("modem.restart()")); Serial2.begin(115200, SERIAL_8N1, 16, 17); modem.restart(); M5.Lcd.println(F("done")); M5.Lcd.print(F("getModemInfo:")); String modemInfo = modem.getModemInfo(); M5.Lcd.println(modemInfo); M5.Lcd.print(F("waitForNetwork()")); while (!modem.waitForNetwork()) M5.Lcd.print("."); M5.Lcd.println(F("Ok")); M5.Lcd.print(F("gprsConnect(soracom.io)")); modem.gprsConnect("soracom.io", "sora", "sora"); M5.Lcd.println(F("done")); M5.Lcd.print(F("isNetworkConnected()")); while (!modem.isNetworkConnected()) M5.Lcd.print("."); M5.Lcd.println(F("Ok")); M5.Lcd.print(F("My IP addr: ")); IPAddress ipaddr = modem.localIP(); M5.Lcd.print(ipaddr); delay(2000); } void loop() { M5.update(); M5.Lcd.clear(BLACK); M5.Lcd.setCursor(0, 0); M5.Lcd.println(F("Uptime post to SORACOM Harvest")); /* HTTP GET example */ if (!ctx.connect("uni.soracom.io", 80)) { Serial.println(F("Connect failed.")); return; } Serial.println(F("connected.")); /* build payload */ char payload[1024]; sprintf(payload, "{\"uptime\":%lu}", millis() / 1000); /* send request */ ctx.println("POST / HTTP/1.1"); ctx.println("Host: uni.soracom.io"); ctx.println("Content-Type: application/json"); char content_length_hdr[32]; sprintf(content_length_hdr, "Content-Length: %lu", strlen(payload)); ctx.println(content_length_hdr); ctx.println(); ctx.println(payload); Serial.println("sent."); /* receive response */ while (ctx.connected()) { String line = ctx.readStringUntil('\n'); Serial.println(line); if (line == "\r") { Serial.println("headers received."); break; } } char buf[1 * 1024] = {0}; ctx.readBytes(buf, sizeof(buf)); /* body */ ctx.stop(); M5.Lcd.println(buf); delay(1000 * 10); }
Arduino IDE の左上にある
(書き込み) をクリックします。書き込みが完了したらスケッチが実行され、約 10 秒ごとに Harvest Data に起動時刻が送信されます。
2021 年 5 月現在、ESP32 のボード定義をインストールする 際、「1.05」「1.06」をインストールすると、上記のスケッチ実行時に LCD に何も表示されないことが確認されています。その場合は以下のいずれかをお試しください。
- Arduino ESP32 のボードパッケージ「1.04」をインストールする。
setup()
関数の先頭行のSerial.begin(115200);
をコメントアウトする。
ユーザーコンソールの SORACOM Harvest Data 画面を表示します。
M5Stack が Harvest Data に送信した稼働時間が表示されます。詳しくは、Harvest Data に保存したデータを確認する を参照してください。