前言

最近在做桌面氛围灯和灯效控制相关的东西,需要一块稳定的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卡,用来跑外置动画

不过总而言之,跑肯定是能跑的(

img

PCB、原理图和工程文件

img

img

本项目自豪的使用嘉立创EDA进行PCB和原理图绘制,并自豪的使用嘉立创打板服务,本项目工程文件基于嘉立创EDA生成
链接: https://pan.baidu.com/s/1mRoOt9Ii_9jINK_Nv561vw?pwd=f35d 提取码: f35d

第二版

这里用来预留第二版修改方案哈哈哈,因为第一版硬件只能说能用,电流、阻抗方面有很大问题,板子密度也不够高

固件、上位机

固件采用标准ESPIDF进行开发,通过查半表对RGBByte转换为SPIBit,并经由硬件SPI和DMA发送出去

因为不怎么会写安卓/IOS软件,这边上位机还是采用最熟悉的Python+PySide6方案进行开发(bushi