ESP32 내부에 시계 기능이 있지만 값을 기억하지는 못합니다.
와이파이를 통하여 인터넷 시간을 가져와서 설정 하면 현재 시간을 알 수 있습니다.
NTP(Network Time Protocol)
인터넷 곳곳에 NTP 서버를 운영중인곳이 많이 있는데 그 중에 한 곳에서 현재 시간을 가져 옵니다.
영국 런던 남동쪽에 위치한 그리니치 천문대로 부터 시간을 가져 옵니다.
전체 소스코드 입니다.
#include <WiFi.h>
#include "time.h"
const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASSWORD";
const char* ntpServer = "pool.ntp.org"; // NTP 서버 주소
uint8_t timeZone = 9; // 한국은 GMT+9
uint8_t summerTime = 0; // 썸머타임 적용 안함
void printLocalTime() {
struct tm timeinfo;
if( !getLocalTime(&timeinfo) ) {
Serial.println( "Failed to obtain time" );
return;
}
Serial.println( &timeinfo, "%A, %B %d %Y %H:%M:%S" );
}
void setup() {
Serial.begin( 115200 );
WiFi.begin( ssid, password );
// 와이파이가 연결될 때까지 기다린다.
if( WiFi.waitForConnectResult() != WL_CONNECTED ) {
Serial.printf( "WiFi Failed!\n" );
return;
}
Serial.print( "IP Address: " );
Serial.println( WiFi.localIP() );
configTime( 3600 * timeZone, 3600 * summerTime, ntpServer ); // 시간 설정
}
void loop() {
delay( 1000 );
printLocalTime();
}
현재 시간을 1초마다 보여 줍니다.
코드 내용을 보면
헤더 파일을 선언 합니다.
#include <WiFi.h>
#include "time.h"
공유기의 SSID와 PASSWORD를 입력합니다.
const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASSWORD";
NTP 서버는 pool.ntp.org 를 사용합니다.
우리나라는 그리니치 천문대로부터 9시간 빠르므로
GMT(Greenwich Mean Time)+9 입니다.
썸머타임은 적용하지 않습니다.
const char* ntpServer = "pool.ntp.org"; // NTP 서버 주소
uint8_t timeZone = 9; // 한국은 GMT+9
uint8_t summerTime = 0; // 썸머타임 적용 안함
ESP32 모듈 내부의 시간을 읽어와서 시리얼창으로 출력 합니다.
void printLocalTime() {
struct tm timeinfo;
if( !getLocalTime(&timeinfo) ) {
Serial.println( "Failed to obtain time" );
return;
}
Serial.println( &timeinfo, "%A, %B %d %Y %H:%M:%S" );
}
NTP 서버에서 시간을 읽어와서 우리나라에 맞게 시간을 설정하는 코드입니다.
1시간은 3600초 이므로 3600 x 9 = 32400초 만큼 더해 줍니다.
썸머타임은 없기 때문에 3600을 곱해도 0 입니다.
configTime( 3600 * timeZone, 3600 * summerTime, ntpServer ); // 시간 설정
1초마다 시간을 보여 줍니다.
void loop() {
delay( 1000 );
printLocalTime();
}
'ESP32 > 기초 및 Tips' 카테고리의 다른 글
텔레그램 ID 얻기 (0) | 2023.10.14 |
---|---|
텔레그램 챗봇 만들기 (0) | 2023.10.12 |
ESP32 네트워크 채널 문제 (0) | 2023.10.06 |
ESP32 부팅시 디버깅 메시지 없애기 (0) | 2023.10.02 |
ESP32 고정 IP 만들기 (0) | 2023.10.01 |