UStackUStack
LightInk icon

LightInk

LightInk 基于 ESP32 的太阳能电子墨水表项目,通过 ESP32 唤醒 stub 将更新显示时间压缩到极短,实现超低功耗与长续航。

LightInk

LightInk 是什么?

LightInk 是一个基于 ESP32 的电子墨水太阳能手表项目,旨在模仿 1990 年代风格的太阳能数字手表,同时使用现代组件(eInk、WiFi/Bluetooth、LoRa、GPS 等为已规划/可用功能)。其主要目的是超低功耗运行,使设备除必要时外保持关闭状态——特别是通过最小化 ESP32 在电子墨水更新期间的唤醒时间。

项目作者描述的核心设计挑战是将 ESP32“开启”时间在显示刷新期间缩短至亚毫秒级别。该项目通过在 ESP32 唤醒 stub 代码中重新实现 SPI 行为来实现这一点,使 ESP32 绕过正常的闪存启动路径,而仅运行置于 RTC 内存中的代码。

主要特性

  • 太阳能电子墨水手表概念:通过依赖太阳能和电池实现长续航,使用电子墨水进行显示更新。
  • ESP32 唤醒 stub 方法降低启动功耗:使用存储在 RTC 内存中的 ESP32 唤醒 stub(函数指针),使核心在微秒级立即启动,而非等待完整的闪存/固件启动。
  • 唤醒 stub 环境中的 SPI 重新实现:由于仅 RTC 代码无法依赖正常闪存例程,因此重新实现显示通信(SPI),以在短暂唤醒窗口内更新电子墨水屏。
  • 电源门控能力(规划/必需):项目明确指出系统需具备电源门控,并在不需要时完全关闭。
  • 定制电源硬件:作者围绕 DC-DC 低静态电流升降压转换器(TPS63900,1.8 V 至 5.5 V,75 nA IQ)开发主板,以支持低电压运行。

如何使用 LightInk

  • 查看源码和构建材料:作者通过 GitHub 仓库提供代码和材料,期望用户从该文档开始,而非打包产品。
  • 遵循固件结构实现深度睡眠/唤醒行为:唤醒 stub 机制是设计核心,相关代码路径已引用(例如仓库中的深度睡眠和 uspi 相关文件)。
  • 校准硬件以适配您的设置:项目描述了大量主板修订和测试,以实现太阳能、触摸、RTC/显示组件及低电压下的可靠运行。
  • 使用典型的电子墨水更新流程:实际中,设备设计为唤醒、与电子墨水屏通信后返回低功耗状态,而非持续活跃。

使用场景

  • 长续航太阳能显示设备:实际目标是手表式显示,可使用太阳能输入持续运行,而非频繁充电。
  • 低功耗 IoT 徽章或传感器节点:相同的唤醒 stub + 短活动方法可支持设备节能时在电子墨水屏上进行小型状态更新。
  • LoRa 连接的位置/时间显示概念:项目源于使用 LoRa 数据包与家中接收器通信的想法,作者正继续开发低功耗无线通信手表。
  • 能量优化的嵌入式开发:对降低 ESP32 唤醒/启动能耗感兴趣的开发者可研究 RTC 内存唤醒 stub 策略及其在受限环境中需可用硬件驱动的影响。
  • 触摸控制的紧凑设备:作者选择使用 ESP32 触摸功能(而非 watchy 按钮),触摸方式符合外壳约束。

常见问题

问:LightInk 是现成的消费产品吗?
否。此页面描述了一个正在进行的硬件/固件项目,代码和材料托管在 GitHub 上。

问:LightInk 的功耗策略有何不同?
该项目通过使用存储在 RTC 内存中的 ESP32 唤醒 stub,在显示更新期间最小化 ESP32 的唤醒时间,并在该唤醒上下文中运行必要代码(包括 SPI 方法)。

问:为什么唤醒 stub 方法需要额外工作?
作者解释,在唤醒 stub 执行期间,仅 RTC 内存中的代码可运行,闪存功能被绕过。这迫使重新实现硬件通信例程。

问:支持哪些连接选项?
描述中提到项目旨在使用 WiFi、Bluetooth、LoRa 和 GPS 等技术。页面摘录未指定当前版本中哪些已完全实现,详情请查阅仓库。

问:在哪里可以找到固件和硬件信息?
项目链接到一个 GitHub 仓库,包含所有代码和材料。

替代方案

  • Watchy 风格太阳能电子墨水表设计:Watchy 被明确提及作为起点。与 LightInk 相比,基于 Watchy 的方法可能依赖不同的功耗/更新流程,且可能不使用相同的 ESP32 唤醒 stub SPI 方法。
  • 使用标准深度睡眠的其他低功耗电子墨水显示项目:一些设计使用深度睡眠和正常固件唤醒/启动,而非唤醒 stub 执行。这些通常更简单,但由于启动路径较长,可能功耗更高。
  • ULP/常开微控制器架构:一些嵌入式项目使用超低功耗协处理器或外设实现低唤醒能耗,而非 RTC 函数指针唤醒 stub。
  • 专用电子墨水显示控制器方法:另一种类别是显示由专用控制器更新的设计,减少主 MCU 的活跃时间。这将工作流从“MCU 驱动更新”改为“控制器驱动更新”。