Back to tech

ESP32で現在時刻を取得する(これが一番良いと思います)

2 min read
Table of Contents

以前にESP8266で現在時刻を取得する記事をあげました ここ

”ESP32でもできるんじゃね?”という考察をしましたが、やってみたらできました

少しプログラムが異なるため、まとめておきます

以前のプログラムの変更点はインクルードするライブラリが異なる点だけです

ESP8266では” ESP8266WiFi.h”を使用しました

ESP32では”WiFi.h”を使用します

また、“#define JST 3600*9”の書き換えも必要です

# define JST 3600\* -9

と変更してください!

2017年9月30日のアップデートにて#define JSTはESP32とESP8266は同じになりました

下記ソース

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

#define JST     3600* 9

const char* ssid = "your-ssid";
const char* password = "your-password";

void setup() {
  Serial.begin(115200);
  delay(100);
  Serial.print("\n\nStart\n");

  WiFi.begin(ssid, password);
  while(WiFi.status() != WL_CONNECTED) {
    Serial.print('.');
    delay(500);
  }
  Serial.println();
  Serial.printf("Connected, IP address: ");
  Serial.println(WiFi.localIP());

  configTime( JST, 0, "ntp.nict.jp", "ntp.jst.mfeed.ad.jp");
}

void loop() {
  time_t t;
  struct tm *tm;
  static const char *wd[7] = {"Sun","Mon","Tue","Wed","Thr","Fri","Sat"};

  t = time(NULL);
  tm = localtime(&t);
  Serial.printf(" %04d/%02d/%02d(%s) %02d:%02d:%02d\n",
        tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday,
        wd[tm->tm_wday],
        tm->tm_hour, tm->tm_min, tm->tm_sec);
  delay(1000);
}

実行結果

Connected, IP address: 192.168.11.11
 1969/12/31(Wed) 15:00:01
 2017/06/08(Thr) 15:46:55
 2017/06/08(Thr) 15:46:56
 2017/06/08(Thr) 15:46:57
 2017/06/08(Thr) 15:46:58
 2017/06/08(Thr) 15:46:59
 2017/06/08(Thr) 15:47:00
 2017/06/08(Thr) 15:47:01
 2017/06/08(Thr) 15:47:02
 2017/06/08(Thr) 15:47:03
 2017/06/08(Thr) 15:47:04
 2017/06/08(Thr) 15:47:05
 2017/06/08(Thr) 15:47:06
 2017/06/08(Thr) 15:47:07
 2017/06/08(Thr) 15:47:08
 2017/06/08(Thr) 15:47:09
 2017/06/08(Thr) 15:47:10
 2017/06/08(Thr) 15:47:11
 2017/06/08(Thr) 15:47:12
 2017/06/08(Thr) 15:47:13
 2017/06/08(Thr) 15:47:14
 2017/06/08(Thr) 15:47:15
 2017/06/08(Thr) 15:47:16
 2017/06/08(Thr) 15:47:17
 2017/06/08(Thr) 15:47:18
 2017/06/08(Thr) 15:47:19
 2017/06/08(Thr) 15:47:20

以前にもESP32で現在時刻を取得する記事を書きましたが、こっちのほうが断然楽です