Back to tech

ESP32で現在時刻を取得する

2 min read
Table of Contents
GitHub - arduino-libraries/NTPClient: Connect to a NTP server
github.com
image

センサーからデータを取得するときにタイムスタンプがある便利になると思い色々と調べてみました

とりあえずは現在時刻を取得することができたで備忘録としてまとめます

使用したマイコンはESP32です

初期設定等はここでみてください

“Arduino ntp”と調べると色々とやり方や方法がでてきます

例えば:

Qiitaに記載されていた方法(例で上げたもの)でもよいと思ったのですが、コメントを見ると取得できないという書き込みがあったため見送りました

簡単にできるものがないかなぁと思い、githubをあさっていたら見つけました

NTPClient:http://github.com/arduino-libraries/NTPClient

サンプルコードを読むとESP8266用なのかなぁと思いましたが、ものは試しでやってみました

いつもの通りGitHubからライブラリをダウンロードし、Arduinoへインポート

ESP32のサンプルコードとNTPClientのサンプルプログラムを読みながら作っていきます

こんな感じ↓

#include <NTPClient.h>
#include <WiFi.h>
#include <WiFiUdp.h>

char ssid[] = "ssid"; //ssid
char pass[] = "password";  //password

WiFiUDP ntpUDP;

//udp, ntp, 時差(日本はutc時刻から-9時間), インターバル
NTPClient timeClient(ntpUDP, "ntp.nict.jp", 32400, 60000);

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  WiFi.begin(ssid, pass);

  while ( WiFi.status() != WL_CONNECTED ) {
    delay ( 500 );
    Serial.print ( "." );
  }

  timeClient.begin();

}

void loop() {
  // put your main code here, to run repeatedly:
  timeClient.update();
  
  Serial.print(timeClient.getDay());//曜日 日曜日は0となりそこから番号が割り振られる
  Serial.print('-');
  Serial.println(timeClient.getFormattedTime());

  delay(1000);
}

実行結果

......5-09:09:54
5-09:09:55
5-09:09:56
5-09:09:57
5-09:09:58
5-09:09:59
5-09:10:00
5-09:10:01
5-09:10:02
5-09:10:03
5-09:10:04
5-09:10:05
5-09:10:06
---

このライブラリにおいて曜日と時刻を取得することができました

しかし日付が取得できません

うーむ・・・

参考文献