Skip to content

Repository files navigation

Google Calendar → nanoESP32-C6 → WeAct 3.7" E-Paper

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 015, 1821 등을 사용할 수 있습니다. GPIO12, GPIO13은 내부 플래시 접근용이므로 사용하지 마세요.

소프트웨어 설정

1. Arduino IDE 보드 설정

  1. Arduino IDE → 파일 → 환경설정 → 추가 보드 매니저 URL:
    https://espressif.github.io/arduino-esp32/package_esp32_index.json
    
  2. 툴 → 보드 → 보드 매니저 → esp32 검색 후 설치 (v2.0.8+)
  3. 보드 선택: ESP32C6 Dev Module

2. 라이브러리 설치

Arduino IDE → 스케치 → 라이브러리 포함하기 → 라이브러리 관리:

라이브러리 작성자 용도
GxEPD2 Jean-Marc Capello E-Paper 디스플레이 드라이버
Adafruit GFX Library Adafruit 그래픽 기반 라이브러리
U8g2_for_Adafruit_GFX Oliver 한글 폰트 렌더링

3. WiFi 설정

secrets.h 파일을 열어 WiFi SSID와 비밀번호를 입력하세요:

#define WIFI_SSID         "내WiFi이름"
#define WIFI_PASSWORD     "내WiFi비밀번호"
#define REFRESH_INTERVAL_MIN  30   // 새로고침 주기 (분)

4. 캘린더 설정

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] ▄ (아래쪽 반)

5. 업로드

  1. USB-C 케이블로 nanoESP32-C6 연결 (CH343 USB 포트 사용)
  2. 올바른 포트 선택
  3. 업로드 버튼 클릭

동작 흐름

부팅 → 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 유지 방지

화면 레이아웃 (가로 모드 416×240)

┌──────────────────────────────────────────┐
│ 2026년 7월 15일 (수)                      │
│──────────────────────────────────────────│
│ 09:00-10:30  ■ 팀 미팅                    │
│              회의실 A                      │
│──────────────────────────────────────────│
│ 11:00-12:00  □ 시연 리허설                │
│──────────────────────────────────────────│
│ 종일         ▀ 생일 파티                   │
│──────────────────────────────────────────│
│ 14:00-15:30  ▄ 학원                       │
│                                          │
│                                          │
│ 11:28 갱신      ■가족 □시연 ▀정민 ▄현     │
└──────────────────────────────────────────┘

배터리 수명 (10000mAh 기준)

30분 주기 동작 사이클 전력 분석

구간 전류 시간 (초) 비고
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초
딥슬립 50200μA 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 타임아웃 확인, 딥슬립 진입 로그 확인

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages