文章目录
每日一句正能量
总有某段路,只能你一个人走;总有许多事,需要你一个人扛。
目录
- 缘起:当「智能灯带」遇上「无限掉电」
- 硬件选型:为什么抛弃 STM32 而用 ESP32-C3?
- 架构设计:模块化 + 事件总线,让固件可插拔
- 底层奥秘:5ms 环路时延与 1uA 睡眠电流的拉锯战
- 工具链革命:Docker 交叉编译 + GitHub Actions 自动 OTA
- 量产血泪:RF 一致性、供电冲击、静电洗礼
- 小结与开源
1. 缘起:当「智能灯带」遇上「无限掉电」
2023 年 10 月,公司接到一款「圣诞智能灯带」项目——
- 要求:Wi-Fi 直连、RGB 幻彩、手机 30fps 实时预览、4 节 5 号电池续航 ≥ 30 天
- 难点:掉电速度比 STM32F103 的 PWM 还快,用户骂声比雪花还大
于是,我(固件负责人)带着「星光虽嵌入,式界却无限」的信念,开始了一场「续航 × 实时性」的拉锯战。
2. 硬件选型:为什么抛弃 STM32 而用 ESP32-C3?
| 维度 | STM32F103+ESP01 | ESP32-C3 单芯片 |
|---|---|---|
| 主频 | 72 MHz | 160 MHz |
| Wi-Fi | 外置 | 内置 2.4G |
| DeepSleep | 20 uA | 8 uA |
| 成本 | ¥18 | ¥12 |
| 开源 SDK | HAL | ESP-IDF & 鸿蒙适配 |
结论:一颗芯片解决「MCU + 射频」,睡眠电流减半,成本降 1/3,何乐而不为?
3. 架构设计:模块化 + 事件总线,让固件可插拔
/* 事件总线:发布-订阅,零拷贝 */
typedef struct {
event_id_t id;
void *data;
uint8_t len;
} event_t;
#define EVENT_SUB(id,handler) \
static const struct __attribute__((section("evt"))) \
evt_entry _e_##id = {id, handler}
- 核心模块:驱动、算法、协议、业务、电源管理
- 每个模块注册事件,中断→发布→循环调度,告别「全局标志位地狱」
- 好处:新增「音乐律动」算法时,只写 1 个文件,不碰旧代码
4. 底层奥秘:5ms 环路时延与 1uA 睡眠电流的拉锯战
① 时延预算
- Wi-Fi 发包 2ms
- 算法解包 1ms
- PWM 刷新 2ms
→ 环路 5ms,才能实现 30fps 无拖影
② 电源预算
- 4 节 5 号碱性电池 ≈ 8000 mWh
- 目标 30 天 → 平均功耗 ≤ 11 mW
- 方案:占空比 1% + 动态调频 + 深度睡眠 1uA
③ 关键技术
- FreeRTOS Tickless Idle:IDLE 时关闭 SysTick,外设时钟门控
- ESP32-C3 Light-sleep:CPU 停、Wi-Fi 保活,平均 1.2 mA
- 自适应批量发包:手机端 200ms 缓冲后一次性下发 6 帧,减少 80% 空口唤醒
实测:
- 环路时延 4.8ms
- 平均电流 0.38 mA → 续航 32 天,达成 KPI!
5. 工具链革命:Docker 交叉编译 + GitHub Actions 自动 OTA
# Dockerfile
FROM espressif/idf:v5.1
RUN apt-get update && apt-get install -y \
cmake ninja-build ccache
WORKDIR /project
CMD idf.py build
- 本地:VSCode DevContainer 一键进入,无需搭建工具链
- CI:GitHub Actions 自动编译 → 生成 bin → 调用 OTA 接口 → 千台设备静默升级
- 缓存:ccache 加速 70%,push 后 3 分钟出包
6. 量产血泪:RF 一致性、供电冲击、静电洗礼
| 事故 | 现象 | 根因 | 解决 |
|---|---|---|---|
| RF 功率跌落 | 10m → 2m 断连 | 电池内阻↑ | 并联 100μF 钽电容 |
| 上电冲击 | 重启循环 | 电机浪涌 800mV | 软启动 + LC π型滤波 |
| ESD | 死机 | 外壳缝隙 8kV | 添加 TVS 管,GND 铜皮露白 |
提醒:实验室数据 ≠ 产线数据,一定要留 20% 余量!
7. 小结与开源
- 架构:模块化事件总线,让「功能插拔」像搭积木
- 性能:5ms 实时环路 + 1uA 深度睡眠,续航 32 天
- 工具:Docker + GitHub Actions,3 分钟云端 OTA
- 感悟:嵌入式不是「卷」硬件,而是用软件思维重塑硬件
开源地址(含原理图 & 固件)
StarLight-LED
愿下一位读到这篇文章的你,也能在微小的 MCU 里,点亮属于自己的「无限式界」。
转载自:https://blog.csdn.net/u014727709/article/details/154407318
欢迎 👍点赞✍评论⭐收藏,欢迎指正

被折叠的 条评论
为什么被折叠?



