前几天逛硬件社区的时候,看到一个特别扎眼的作品:有人把会议签到用的电子胸牌,硬生生改成了一枚蛋形的 Cyber Ægg。图一放出来,评论区都在说“这哪是胸牌,这分明是个可穿戴的玩具终端”。我仔细翻了拆解图,发现这不是简单的换壳,里面涉及硬件电路设计项目实例里最典型的一整套东西——主控选型、LED驱动、传感器交互、锂电池供电,还有不少人在讨论时反复提到 BMS 硬件开源项目。顺着这个思路,我把自己做类似徽章的经验整理了一遍,从电路到电池到外壳,一次讲清楚。
程序员做这种东西时,往往会遇到同一个问题:功能越加越多,电池越来越扛不住,板子越改越大。最后只能牺牲颜值,做成一个方方正正的黑盒子。Cyber Ægg 这个项目却能反过来,把一块电子胸牌做成一个圆润、可充电、能交互、还带点赛博气质的蛋形徽章,靠的并不是什么玄学,而是每一步都围绕“功耗、体积、交互”这三个词去做取舍。这篇文章,我会从头拆解整个项目:设计定位、电路方案、BMS 电池管理、PCB 与外壳装配,以及我在复刻这类项目时踩过的坑和排查经验。
1. 项目定档:Cyber Ægg 到底是个什么东西
1.1 从电子胸牌到 Cyber Ægg:一个标签的升级逻辑
电子胸牌在我们的印象里,一般是展会门口发的那种 LED 徽章,印个二维码、滚两行字,或者最多显示个静态图标。但 Cyclber Ægg 的定位完全不是“被动接收信息”,而是把它做成了一个带有动态显示、手势感应、低功耗唤醒的小型可穿戴终端。挂在胸前或背包带上,它是装饰;拿在手里,它能根据摇晃、翻转、轻敲切换动画;夜晚步行,它又能变成一枚柔和的灯标。
这个升级逻辑,和普通“换个更好看的 PCB”有本质区别。前者只是把板子塞进新壳子里,后者要考虑整机交互链路:用户怎么触发、屏幕怎么反馈、电池能不能撑住、固件如何升级。所以我在复刻这类项目时,会先把“胸牌”这个概念忘掉,把它当成一个穿戴设备来定规格。
1.2 先定需求和规格:做一枚蛋,不要只看外观
任何硬件项目,动手画第一根线之前都应该把需求写成可量化的表。这是我从几个开源硬件项目里学到的习惯,尤其当你做的是成品而非开发板时,规格表一定要包含外观尺寸、重量、续航、显示信息量这些平时容易被忽略的项。Cyber Ægg 参照的规格大致可以这样定:
| 项目 | 目标值 | 说明 |
|---|---|---|
| 外形尺寸 | 约 58mm × 70mm × 30mm | 蛋形曲面,扁椭圆 |
| 整机重量 | ≤ 65g | 含电池和外壳,佩戴无负担 |
| 显示区域 | 8×8 彩色点阵或 8×16 单色点阵 | 彩色炫,单色节能,二选一 |
| 主控 | ESP32-C3 | 自带 Wi-Fi/BLE,方便调试和固件更新 |
| 电池 | 3.7V 锂聚合物,400~500mAh | 兼顾体积和续航 |
| 充电 | Type-C,带充电管理和保护 | 充电电流控制在 200~300mA |
| 交互 | 加速度计检测敲击/摇晃 | 无需实体按键,成本低、手感好 |
| 续航目标 | 低亮度常亮约 3h,每天亮屏约 40min 可用 3~5 天 | 用低功耗策略实现 |
如果你要做的是复刻版,不必死守这些数字,但一定要把“尺寸、重量、功耗”这三项写在最前面。很多做电子胸牌的项目会优先堆功能,结果板子做出来比鸡蛋还要大一圈,佩戴体验直接崩掉。Cyber Ægg 这类设计之所以吸睛,是因为它在“玩”和“戴”之间保持了平衡:蛋形轮廓有辨识度,曲面外壳又能把 PCB 和电池藏得很干净。
2. 硬件电路设计实例:主控、显示和传感器怎么选
2.1 主控为什么选 ESP32-C3,而不是 STM32 或 ATmega328
这类小体积可穿戴设备的主控,主要看三件事:开发效率、休眠功耗、通信能力。很多人的第一反应是 STM32,因为资料多、外设全,但实际做下来会发现,STM32 在“联网更新固件”这件事上要折腾不少东西,比如 Bootloader 升级流程、Flash 分区、OTA 处理,对纯玩硬件的人来说有点劝退。ESP32-C3 则完全不同,它本来就是为物联网场景设计的 RISC-V 芯片,价格不高,集成度高,支持 Arduino 和 ESP-IDF 两套开发路径,自带 BLE,开发体验非常轻。
在实际项目中,我更倾向于直接用 ESP32-C3 模组,而不是拿裸芯片自己搞。选模组的原因很简单:模组已经把晶振、天线、匹配电路、Flash 都封装好了,硬件设计难度大幅降低。自己画裸芯片虽然能省几块钱、缩小几毫米,但天线区域一旦处理不好,连 BLE 都会变得不稳定,排查起来特别痛苦。对于 Cyber Ægg 这种目标为“做成艺术品”的项目,把风险降到最低才是第一原则。
2.2 蛋壳上显示:LED 点阵的两种路线
蛋形徽章显示区域是整个项目的灵魂。目前常用的方案有两个,各自优缺点非常明显:
- 单色点阵 + 驱动 IC(如 MAX7219):显示稳定、功耗低、价格便宜,适合做简单的数字、图形和滚动字。但单色在夜晚氛围感上差一些,只能走“极简科技”路线。
- 彩色灯珠(如 WS2812B / SK6812):像素级 RGB,可以显示渐变、流光、动画表情,视觉效果非常强。缺点是单颗全亮时电流较大,64 颗全彩灯珠全亮度瞬间能拉到 2A 以上,必须靠硬软件限流。
我在这个项目上选了 8×8 的 WS2812B 点阵。原因很直接:Cyber Ægg 的核心定位是“好看+可玩”,单色点阵不够骚。为了压制功耗,我把亮度从常用的 255/255 降到 60/255 左右,并且在固件里做了全局亮度钳制,任何动画都不允许超过这个上限。这样做的结果是,LED 全亮瞬间电流被控制在 300mA 以内,电池和 5V 升压都能承受。实际效果仍然很够用,因为 WS2812B 在低占空比下的视觉亮度已经足够,尤其是在环境光较暗的场合。
2.3 传感器和交互:摇一摇、敲一敲,蛋就“懂”你了
蛋形徽章没有键盘也没有屏幕太多区域可以触摸,为了不破坏蛋的完整性,最好用加速度计做无触点交互。我在项目里使用 LIS3DH,一颗三轴加速度计,通过 I2C 与主控通信。它能感知敲击、摇晃、倾斜和自由落体,非常契合徽章的使用场景。
固件里我设计了这样几组交互逻辑:敲击蛋身两下,切换到下一种动画;把蛋向左翻转,显示低电量提示图标;快速摇晃时播放“乱码”特效,让蛋看起来像在“运算”。这对用户来说几乎没有学习成本,而且没有机械按键,外壳可以保持一体成型,不需要在曲面上开洞。硬要说缺点,那就是调试时很容易被误触发——我在开发早期只要走路幅度大一点,屏幕就自己切动画。后来加了阈值滤波和 300ms 的窗口限制,效果才稳定下来。
3. 电源系统的重头戏:BMS 与低功耗
3.1 单节锂电池保护回路:不要把 BMS 理解成“充电器”
聊到 BMS(电池管理系统),很多人会先入为主地以为是特斯拉那种大型高压电池包,高深莫测。其实对于一枚小蛋形徽章来说,BMS 的核心就是三件事:充电管理、过充/过放/过流保护、以及安全切断。其中“充电管理”和“保护回路”是两套完全不同的模块,千万别混淆。
充电管理负责把外部 USB 的 5V 安全地“灌”给锂电池。传统方案里最常用的是 TP4056,它根据 PROG 引脚上的电阻值设定充电电流。我用的参考公式是:
充电电流(mA)≈ 1000 / R_PROG(kΩ),例如 R_PROG=4.7kΩ 对应约 213mA。
但这个公式有个前提:PROG 引脚的电压被稳定参考在 1V 左右,所以计算值是近似值,实际还要看散热和纹波。为了延长电池寿命,不要贪快,400mAh 电池用 200~300mA 充电就够,充太快反而会让电池发热、鼓包概率增加。
保护回路则负责防止电池在异常情况下损坏。单节锂电保护里最常见的组合是 DW01A 加 8205A,DW01A 负责监控电池电压与电流,8205A 内部集成两颗 MOSFET,充当“开关”,一旦检测到过充、过放、过流就断开电池通路。很多从淘宝买到的“带保护板锂电池”,其实里面已经整合了这套回路。自己画 BMS 的时候,我建议不要省掉这一级,哪怕直接用锂电池保护芯片焊接,也要把它作为独立模块设计进去,只有这样才能保证电池不会因为长期过放而彻底报废。
3.2 升压和电压轨设计:为什么不能拿电池直接给 LED 供电
锂电池标称 3.7V,充满后 4.2V,放完能到 3.0V 甚至更低。而 WS2812B 这类 LED 标称工作在 5V 左右,直接把电池电压接上去,灯珠会因为电压波动而亮度不均,严重时甚至会复位。所以项目中必须有一个 DC-DC 升压电路,把电池电压稳定在 5V。
我采用的方案是 TPS61040 升压到 5V,再用一颗 LDO(比如 HT7833 或辰芯 DC-DC)把 5V 降到 3.3V 给主控和传感器供电。这里升压之后再做 LDO 看似多此一举,但好处在于:LED 的瞬间大电流和主控的弱电信号完全隔离,不会因为灯珠闪烁导致 MCU 复位。实际测试里,TPS61040 输出 5V、带 300mA LED 负载时纹波控制在可接受范围,屏幕动画很稳定。
3.3 功耗预算:不够亮、不够久,往往是没算这笔账
可穿戴硬件做出来“续航尿崩”,十有八九是在原理图阶段没有做功耗预算表格。我通常会按“最高功耗场景”和“日常平均场景”分别估算:
| 模块 | 工作电流 | 备注 |
|---|---|---|
| ESP32-C3 深睡(RTC) | 约 5~10μA | 保留实时时钟和唤醒 |
| ESP32-C3 工作(BLE 广播) | 约 80~120mA | 根据 RF 输出功率变化 |
| LIS3DH 加速度计工作 | 约 10~20μA | 低功耗测量模式 |
| LED 8×8 点阵(60/255 亮度) | 约 200~350mA | 与动画内容强相关 |
| DC-DC 静态损耗 | 约 0.1~1mA | 空载时很小 |
从表里能看到,LED 是绝对的电老虎。我的策略是:日常使用中让 LED 保持关闭,当加速度计检测到敲击或抬起动作后,点亮屏幕 10~20 秒,之后自动进入休眠。这样一天按 40 次交互计算,每次亮屏约 0.3Wh 以内,400mAh 电池能撑到三天以上,续航体验完全可用。如果你要求 LED 常亮显示时间,那就必须在电池容量和充电频率之间取得平衡,没有免费午餐。
4. 从原理图到实物:PCB 布局、打样与蛋形外壳装配
4.1 PCB 布局里的坑:天线、散热和走线
画原理图容易,画 PCB 才是真正决定项目成败的一步。ESP32-C3 模组的天线要尽可能露在 PCB 边缘,附近不能铺铜,否则 BLE 信号会被严重衰减。LED 阵列密集区域要打足够的过孔,用于散热和电流回流;如果板子做成双层,就把底层大片铺成地,减少回路干扰。
我遇到过的一个典型问题是:天线区域下方走了 GPIO 跳线,导致手机搜不到 BLE 信号。排查了很久才发现是天线净空区没留够。后来我直接把天线放置在蛋形 PCB 的最上端,蛋壳开模时也在相应位置留出空隙,不再让金属支架或电池挡住信号。做这种曲面外壳里的 PCB,布局阶段就要和结构设计同步考虑,别等板子打完再发现天线被电池盖住,那时候只能推倒重来。
4.2 蛋形外壳:3D 打印的曲面之法
蛋形外壳是这个项目最有辨识度的部分,也是最容易翻车的地方。普通方盒子可以直接直角建模,而蛋形壳体必须设计成上下两个厚薄不一的壳腔:上层装 PCB 和 LED 阵列,下层塞电池和传感器。如果你直接用一体式蛋壳打印,很可能出现悬垂塌陷、支撑难拆、表面粗糙的问题。我的做法是切成两到三段打印,再通过卡扣或 M1.2 小螺丝固定,内部留出走线槽和电池窝。
外壳开孔也很有讲究:蛋的前端半透明区域用来透光,但不能正对灯珠开洞。比较稳的方案是让 LED 藏在 1.2mm 厚的半透明白色 PLA/ABS 壳层后面,相当于一个柔光罩,这样灯珠的颗粒感会被打散,显示效果更均匀。若是直接用透明壳,你会看到每个 LED 都是一个刺眼光点,观感会差很多。
4.3 固件与调试:先写 LED 驱动,再写状态机
固件开发顺序,建议先用 FastLED 库点亮单颗 LED,再跑动画循环,最后再加低功耗和传感器唤醒。不要一开始就把所有功能混在一起,否则出了问题根本说不清是硬件还是软件的问题。ESP32-C3 的 Arduino 环境对 WS2812B 支持很好,用 RMT 外设驱动,比普通 GPIO 位操作稳定得多。
我在写 Cyber Ægg 固件时,会把动画效果封装成状态机:待机态、点亮态、交互态、低电态。每个动画模块独立成函数,通过事件触发切态。比如敲击两次就进入“下一页”动画,摇晃进入“乱码”特效,这些都是很简单的逻辑,但状态机结构让后期加功能变得非常轻松。
5. 常见问题与排查技巧
5.1 硬件复刻常见问题速查表
| 现象 | 可能原因 | 排查与解决 |
|---|---|---|
| 充电指示灯不亮 | 电池接反、保护板短路、Type-C 母座虚焊 | 先量电池电压,确认是否为 3.0V 以上;再量充电芯片输入和 PROG 点电压 |
| 充完电还是开不了机 | 电池过放后保护芯片锁死 | 用可调电源给电池“硬充”到 3.2V 以上,再重新接回充电板 |
| 灯珠颜色不对或闪烁 | 时序被中断、供电能力不够 | 检查 LED 数据线是否靠近高频走线,给 LED 电源并联一个 100~470uF 电容 |
| BLE 连接不上 | 天线净空区不足或天线被金属遮挡 | 量天线区域到地铜的距离,至少留 3~5mm;调整外壳内部空间 |
| 电池用一天就没电 | 低功耗逻辑没生效 | 检查 ESP32-C3 的 deep sleep 配置;确认 LED 是否有亮度钳制 |
| 敲击触发特别灵敏 | 加速度计阈值太低 | 提高敲击检测阈值,增加 200~300ms 去抖窗口 |
5.2 调试心得:永远先怀疑电源,再怀疑代码
我调试这类小体积硬件时有一个习惯:任何“偶发故障”都先从电源入手。LED 偶尔闪、主控偶尔重启、传感器数值漂移,八成是电压波动。用示波器看 5V 和 3.3V 电源轨的纹波,比盯着代码找 bug 要高效得多。
比如我有一次灯珠全亮后主控直接重启,软件上看了很久没有头绪,最后用示波器抓到升压输出在 200mA 负载时出现了 500mV 的跌落。原因是我把 TPS61040 的反馈电阻选得太靠近地平面,导致信号耦合噪声。更换走线布局、把反馈电阻贴近芯片引脚后,问题彻底消失。硬件调试,本质上就是一层层排除变量,电源、时钟、信号,按顺序查,不要跳跃。
我拆过不少别人做的胸牌和徽章,也经常在开源社区看各种 BMS 硬件开源项目。说句实话,能跑通的方案并不复杂,复杂的是在有限空间里把功耗、散热、天线、结构全部照顾到。Cyber Ægg 这个蛋形徽章之所以让人眼前一亮,本质上是因为它在这些问题上没有偷懒,而作为复刻者,你不需要一步到位,可以先做一个功能最小的版本,点亮第一颗灯、唤醒第一次显示、充进第一次电,然后再一步步把它打磨成一枚真正能戴出门的“蛋”。