M5StickCでできること 〜LCD画面に現在時刻を表示する

スポンサーリンク
お役立ち情報

M5StickCをIoTデバイスとして利用する場合、センサで各種データを採取するのと同時に、そのデータを採取した時刻も取得したいケースがあります。


そんな訳で、今回は、M5StickCからNTPサーバーに接続して、時刻情報を取得する方法を確認したいと思います。
取得した時刻情報を使って、LCD画面に現在時刻を表示させてみます。

スケッチは以下のようになります。

#include <M5StickC.h>
#include <WiFi.h>
#include "time.h"

const char* ssid     = "XXXXXXXX";
const char* password = "XXXXXXXX";

void setup() {
  M5.begin();
  M5.Lcd.setRotation(3);
  M5.Lcd.setCursor(0, 0, 2);

  M5.Lcd.printf("Connecting to %s ", ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    M5.Lcd.print(".");
  }
  M5.Lcd.println(" CONNECTED");

  configTime(9 * 3600, 0, "ntp.nict.jp"); // Set ntp time to local
}

void loop() {
  struct tm timeInfo;
  getLocalTime(&timeInfo);

  char now[20];
  sprintf(now, "%04d/%02d/%02d %02d:%02d:%02d",
    timeInfo.tm_year + 1900,
    timeInfo.tm_mon + 1,
    timeInfo.tm_mday,
    timeInfo.tm_hour,
    timeInfo.tm_min,
    timeInfo.tm_sec
  );

  M5.Lcd.fillScreen(BLACK);
  M5.Lcd.setCursor(0, 0, 2);
  M5.Lcd.println(now);
  
  delay(1000);
}

M5StickCを起動すると、最初にWi-Fiネットワークに接続します。接続が完了すると、「configTime()」でNTPサーバに接続します。
loop関数では、1秒毎に「getLocalTime()」で時刻情報を取得し、書式を整えてLCD画面に表示します。

以下のように、時刻情報が表示されています。「configTime()」でNTPサーバに接続できていれば、その後はWi-Fiネットワークに繋がっていなくても、時刻は更新されるようです。

 

なお、私がM5Stack、M5StickCの使い方を習得するのにあたっては、以下の書籍を参考にさせていただきました。


ごく基本的なところから、かなり複雑なスケッチや、ネットワーク接続など、比較的高度なものまで、つまづかずに読み進めていけるような構成になっており、大変わかりやすい本です。