- 平台:PlatformIO (VSCode 插件)
- 框架:Arduino
- 开发板:esp32-c3-devkitc-02
- 分区表:
partitions.csv
- ESPC3-12-N4 模块(ESP32‑C3 系列)
- WS2812B(16×4 灯板,支持色温与亮度控制)
- 1.54" ST7789 TFT(240×240)
- BH1750 环境光传感器
- DHT40 温湿度传感器
- CW2015 电量检测 IC
- DS3231 RTC(实时时钟)
- 18650 电池 + 充放电管理(IP5407 / IP3005A)
- 触摸(TTP223)与拨轮输入(ADC)
- 人体存在传感器 HLK‑LD2410D
src/ # 主固件源码(按功能模块划分)
app/ # 灯效与核心逻辑
sensors/ # 各类传感器驱动与管理
network/ # Wi-Fi、MQTT、BLE 等网络相关
ui/ # 本地 UI 与显示
input/ # 按键输入
system/ # I2C、RTC、存储等系统服务
doc # 文档与资料
platformio.ini # PlatformIO 配置
-
智能灯控制
- 亮度与色彩控制(支持 RGB/HSV 处理与色温调整)
- 多种灯效(淡入/淡出、场景、动画序列)
- 环境光自适应调节亮度
- 支持状态与配置持久化存储
-
传感器采集
- 支持 BH1750(光照)、SHT4x(温湿度)、CW2015(电量/充放电状态)等多种传感器
- 统一管理,支持轮询、数据过滤与事件分发
-
简易雷达驱动(未完成)
- 支持 LD2410D 雷达的基础通信与数据解析
- 目前仅实现原始数据读取,目标检测/跟踪与高级控制尚未实现
-
网络与集成
- Wi‑Fi:管理连接/重连,采用自动重连与指数退避以降低资源占用
- MQTT(轻量消息总线):发布
<base>/state、订阅<base>/set,上报<base>/availability;支持 LWT、QoS=1 与 retained - Home Assistant:支持 MQTT Discovery,上报
device_info与 availability 以便自动注册实体 - 建议:限制消息大小(避免大 JSON)、启用心跳与重连、将凭据/主题配置持久化;SRAM 紧张时谨慎启用 TLS
-
蓝牙接口
- BLE(基于 NimBLE):用于配网(写入 Wi‑Fi 凭据)、本地控制与状态查询
- 设计要点:分块传输大载荷、限制并发连接、合理设置 MTU 与广告间隔以节省内存与 CPU
- 安全:对敏感操作(凭据写入、OTA)建议强制配对/绑定或短期授权
-
本地 UI 与输入
- 使用 LovyanGFX + lvgl 渲染 UI,显示时间、天气、状态与设置界面。
- 支持 GPIO 按键与 ADC 按键,短按/长按及多键逻辑
-
系统服务
- I2C 总线统一管理,支持多外设接入
- RTC 定时任务与时间戳
- 持久化存储,支持分区管理
-
模块化架构
- 代码按功能模块划分,每个模块独立实现任务与接口,通过消息队列与事件回调解耦
- 模块间通过消息队列/事件回调解耦,便于扩展与维护
- ESP32‑C3 性能有限,只有单核,且只有 400 KB SRAM,容易内存溢出,需小心优化;需特别注意 FreeRTOS 系统任务堆栈。
- 程序应尽量精简并控制内存峰值,避免同时分配大堆与大缓冲。此程序实现了 WiFi 与 BLE 共存,导致开机后内存仅剩 29 KB。
- 通过网页(HTTP)获取 JSON 会占用大量内存,应避免一次性大缓冲或并发解析,优先使用流式/分块解析并复用缓冲区。
- C3 内置 flash 仅 4 MB,空间有限;已将程序分区调整为 3 MB(需权衡 OTA 与数据存储空间)。