自制像素灯实验室

假设我们现在有一些媒体想在小型的LED屏幕播放。

让我们先在Resolume 6里设置,为我们的像素地图创建一个自定义进阶输出。首要的事情,我们需要为我们的LED矩阵屏幕创建一堆自定义的灯俱。Resolume的灯俱编辑器让你使用它创建出不同的灯俱设置。

灯具编缉器

在Resolume里,点击应用程序及选择灯具编缉器:
灯具编缉器可分为三个板槐:

灯具

全部灯具的列表,你可以按你所想加入及移除灯具,重新命名等。

灯具参数

这个板块容许你设置编缉中的灯具参数。像灯具中有什麽通道,灯具的宽度及高度,它的方向丶色彩空间等。

像素

我们所创建的灯具的一个视觉与数字的代表。

我们的14 x 14矩阵总共有196个像素。如果你还记得早前的知识,一个DMX域有多少个通道,你就会发现这个矩阵不能仅使用一个DMX域去盛载。我们只能在一个DMX域里盛载170 个像素,每个像素有512位元的红蓝绿资料!

所以我们需要创建两个灯具,以及把版面分为两部分。为简约起见,我们会创建两个灯具,代表矩阵的左右两部分。我们等下就会把这两个灯具用於两个DMX域中。驱动装置的任务是在两个DMX域中编制DMX资料并恰当地转换成LED讯号。不用担心,我们在後面会提及。
以上是我们14x14矩阵中所有像素点的实体排列。

我们会创建两个灯具名字分别为"14x14_LEFT"及"14x14 _Right"。注意它们的分别只在於它们的「分布」属性。

自定义灯具

在灯具板面中点击 "+"按钮,创建一个新的灯具。在左板面往下拉到该灯具,双击其名字去重新把它命名。我把它命名为"14x14_LEFT"。

我们看看这个灯具的灯具参数。

宽度与高度

这里让我们设置灯具的宽度与高度。我们会它设成为7 个像素宽,14个像素高。

色彩空间

色彩空间属性告诉Resolume如何组织每颗像素的颜色资料及每个颜色出现的次序。我们的像素灯里的有红绿蓝灯珠,但LED转化接收数据的真正次序亦会因其型号而异。

为简单起见,我会使用RGB像素灯及於後面会把驱动装置的数据正式排列筛选。注意你也可以驱动红蓝绿白(白)或纯白像素灯。有多种不同的像素灯设置让你选择。

伽傌值

我们可让这个参数设定为2.5。

走向

可能是最重要的属性,它告诉Resolume每颗像素灯的实体位置。我们的灯板的走向是由左下角的像素,数据向上流,转右至下一行,下一行再转右,再向上等等,就像我们选了的图示一样。

现在创建一个第二灯俱,你可以透过右击当前 "14x14_LEFT" 灯俱及选择覆制去快速创建。然後重新命名为"14x14_RIGHT"便可。

灯俱的参数是一样的,但我们需要改变分布图,因为这部分灯板从顶部开始!

现在我们设定好自定义的灯俱了,点击关闭去储存它们!

像素地图

下一步是把它们置入到Resolume的进阶输出系统,调整虚拟地图及把它们放到实体媒体的位置上。

返回Resolume的主视窗,点击输出菜单及选择进阶。

点击位於左上的预设菜单,点击新建去得到一个一样的空白板面。注意我在截图中的颜色渐层是我选择了的使用的媒体。它只是一个简单的着色器,是Resolume里自带的,叫做「渐层」。

再下一步,我们需要加入一个新的"DMX Lumiverse"。Resolume 把Lumiverse 当作为一个拥有等定DMX域ID及子网络ID的DMX域。每一个Lumiverse 可以有最多512条通道,就像一个正常的DMX域一样。点击在左上方的大"+"号图标上及选择 "DMX Lumiverse"。

接下来,我们需要从板面中移除「屏幕1」。我们只需设定一个只输出DMX输号的系统,而不是需要建立一个其他输出的样板。点击「屏幕1」及点击 「X」去把它从板面上移除。你就会剩下「Lumiverse 1」。

透过右击Lumiverse及选择覆制去覆制它,我们现在必需确定我们每个Lumiverse拥有正确的灯俱。预设,当你创建一个新的Lumiverse时,它会把你最後工作的灯俱加入至里面。如果它不是正确的,在左边面板点选它,并从右下的下拉选单中选择正确的使用。

我们的进阶输出板面会有2个Lumiverses。 Lumiverse 1 拥有 "14x14_LEFT" 灯俱,而Lumiverse 2 拥有"14x14_RIGHT"灯俱。

在正中央的面板中,你可以点击任何灯俱及把它在屏幕上自由移动。上面的截图有两个分开的灯俱,所以你可以看到我在做什麽。我们需要做两件事。把它们放在一起及重置大小以缩放。

让我们来谈谈缩放。就上面所示,灯俱置入时是对等的正方形。但这组灯俱其实是矩形来的,因为它的宽是7像素,而高是14像素。让我们点击左边的灯俱,并使用右边的面板中的宽度及高度属性参数来调整。

为简便及能清楚看到,让我们把1颗LED像素灯设定为电脑屏幕的50像素。所以左边灯俱的宽度是7x50=350像素,而高度则是14x50=700像素点。
我们为右边的灯俱设定同样的参数及把它们并排放在一起。

我们为灯光面板创建一个虚拟像素地图。现在你储存你的排版。点击左上的预设下拉选单及选择另存为。重新命名为"14 x 14 Panel"。

返回DMX域IDS,我们现在为每个灯俱指定一个适用的DMX域,这样驱动装置就能决定哪个DMX域渲染的数据传送至灯光板的哪个部份。

点击"Lumiverse 1",在左边你可以看到子网终及DMX域。就让它为0:0。现在我们点击"Lumiverse 2"及设置子网络0 : DMX域 1。

当单一影格被渲染时,Resolume会发送两个板块的数据至输出。板块1会拥有Lumiverse 1的所有数据,而板块2会拥有Lumiverse 2的所有数据。你的驱动装置会收到2个板块的数据,它亦会识别什麽板块的数据需要拷贝至哪一边的灯光矩阵中。

手作自制像素驱动器

在这部份,我们会建立一个装置让你可透过WiFi 接收Art-Net数据及把数据推送至我们的14x14 LED 矩阵。

我已准备好一些简单的编程,里面包含了做到上述装置的所有元素。如果你是从基建开始做这个工作,那麽明白编程的逻辑就至为重要,因为它被设计为模组,而且可以扩展及应用至大型的装置中。

我们会用到以下所述的硬件及乾件。我会尝试提供特定装置的连结,因为这方便你跟着在家制作。手册是为Windows PC环境而写的。假设是你使用的是pc及连接到无线或有线网络,而你的无络网络会连接到 ESP32 (後面会网络设置会提到). 你会需要到 Wifi SSD 及 钥匙。你的PC则需要与无线网络无限制地沟通。

硬件

软件

安裝Arduino IDE及設定ESP32 API

 arduino.cc下载 Arduino IDE,然後安装并顺序执行以下步骤:

  1. 前往 Espressif GitHub 网站下载 ESP32 Arduino API 
  2. 在右上方,点击"复制或下载" 及选择下载ZIP,储存到你的桌面
  3. 前往你本机电脑文件的资料夹及定位Arduino的文件夹路径为 "C:\Users\USERNAME\Documents\Arduino"
  4. 如果本身没有一个叫"Hardware"的资料夹,去创建一个资料夹及命名为"Hardware"
  5. 在 "Hardware"里,创建一个资料夹叫"espressif"
  6. 在该资料夹内,解压步骤2所述ZIP档案的内容及重新名命该解压资料夹为"esp32"
  7. 进入"esp32\tools"资料夹及定为执行档"get.exe"。双击它及直至指令弹出及消失。这个动作会从Espressif的伺服器下载最新的API,因应你的网络连线速度,它大概会花5-10分钟不等。当指令弹出及消失,你可以到下一步
  8. 打开Arduino IDE,点击工具菜单,选择面板及向下滚动。如果你正确安装所有上述的事情,你会看到一堆 ESP32 的板如下

下一步是从我的GitHub下载工程的源代码,储存在你的桌面,以及打开档案文件 "ESP32ArtNetDriver.ino"。点击工具菜单,选择该电路板,然後你会发现"Node32S"电路 板,选择它。

透过USB数据线连接ESP32至你的PC电脑,等待驱动的安装。然後,在Arduino IDE里,选择工具,端口及选择连接EPS32的端口。你现在已准备好编制及上传代码至你的微处理器,但请继续阅读此文,因为我们还需要作出一些放动。

在代码的22及23行:

//Networking

const char * ssid = "ArtNet";

const char * password = "megapixels";

改变SSID及Password至你现在无线网络所使用的(SSID)名称及无线网络密码。做完後点击上传按钮,等待几秒让代码编制及上传至ESP32。这时,你的DevBoard已准备就绪!接着让我们连结所有硬体吧!

关於这个实验室的网络注意事项

想达至最佳的硬件表现,最佳的选择是把你的运行Resolume的电脑透过有线网络端口连接至你的网络中。你当然可以在Resolume透过WIFI串流Art-Net数据,但同时你会发现lag及因UDP协议的本质,出现大量封包遗失的情况。这里是一个我们为这个实验室推介的网络设置例子:


我会使用相对便宜的消费者等级无线路由器,由TP-LINK制造。但你可以使用任可你想用的路由器,只要有可用及开啓的DHCP便可。

硬件接驳

把你的硬体跟据上图连接起来。

我们使用SN74HCT245於电平转换。SK9822像素灯的数据及时钟线的假设电平为5V,当0v = 0 以及 5v = 1。ESP32的逻辑电平是3.3V,当0v = 0,而 3.3v = 1!

当连接妥当,打开电源及已准备好使用,但⋯⋯没东西看!

在Resolume中开啓输出

在这个阶段中,即便当你开啓Resolume,你也看不到任何在板面上的东西,因为我仍未从Resolume中输出任何数据!

打开Resolume及选择进阶输出。在这个例子中,我们会使用"广播"方法传送数据至ESP32。 广播UDP封包会面对一大堆挑战,特别是透过无线网络,在你未来的任何工作中,都不要尝试这个方法除非你有一个小而可控的实验室设置。

点选右边的"Lumiverse 1" 及"TargetIP"属性,选择"广播"。对 "Lumiverse 2”进行相同的操作,你应该就可看到你的输出显示在你的灯光矩阵上!

相关文章