処理概要
NTPを使用した時刻設定は以下の2つの手順で簡単に行うことができます。
- WiFiによるネットワークへの接続
- configTzTime() 関数によるNTPを使用した時刻同期の設定
サンプルスケッチ
NTPで時刻同期をした日時をOLEDディスプレイに表示するESP32用のスケッチを示します。
スケッチの起動後NTPで時刻設定し、その後、OLEDディスプレイに日時を表示する時計になります。
#include <U8x8lib.h>
#include <WiFi.h>
const char *ssid = "yourssid";
const char *password = "yourpasswd";
U8X8_SSD1306_128X64_NONAME_HW_I2C u8x8(U8X8_PIN_NONE);
struct tm timeInfo;
void setup() {
u8x8.begin();
u8x8.setFont(u8x8_font_7x14B_1x2_r);
if (WiFi.begin(ssid, password) != WL_DISCONNECTED) {
ESP.restart();
}
u8x8.print("Connecting.\n");
while (WiFi.status() != WL_CONNECTED) {
u8x8.print(".");
delay(1000);
}
u8x8.print("\nConnected!");
configTzTime("JST-9", "ntp.nict.jp", "ntp.jst.mfeed.ad.jp");
getLocalTime(&timeInfo);
u8x8.clearDisplay() ;
}
char tstr[20];
void loop() {
getLocalTime(&timeInfo);
if (timeInfo.tm_year != 70) {
sprintf(tstr, "%04d/%02d/%02d",
timeInfo.tm_year + 1900, timeInfo.tm_mon + 1, timeInfo.tm_mday);
u8x8.draw1x2String(6, 0, tstr);
sprintf(tstr, "%02d:%02d:%02d",
timeInfo.tm_hour, timeInfo.tm_min, timeInfo.tm_sec);
u8x8.draw2x2String(0, 4, tstr);
} else {
u8x8.draw1x2String(6, 0, "...sync.");
}
delay(200);
}
関連記事
MicroPythonでNTPを使用した時刻同期を行う方法を紹介しています。