wifi + NTP (Arduino IDE + ESP ボードマネージャ)
はじめに
ESP32 マイコンの大きな特徴は wifi を内蔵していることである. 本ドキュメントでは wifi への接続と, NTP (Network Time Protocol) を用いた現在時刻の取得についてテストする.
プログラムの作成と実行
これまでと同様に, スケッチ例を利用する.
スケッチ例 (SimpleTime.ino) を修正したものを以下に示す. 修正した行は 4-9 行目の設定部のみである.
1 #include <WiFi.h> 2 #include "time.h" 3 4 const char* ssid = "YOUR SSSID"; //SSID 入力 5 const char* password = "YOUR PASSWD"; //パスワード 入力 6 7 const char* ntpServer = "ntp.nict.jp"; 8 const long gmtOffset_sec = 3600 * 9; //時差9時間 9 const int daylightOffset_sec = 0; //夏時間なし 10 11 void printLocalTime() 12 { 13 struct tm timeinfo; 14 if(!getLocalTime(&timeinfo)){ 15 Serial.println("Failed to obtain time"); 16 return; 17 } 18 Serial.println(&timeinfo, "%A, %B %d %Y %H:%M:%S"); 19 } 20 21 void setup() 22 { 23 Serial.begin(115200); 24 25 //connect to WiFi 26 Serial.printf("Connecting to %s ", ssid); 27 WiFi.begin(ssid, password); 28 while (WiFi.status() != WL_CONNECTED) { 29 delay(500); 30 Serial.print("."); 31 } 32 Serial.println(" CONNECTED"); 33 34 //init and get the time 35 configTime(gmtOffset_sec, daylightOffset_sec, ntpServer); 36 printLocalTime(); 37 38 //disconnect WiFi as it's no longer needed 39 WiFi.disconnect(true); 40 WiFi.mode(WIFI_OFF); 41 } 42 43 void loop() 44 { 45 delay(1000); 46 printLocalTime(); 47 }
プログラムのコンパイル・マイコンへの書き込み・シリアルモニタでのチェックを行う. なお, このサンプルではシリアル通信の速度が 115200 となっているので, シリアルモニタにおいてもその通信速度に設定しなければならない.