基于 ESP8266 的多路复用像素控制器(接线图+代码)
原标题:基于 ESP8266 的多路复用像素控制器(接线图+代码)
我正在寻找一种相对便宜的方法来驱动来自Vixen / Falcon Pi Player的大量 WS2811/WS2812 LED 像素,用于我的圣诞灯显示。我发现的大多数预制控制器都很昂贵,而且大多数 diy 版本是每个控制器的单通道/宇宙。所以,我开始编写/构建自己的代码。
硬件:
在硬件方面,ESP8266 非常适合这个价位,尽管我最初对无线解决方案并不着迷,但我开始考虑可以让它成功驱动多少像素。我选择了 Wemos D1 Mini Pro 来完成这项工作。它们可以从 Banggood、AliExpress 或 Ebay 以低于 5 美元的价格购买。
只有一个可用的 TX 端口(另一个用于编程和调试),需要为 WS2811/WS2812 可寻址像素以适当的时序写入,我需要一个廉价的组件,能够以非常高的速度切换以支持多路复用通过输出通道输出数据。SN74HCT125N 4 通道缓冲器/驱动器芯片提供了完美的功能,可在 Ebay 上以约 0.50 美元的价格购买。
最后但并非最不重要的一点是,不要忘记 10K 欧姆电阻。虽然没有这些它可能会工作,但当驱动程序禁用输出时,像素可能无法完全锁定。发生这种情况时,“Y”输出端口电压可以浮动,接地电阻将保持像素 LED 锁存。
软件:
在软件方面,我需要 3 个主要组件,1 个通过网络从协调器接收数据,1 个将数据写入像素链,1 个将两者粘合在一起。
接收数据组件:
该E1.31 DMX协议是开放的,所以很短的搜索结果,发现了forkineye / E131库的Arduino。因为我将从 Arduino GUI 对我的 ESP8266 进行编程,所以这个库将是完美的,并且只需要进行一些小的更改即可简化和易于使用。DMX 协议确实将每个宇宙的通道数限制为 512,并且每个像素占用 3 个通道,我们限制为每个宇宙 170 个像素。
像素驱动组件:
有许多库通过位撞击来驱动像素,这不是一个选择,我想使用 UART,所以我不必担心时间。问题是,ESP 只有 2 个 UART TX 端口,其中一个被 USB/调试端口占用。是时候学点数学了...
如果我的照明显示器使用保守的 50 毫秒刷新率...
使用快速的 800kbps 像素,每个像素需要 30us 来更新,每个宇宙最多 170 个像素。
写入一个像素的时间:30us/1000 * 170 = 5.1ms
在 8 个像素输出通道上多路复用此值会导致总刷新时间为 40.8 毫秒。如果我们将所有像素用于所有通道,则这属于来自节目播放器的 50 毫秒刷新。
*在实际测试中,超过 1000 像素可能有点粗略,当处理器不堪重负时可能会发生死机和重启。
本方案来源于网络,如涉及侵权可留言联系删除。
责任编辑:
【免责声明】
1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。
2、本文的引用仅供读者交流学习使用,不涉及商业目的。
3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。
4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。
拍明芯城拥有对此声明的最终解释权。