Soracom

Users

スタートガイド
Home スタートガイド 開発ボード プロトタイプ向けマイコンモジュール M5Stack と 3G 拡張ボードをセットアップする Getting Started

デバイス稼働時間を SORACOM Harvest Data へ送信する

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 で利用するボードとシリアルポートを選択します。

  1. M5Stack に付属している USB Type-C ケーブルを使用して PC と接続します。

  2. Arduino IDE を起動して、[ツール][ボード][esp32][M5Stack-Core-ESP32] の順にクリックします。

  3. [ツール][ポート] の順にクリックして、通信に利用するシリアルポートを選択します。

    通信に利用するシリアルポートは、USB シリアルドライバーをインストール したときに表示されたシリアルポート (COM ポート番号または /dev/ から始まるデバイス名) です。

スケッチを作成する

  1. 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);
    }
    
  2. Arduino IDE の左上にある [] (書き込み) をクリックします。

    書き込みが完了したらスケッチが実行され、約 10 秒ごとに Harvest Data に起動時刻が送信されます。

    2021 年 5 月現在、ESP32 のボード定義をインストールする 際、「1.05」「1.06」をインストールすると、上記のスケッチ実行時に LCD に何も表示されないことが確認されています。その場合は以下のいずれかをお試しください。

    • Arduino ESP32 のボードパッケージ「1.04」をインストールする。
    • setup() 関数の先頭行の Serial.begin(115200); をコメントアウトする。
  3. ユーザーコンソールの SORACOM Harvest Data 画面を表示します。

    M5Stack が Harvest Data に送信した稼働時間が表示されます。詳しくは、Harvest Data に保存したデータを確認する を参照してください。