nanoESP32-C6에서 Google Calendar ICS를 가져와 WeAct 3.7인치 e-paper에 오늘 일정을 표시하는 프로젝트입니다.
| 완성된 모습 | 동작 화면 |
|---|---|
![]() |
![]() |
📸 사진을 추가하려면
images/폴더에 이미지를 넣고 위 경로를 수정하세요.
| 부품 | 모델 |
|---|---|
| MCU | nanoESP32-C6 (MuseLab, ESP32-C6-WROOM-1) |
| 디스플레이 | WeAct 3.7" E-Paper Module (GDEY037T03, 240×416, UC8253) |
| 배터리 | 3.7V 리튬배터리 (10000mAh) |
nanoESP32-C6 WeAct 3.7" E-Paper
───────────── ──────────────────
3V3 ──────→ VCC
GND ──────→ GND
GPIO4 (MOSI) ──────→ DIN (SDA/MOSI)
GPIO5 (SCK) ──────→ CLK (SCK)
GPIO6 (CS) ──────→ CS
GPIO7 (DC) ──────→ DC
GPIO0 (RST) ──────→ RST (RES)
GPIO1 (BUSY) ──────→ BUSY
참고: nanoESP32-C6는 ESP32-C6-WROOM-1 모듈 기반으로, GPIO 0
15, 1821 등을 사용할 수 있습니다. GPIO12, GPIO13은 내부 플래시 접근용이므로 사용하지 마세요.
- Arduino IDE → 파일 → 환경설정 → 추가 보드 매니저 URL:
https://espressif.github.io/arduino-esp32/package_esp32_index.json - 툴 → 보드 → 보드 매니저 →
esp32검색 후 설치 (v2.0.8+) - 보드 선택: ESP32C6 Dev Module
Arduino IDE → 스케치 → 라이브러리 포함하기 → 라이브러리 관리:
| 라이브러리 | 작성자 | 용도 |
|---|---|---|
| GxEPD2 | Jean-Marc Capello | E-Paper 디스플레이 드라이버 |
| Adafruit GFX Library | Adafruit | 그래픽 기반 라이브러리 |
| U8g2_for_Adafruit_GFX | Oliver | 한글 폰트 렌더링 |
secrets.h 파일을 열어 WiFi SSID와 비밀번호를 입력하세요:
#define WIFI_SSID "내WiFi이름"
#define WIFI_PASSWORD "내WiFi비밀번호"
#define REFRESH_INTERVAL_MIN 30 // 새로고침 주기 (분)TodayGoogleCalendar.ino 상단의 calendars[] 배열에 Google Calendar 비공개 ICS URL을 입력하세요:
CalendarInfo calendars[] = {
{ "가족", "https://calendar.google.com/calendar/ical/.../basic.ics" },
{ "시연", "https://calendar.google.com/calendar/ical/.../basic.ics" },
{ "정민", "https://calendar.google.com/calendar/ical/.../basic.ics" },
{ "현", "https://calendar.google.com/calendar/ical/.../basic.ics" },
};| 캘린더 인덱스 | 마커 |
|---|---|
| calendar[0] | ■ (꽉 찬 사각형) |
| calendar[1] | □ (빈 사각형) |
| calendar[2] | ▀ (위쪽 반) |
| calendar[3] | ▄ (아래쪽 반) |
- USB-C 케이블로 nanoESP32-C6 연결 (CH343 USB 포트 사용)
- 올바른 포트 선택
- 업로드 버튼 클릭
부팅 → WiFi 연결(10초 타임아웃) → NTP 시간 동기화 →
4개 캘린더 ICS 다운로드(5초 타임아웃) → 오늘 일정 파싱 →
시간순 정렬 → E-Paper 표시 → WiFi OFF → E-Paper 전원차단 →
GPIO 플로팅 방지 → 딥슬립 → N분 후 반복
배터리 수명을 극대화하기 위해 다음 절전 기법이 적용되어 있습니다:
| 기법 | 설명 | 효과 |
|---|---|---|
| 딥슬립 | ESP32C6를 15μA 딥슬립 모드로 전환 | 대기 전류 ~99% 감소 |
| WiFi 빠른 타임아웃 | 연결 10초, HTTP 5초로 단축 | 실패 시 낭비 전력 감소 |
| WiFi 완전 해제 | 슬립 전 WiFi.disconnect(true) + WIFI_OFF |
WiFi 모듈 누설 전류 차단 |
| E-Paper RST LOW | 슬립 중 RST 핀을 LOW로 전원 차단 | e-paper 누설 전류 감소 |
| GPIO 풀다운 | 슬립 전 SPI/제어 핀 INPUT_PULLDOWN | 플로팅 핀 누설 전류 방지 |
| 전체 실패 시 즉시 슬립 | 4개 캘린더 모두 실패하면 바로 슬립 | 불필요한 WiFi 유지 방지 |
┌──────────────────────────────────────────┐
│ 2026년 7월 15일 (수) │
│──────────────────────────────────────────│
│ 09:00-10:30 ■ 팀 미팅 │
│ 회의실 A │
│──────────────────────────────────────────│
│ 11:00-12:00 □ 시연 리허설 │
│──────────────────────────────────────────│
│ 종일 ▀ 생일 파티 │
│──────────────────────────────────────────│
│ 14:00-15:30 ▄ 학원 │
│ │
│ │
│ 11:28 갱신 ■가족 □시연 ▀정민 ▄현 │
└──────────────────────────────────────────┘
| 구간 | 전류 | 시간 (초) | 비고 |
|---|---|---|---|
| WiFi 연결 | ~120mA | 5~8초 | AP 연결 + DHCP |
| NTP 동기화 | ~100mA | 2~3초 | |
| ICS 다운로드 ×4 | ~110mA | 10~20초 | HTTP GET ×4 |
| E-Paper 갱신 | ~30mA | 3~5초 | 화면 새로고침 |
| 활성 합계 | ~110mA | ~30초 | |
| 딥슬립 | 1790초 | e-paper 연결 누설포함 |
활성: 110mA × 30초 = 3,300 mA·s
슬립: 0.1mA × 1790초 = 179 mA·s (딥슬립 100μA 가정)
─────────────────────────────────────
합계: 3,479 mA·s / 1800초 ≈ 1.93 mA (평균)
| 시나리오 | 딥슬립 전류 | 평균 소비 | 10000mAh 수명 |
|---|---|---|---|
| 🟢 이상적 | 15μA | ~1.85mA | ~225일 (7.5개월) |
| 🟡 현실적 | 100μA | ~1.93mA | ~216일 (7.2개월) |
| 🟠 보수적 | 500μA | ~2.14mA | ~195일 (6.5개월) |
| 🔴 최악 | 1mA | ~2.83mA | ~147일 (4.9개월) |
딥슬립 전류가 높아지는 주요 원인: e-paper 모듈의 풀업 저항 누설, WiFi 재시도, 배터리 보호 회로
약 6~7개월 동작 예상
단, 아래 요소를 고려하면 실제로는 4~6개월 정도로 보는 것이 안전합니다:
- 🔋 리튬배터리 방전 곡선 (3.7V → 3.0V 구간만 실사용 가능 → 유효 용량 ~85%)
- 📡 WiFi 연결 실패 시 재시도 (활성 시간 증가)
- 🌡️ 온도에 따른 배터리 효율 저하 (겨울철)
- ⚡ LDO 손실 (3.7V → 3.3V 변환 효율 ~90%)
| 방법 | 효과 |
|---|---|
| 갱신 주기를 30분 → 1시간으로 | 수명 약 1.8배 연장 |
| ICS 다운로드 실패 시 즉시 슬립 ✅ | 불필요한 WiFi 유지 방지 (이미 적용) |
| E-Paper RST 핀으로 슬립 중 전원 차단 ✅ | 딥슬립 전류 50%↓ (이미 적용) |
| WiFi 연결 타임아웃 단축 (10초→5초) ✅ | 실패 시 낭비 감소 (이미 적용) |
| GPIO 플로팅 방지 ✅ | 누설 전류 감소 (이미 적용) |
| 증상 | 해결 방법 |
|---|---|
| 포트 인식 안 됨 | BOOT 버튼 누른 채 USB 연결 → 부트로더 모드 |
| WiFi 연결 실패 | SSID/비밀번호 확인, 2.4GHz 대역인지 확인 (5GHz 불가) |
| E-Paper 화면 안 나옴 | 배선 재확인, BUSY 핀 연결 상태 확인 |
| 시간 틀림 | NTP 서버 접근 가능한지 확인 |
| ICS 다운로드 실패 | ICS URL이 유효한지 브라우저에서 확인 |
| 배터리 빨리 닳음 | WiFi 타임아웃 확인, 딥슬립 진입 로그 확인 |

