Files
esp32-Serial-Logger/README.md
2026-02-18 15:49:30 +00:00

82 lines
2.8 KiB
Markdown

# 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초마다 드리프트 보정)
```
### 동작 흐름
1. 부팅 → DS3231에서 시간 읽어 시스템 시계 즉시 설정
2. 핸드폰 접속 → 브라우저 시간 → 시스템 시계 + DS3231 동시 설정
3. WiFi 끊김/장기 방치 → 60초마다 DS3231 → 시스템 시계 보정
4. 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"