前言
为了完成大创项目,斥巨资购买了四块8*32位的WS2812B,单块约为50块钱。有一说一成本偏高,但考虑到自己开板的话要一颗一颗手焊,还是选择购买成品板。

驱动器选择便宜且方便的ESP32,自带WiFi与蓝牙符合项目后期联网需求。
WS2812B
引用一段WS2812B生产厂家的技术文档介绍:
产品概述:
WS2812B-2020是一个集控制电路与发光电路于一体的智能外控LED光源;其外型采用最新的molding封装工 艺,将IC与发光芯片封装在一个2020的封装尺寸中,每个元件即为一个像素点;像素点内部包含了智能数字接口 数据锁存信号整形放大驱动电路,还包含有高精度的内部振荡器和可编程定电流控制部分,有效保证了像素点光 的颜色高度一致。
数据协议采用单线归零码的通讯方式,像素点在上电复位以后,DIN端接受从控制器传输过来的数据,首先 送过来的24bit数据被第一个像素点提取后,送到像素点内部的数据锁存器,剩余的数据经过内部整形处理电路整 形放大后通过DO端口开始转发输出给下一个级联的像素点,每经过一个像素点的传输,信号减少24bit;像素点 采用自动整形转发技术,使得该像素点的级联个数不受信号传送的限制,仅受限信号传输速度要求;高达 2KHz 的端口扫描频率,在高清摄像头的捕捉下都不会出现闪烁现象,非常适合高速移动产品的使用;280μs以上的 RESET时间,出现中断也不会引起误复位,可以支持更低频率、价格便宜的MCU;LED具有低电压驱动、环保 节能、亮度高、散射角度大、一致性好超、低功率及超长寿命等优点。将控制电路集成于LED上面,电路变得更 加简单,体积小,安装更加简便

WS2812B使用方便,只需一根数据线即可完成串联成组:

FastLED驱动库

首先使用基于arduino平台的FastLED库对LED灯板进行测试,该库可以对LED灯带进行简单的效果显示,它用数学模型使成组LED显示动态效果。对于1D的LED灯带显示较好,但对于2D的灯板显示的效果很少。
由于灯板采用从头到尾的横向排布,将普通的灯带程序烧录进去也有不错的光影效果,但远远打不到显示2D动画的要求

在库管理器中可以直接下载安装


修改LED_PIN为LED驱动引脚,NUM_LEDS为总共的LED数量,将LED_TYPE改为WS2812B,烧录即可使用
如果只是制作环境效果灯,FastLED绰绰有余,我们用此来测试所有LED是否正常,但对于2D的显示屏就无能为力了。
WLED固件
建议浏览原项目wiki:
项目的原地址

WLED是一个来自于德国的开源项目,它将ESP8266/ESP32整合为一个方便且功能极其强大的通用LED控制器。不管是1D的灯带、2D的显示屏、甚至是3D的光立方,它都可以非常方便且很好地支持。WLED拥有非常方便的配置器,通过图形化的操作,不需要任何代码即可完成对于LED灯板顺序或者位置的排布。
下面我将翻译官方wiki的安装方式,安装方法非常简单:
首先是硬件组装:
将 WS2812B 兼容 RGB(W) LED 灯条连接至GPIO2
。在大多数基于 ESP8266 的开发板上,该引脚被标记D4
,在基于 ESP32 的开发板上使用IO16
或G16
或16
。如果连接线无法保持较短,请使用电平转换器/转换器。可以选择将常开按钮连接到GPIO0
(NodeMCU/Wemos 引脚D3
,在 ESP32 使用时IO17
)和接地,以执行可配置的操作。注意:板引脚命名因制造商而异。请使用您购买的特定主板上的主板引脚排列并使用 GPIO 引脚来参考本指南。确保将 ESP 和 LED 灯条接地连接在一起!

当使用 ESP8266 和具有时钟和数据的 LED 时,您可以使用硬件 SPI(通常更快)或软件 SPI。- 硬件 SPI:使用GPIO14
(SCLK) 作为时钟,使用GPIO13
(MOSI) 作为数据。- 软件 SPI:由于所有引脚都可以在 LED 设置的硬件部分中更改,因此您可以使用任何引脚。建议使用GPIO1
(TxD) 作为时钟,使用GPIO2
(D4) 作为数据。
为了安全操作,建议正确选择电源线尺寸并集成保险丝。
作为参考,您可以使用此LED 电源、接线和保险丝计算器。
简单来说就是将灯板的数据引脚接入ESP32的GPIO16(NodeMCU的TX2接口),在本项目中因为使用了四块总计1024颗灯珠,单个pin口所连接的LED数量不建议超过800颗。因此,我将四块LED灯板分为两组,每组两块串联。其中一组连接GPIO16(TX2),另一组连接GPIO4 (D4),由于在固件中有限制功率的功能,因此我没有额外使用保险丝。电源使用了一个5V 6A的开关电源。
接下来,我们将为ESP32烧写WLED固件,WLED提供了一种通过浏览器烧写固件的方法,笔者是第一次使用这样的方法感觉非常震惊和新奇。这种方法大大降低入门者的使用门槛,应当被推广。
通过WLED WEB烧写程序
确保您运行的是最新的桌面 Chrome 或 Edge 浏览器,然后前往WLED 安装程序站点!如果您要更新 WLED 的现有版本,请确保取消选中“全新安装”,以便保留您的设置。此安装程序尚不适用于闪存芯片小于 4MB 的 ESP(例如 ESP01)

笔者使用了网页翻译工具,根据网站的引导将USB连接ESP32,浏览器会显示弹窗选择端口,这里选择带有例如CP2012或是CH340字样的COM口。安装非常快速,笔者使用plain版的0.14.0固件,烧写完会弹出引导界面,选择对应的WiFi即可完成安装。
对于其它的烧写WLED的方法,笔者没有尝试,可以查看官方wiki,这里不多做介绍。
形态设计与结构

接下来,需要将裸露LED阵列的电路板尽可能使其结构完整并保证一定的美观性,通过3D打印的结构件将发热量较大的LED面板悬空的支撑起来,因为购买的LED面板上并没有螺丝孔,为保证强度使用了大量的502 :)


对于外壳结构,因为体积比较大采用3D打印将会非常昂贵,在网上定制木框或者亚克力在不走量的情况下也并不值。为了节省成本,我想到了使用成品的相框作为外壳,相框的外侧有一层透明的亚克力板,正好将其替换为白色磨砂的亚克力泛光板,可以起到模糊图像的效果,至于为何模糊图像在下文中会提到。

由于使用了成品的相框外壳,最后整个外壳看起来简约,可以很好的融入居家环境,也尽可能减少了DIY作品的廉价感,达到了较为不错的效果。
下一篇文章将详细介绍,如何实现数字化火焰的效果,和整个设计较为学术的部分。
请跳转至数字化火焰设计研究方法