12주차 : NTP 서버 활용 실습 - dhryu60/SmartDevice_2025-1 GitHub Wiki

ESP32 NTP 서버 활용 강의 자료

학습 목표

ESP32를 이용하여 NTP 서버로부터 시간 정보를 가져와 OLED 디스플레이에 표시하는 방법을 학습한다.

핵심 키워드

ESP32, IoT, 사물인터넷, NTP, OLED

준비물

  • ESP32
  • ESP32 확장 실드
  • OLED 디스플레이

프로젝트 개요

ESP32를 사용하여 NTP(Network Time Protocol) 서버에서 시간을 가져오고, OLED 디스플레이에 현재 시간을 표시하는 디지털 시계를 제작한다.


OLED 디스플레이 설정

  1. Adafruit_SSD1306 라이브러리와 Adafruit_GFX 라이브러리를 설치.
  2. 아래 코드를 사용하여 OLED 디스플레이를 초기화.
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 32

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
  Serial.println("SSD1306 오류");
  while (true);
}

display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.println("Hello, World!");
display.display();

NTP 서버 연동

  1. 한국 표준시(UTC+9)를 적용하기 위해 아래와 같이 설정.
int GMTOffset = 60 * 60 * 9; // 한국 시간 오프셋
int daylightOffset = 0; // 서머타임 미적용
configTime(GMTOffset, daylightOffset, "pool.ntp.org", "time.nist.gov");
  1. 현재 시간을 가져오고 구조체 형태로 변환.
time_t rawtime = time(nullptr);
struct tm* timeinfo = localtime(&rawtime);
  • rawtime은 1970년 1월 1일 이후 경과한 시간을 초 단위로 반환한다.
  • timeinfo는 시각 정보를 시, 분, 초, 요일 등의 항목으로 나누어 저장한다.

출력 결과

  • OLED 디스플레이에 현재 시간과 날짜, 요일이 표시되는 디지털 시계가 완성된다.

PPT와 소스코드

챕터9.NTP 서버 활용.pdf

챕터9.NTP를 이용한 디지털 시계.zip