【一】使用ESP32与WLED驱动WS2812B 32*32显示屏 1024位点阵屏

使用ESP32驱动由1024颗WS2812B组成的显示屏,实现动态效果或显示图片。
0 Shares
0
0
0

前言

为了完成大创项目,斥巨资购买了四块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驱动库

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项目

WLED是一个来自于德国的开源项目,它将ESP8266/ESP32整合为一个方便且功能极其强大的通用LED控制器。不管是1D的灯带、2D的显示屏、甚至是3D的光立方,它都可以非常方便且很好地支持。WLED拥有非常方便的配置器,通过图形化的操作,不需要任何代码即可完成对于LED灯板顺序或者位置的排布。

下面我将翻译官方wiki的安装方式,安装方法非常简单:

首先是硬件组装:

将 WS2812B 兼容 RGB(W) LED 灯条连接至GPIO2。在大多数基于 ESP8266 的开发板上,该引脚被标记D4,在基于 ESP32 的开发板上使用IO16G1616。如果连接线无法保持较短,请使用电平转换器/转换器。可以选择将常开按钮连接到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,这里不多做介绍。


形态设计与结构

使用3D打印的结构件支撑LED面板

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

采购的制作成品的材料
购买的相框

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

使用磨砂亚克力板替换透明亚克力板
最后的成品效果

由于使用了成品的相框外壳,最后整个外壳看起来简约,可以很好的融入居家环境,也尽可能减少了DIY作品的廉价感,达到了较为不错的效果。


下一篇文章将详细介绍,如何实现数字化火焰的效果,和整个设计较为学术的部分。

请跳转至数字化火焰设计研究方法

0 Shares
发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注