
基于ESP32C3的ARGB控制器硬件设计
前言
最近在做桌面氛围灯和灯效控制相关的东西,需要一块稳定的WS2812B控制器。其实市面上有很多完整的基于Arduino或其他方案的控制器,但是都比较闭源,灯效不可控、协议封闭、刷新率一般的问题
所以干脆自己从硬件到软件再到上位机自己做一块板子,也是挑战一下自己的全栈设计能力(牛马能力(bushi))
也是画的第一块板子(((
整体方案
第一版
其实整个结构非常简单,就是最普通的: ESP32-C3 → 74HC245电平转换和放大 → WS2812B
供电则是直接采用 Type-C 16pin 供电,通过上下拉 CC 引脚,作为 Sink 设备协商默认电流,直接输出标准 5V。但是电源部分设计不是很合理,一个是电源适配器电流有限,第二个是走线也只有一根线,电流拉不起来,后面可能改成四层板+PD诱骗,实现更大的负载输出。
板载CH340X和ESP32C3的自动下载电路,实现基于DTR和RTS的自动串口下载,个人不会用JTAG和其他调试方式,只会用串口(bushi)
MCU用的ESP32C3 WROOM-02N4模组,单R核,160M主频,提供400KByte SRAM和2MByte flash,未来可能加入TF卡,用来跑外置动画
不过总而言之,跑肯定是能跑的(
PCB、原理图和工程文件
本项目自豪的使用嘉立创EDA进行PCB和原理图绘制,并自豪的使用嘉立创打板服务,本项目工程文件基于嘉立创EDA生成
链接: https://pan.baidu.com/s/1mRoOt9Ii_9jINK_Nv561vw?pwd=f35d 提取码: f35d
第二版
第一版整体功能已经可以正常驱动 WS2812B,并通过串口进行固件下载和调试,但在实际开发过程中发现几个问题:
ESP32C3自带USB Serial/OpenCBD控制器(注意不是标准USBOTG控制器,亦不能跑TinyUSB), 实际上CH340X是没必要的,而且挤占PCB空间。
Flash容量偏小,将来放不下LZ4或者GIF这类动画,新增模式只能通过苦逼写算法实现,开发难度大,周期长
缺少麦克风,没法做音乐动效,虽然没啥用,但是有总比没有强(bushi
因此第二版的核心改动是:
保留原有60mm x 20mm的紧凑尺寸,尺寸严格保持3:1, 所有元器件布局中心点严格对齐
去掉CH340X USB转LLT芯片,改为USB直通ESP32C3
ESP32C3模组自带USBSerial控制器自带自动下载,去掉自动下载电路,但把BOOT0引脚和按钮BTN共用,保留手动进入flash download的能力
增加外挂 Flash,主要用来放一些东西,16MByte大小,因为容量不大速度要求不高,走普通4线SPI, 固件上计划基于文件系统管理
增加麦克风输入,麦克风电路只是很简单的上拉偏置,还没验证是否可用(
PCB、原理图和工程文件
第二版硬件尚未做可用性验证
主要体现体现为:
外挂FLASH走线是否合理,是否能稳定读写
新增麦克风没做三极管放大,是否能正确读到数据,数据是否反应真实音量,是否可用
电流目测走USB 3A可以用,但是电路上没有做任何电源保护装置,包括防反接和过流保护,因此电源保护能力完全取决于USB电源适配器
长期3A电流下稳定性未做验证,理论上+5V电路没有长期3A的能力,可能会导致发热甚至烧毁,但由于尺寸限制,我也不知道怎么走更大的铜片了
还望各位大佬提出宝贵意见(
固件、上位机
固件采用标准ESPIDF进行开发,通过标准RMT模块,通过自动分包方式实现拆包发送
因为不怎么会写安卓/IOS软件,这边上位机还是采用最熟悉的Python+PySide6方案进行开发(bushi
现在感觉python开发越来越力不从心了,估计在后面会转向WINUI3原生开发,基于C# + XMAL










