ESP32 Serial Logger v2.0
UART2 시리얼 모니터링 + SD카드 로깅 + WiFi 웹 인터페이스 + DS3231 RTC
하드웨어
- 보드: ESP-WROOM-32D DevKitC V4
- RTC: DS3231 모듈 (I2C, ±2ppm 정밀도)
- SD카드: SPI 방식 MicroSD 모듈
핀 연결
ESP32 대상장치 (UART)
GPIO17 (TX) ──────────── RX
GPIO16 (RX) ──────────── TX
GND ──────────────────── GND
ESP32 SD Card Module (VSPI)
GPIO18 ──────────────── SCLK
GPIO19 ──────────────── MISO
GPIO23 ──────────────── MOSI
GPIO5 ──────────────── CS
3.3V ──────────────── VCC
GND ──────────────── GND
ESP32 DS3231 RTC Module (SoftWire I2C)
GPIO25 ──────────────── SDA
GPIO26 ──────────────── SCL
3.3V ──────────────── VCC
GND ──────────────── GND
SoftWire 사용으로 임의 GPIO에 DS3231 연결 가능. GPIO 6~11은 SPI Flash 전용.
Arduino IDE 설정
| 설정 | 값 |
|---|---|
| Board | ESP32 Dev Module |
| Upload Speed | 921600 |
| CPU Frequency | 240MHz (WiFi/BT) |
| Flash Frequency | 80MHz |
| Flash Mode | QIO |
| Flash Size | 4MB (32Mb) |
| Partition Scheme | Huge APP (3MB No OTA/1MB SPIFFS) |
| PSRAM | Disabled |
필수 라이브러리
| 라이브러리 | 설치 |
|---|---|
| WebSockets by Markus Sattler (Links2004) | Library Manager |
| ArduinoJson v6.x | Library Manager |
| SoftWire by Steve Marple | Library Manager → "SoftWire" |
| AsyncDelay by Steve Marple | Library Manager (SoftWire 의존) |
| SD, SPI | 설치 불필요 (내장) |
시간 동기화 전략 (장기 로깅용)
시간 우선순위:
1. NTP (STA 모드, 1시간마다 자동 보정)
2. 브라우저 시간 (WebSocket 접속 시 자동 전송)
3. DS3231 RTC (부팅 즉시 + 60초마다 드리프트 보정)
동작 흐름
- 부팅 → DS3231에서 시간 읽어 시스템 시계 즉시 설정
- 핸드폰 접속 → 브라우저 시간 → 시스템 시계 + DS3231 동시 설정
- WiFi 끊김/장기 방치 → 60초마다 DS3231 → 시스템 시계 보정
- STA 모드 → NTP 성공 시 RTC도 자동 업데이트
FreeRTOS 태스크 구조
Core 1: SerialRX(Pri:5), SerialTX(Pri:4)
Core 0: SDLog(Pri:3), WebBroadcast(Pri:2), RTC(Pri:1), NTP(Pri:1)
Loop: server.handleClient()
로그 파일
- 경로: /logs/LOG_YYYYMMDD_HHMMSS.csv
- 형식: "Timestamp","Direction","Data"
Description
Languages
C++
58.7%
C
41.3%