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の使い方を習得するのにあたっては、以下の書籍を参考にさせていただきました。
リンク
ごく基本的なところから、かなり複雑なスケッチや、ネットワーク接続など、比較的高度なものまで、つまづかずに読み進めていけるような構成になっており、大変わかりやすい本です。
このサイトで書いている、M5Stackシリーズ(M5Stack、M5StickCなど)に関するブログ記事を、「さとやまノート」という別のブログページに、あらためて整理してまとめました。
他のM5Stackシリーズの記事にも興味のある方は「さとやまノート」をご覧ください。
リンク