UStackUStack
LightInk icon

LightInk

LightInk는 ESP32 기반 태양광 e-잉크 시계 프로젝트로, ESP32 웨이크 스텁으로 깨어있는 시간을 최소화해 전력 사용을 줄입니다.

LightInk

LightInk란?

LightInk는 1990년대 스타일의 태양광 디지털 시계를 모방하도록 설계된 ESP32 기반 e-ink 태양광 시계 프로젝트로, 현대 부품(eInk, WiFi/Bluetooth, LoRa, GPS 등 계획/사용 가능 기능)을 사용합니다. 주요 목적은 초저전력 작동으로, 필요할 때만 켜지도록 ESP32의 e-ink 업데이트 중 깨어있는 시간을 최소화합니다.

프로젝트 저자는 디스플레이 새로고침 중 ESP32 “on” 시간을 밀리초 이하로 줄이는 것이 핵심 설계 과제라고 설명합니다. 이 프로젝트는 ESP32 wake stub 코드에서 SPI 동작을 재구현하여 일반 플래시 부팅 경로를 우회하고, wake 시 RTC 메모리에 배치된 코드만 실행함으로써 이를 달성합니다.

주요 기능

  • 태양광 e-ink 시계 개념: 태양광과 배터리에 의존해 장시간 작동을 목표로 하며, e-ink를 디스플레이 업데이트에 사용합니다.
  • 부팅 전력 감소를 위한 ESP32 wake-stub 접근: RTC 메모리에 저장된 ESP32 wakeup stub(함수 포인터)을 사용해 전체 플래시/펌웨어 시작을 기다리지 않고 마이크로초 단위로 코어를 즉시 부팅합니다.
  • wake-stub 컨텍스트에서의 SPI 재구현: RTC 전용 코드가 일반 플래시 기반 루틴에 의존할 수 없으므로, 디스플레이 통신(SPI)을 재구현해 짧은 wake 창 동안 e-ink를 업데이트합니다.
  • 전원 게이팅 기능(계획/필요): 프로젝트는 시스템이 필요 없을 때 전원 게이팅되어 꺼질 수 있는 요구사항을 명시합니다.
  • 커스텀 전원 하드웨어: 저자는 저전압 작동을 지원하기 위해 DC-DC 저 정전류 벅-부스트 컨버터(TPS63900, 1.8 V ~ 5.5 V, 75 nA IQ) 중심의 보드를 개발했습니다.

LightInk 사용 방법

  • 소스 및 빌드 자료 검토: 저자는 GitHub 저장소를 통해 코드와 자료를 제공하며, 포장된 제품이 아닌 그 문서부터 시작할 것을 기대합니다.
  • 딥 슬립/wake 동작을 위한 펌웨어 구조 따르기: wake-stub 메커니즘이 설계의 핵심이며, 관련 코드 경로(예: 저장소의 deep sleep 및 uspi 관련 파일)가 참조됩니다.
  • 하드웨어를 설정에 맞게 보정: 프로젝트는 태양광, 터치, RTC/디스플레이 부품 및 저전압 동작의 안정적 작동을 위한 광범위한 보드 개정과 테스트를 설명합니다.
  • 일반적인 e-ink 업데이트 워크플로 사용: 실제로 장치는 e-ink 디스플레이와 통신한 후 지속적으로 활성 상태가 아닌 저전력 작동으로 돌아가도록 설계되었습니다.

사용 사례

  • 장기 태양광 디스플레이 장치: 잦은 충전 대신 태양광 입력으로 작동하는 시계 스타일 디스플레이가 실용적 목표입니다.
  • 저전력 IoT 배지 또는 센서 노드: 동일한 wake-stub + 짧은 활동 접근으로 에너지를 절약해야 할 장치에서 e-ink 디스플레이의 작은 상태 업데이트를 지원합니다.
  • LoRa 연결 위치/시간 디스플레이 개념: 프로젝트는 LoRa 패킷을 사용해 집 수신기에 통신하는 아이디어로 시작되었으며, 저자는 무선 통신을 사용하면서 저전력을 유지하는 시계로 계속 작업 중입니다.
  • 에너지 최적화 임베디드 개발: ESP32 wake/부팅 에너지를 줄이는 데 관심 있는 개발자는 RTC 메모리 wake-stub 전략과 그 제한된 환경에서 필요한 하드웨어 드라이버의 함의를 연구할 수 있습니다.
  • 터치 제어 컴팩트 장치: 저자는 ESP32 터치 기능(워치 버튼 대신)을 사용하기로 결정했으며, 터치 접근이 인클로저 제약에 적합하다고 언급합니다.

자주 묻는 질문

Q: LightInk는 구매 가능한 완제품인가요?
아니요. 이 페이지는 GitHub에 코드와 자료가 호스팅된 진행 중인 하드웨어/펌웨어 프로젝트를 설명합니다.

Q: LightInk의 전력 전략이 다른 점은 무엇인가요?
프로젝트는 디스플레이 업데이트 중 ESP32의 깨어있는 시간을 최소화하는 데 초점을 맞춥니다. RTC 메모리에 저장된 ESP32 웨이크업 스텁을 사용하고, 해당 웨이크 컨텍스트에서 필요한 코드( SPI 접근 포함)를 실행합니다.

Q: 웨이크-스텁 접근 방식이 추가 작업을 요구하는 이유는 무엇인가요?
저자는 웨이크-스텁 실행 중 RTC 메모리의 코드만 실행 가능하며 플래시 기반 기능이 우회된다고 설명합니다. 이는 하드웨어 통신 루틴의 재구현을 강제합니다.

Q: 지원되는 연결 옵션은 무엇인가요?
설명에서 프로젝트가 사용하려는 기술로 WiFi, Bluetooth, LoRa, GPS를 언급합니다. 페이지 발췌본은 현재 빌드에서 어떤 것이 완전히 구현되었는지 지정하지 않으므로, 세부 사항은 저장소에서 확인하세요.

Q: 펌웨어와 하드웨어 정보를 어디서 찾을 수 있나요?
프로젝트는 모든 코드와 자료가 포함된 GitHub 저장소로 링크합니다.

대안

  • Watchy 스타일 태양광 e-ink 시계 디자인: Watchy가 시작점으로 명시적으로 언급됩니다. LightInk와 비교해 Watchy 기반 접근은 다른 전력/업데이트 워크플로를 사용하며 동일한 ESP32 웨이크-스텁 SPI 접근을 사용하지 않을 수 있습니다.
  • 표준 딥 슬립을 사용하는 다른 저전력 e-ink 디스플레이 프로젝트: 웨이크-스텁 실행 대신 일부 디자인은 일반 펌웨어 웨이크/부팅과 딥 슬립을 사용합니다. 이는 일반적으로 더 간단하지만 더 긴 부팅 경로로 인해 전력을 더 소모할 수 있습니다.
  • ULP/항상 켜짐 마이크로컨트롤러 아키텍처: 일부 임베디드 프로젝트는 RTC 함수 포인터 웨이크 스텁 대신 초저전력 코프로세서나 주변 장치를 사용해 낮은 웨이크 에너지를 달성합니다.
  • 전용 e-ink 디스플레이 컨트롤러 접근: 대안 카테고리로, 디스플레이가 특수 컨트롤러에 의해 업데이트되어 메인 MCU의 활성 시간을 줄이는 디자인입니다. 이는 “MCU 주도 업데이트”에서 “컨트롤러 주도 업데이트”로 워크플로를 변경할 수 있습니다.