用Pimoroni Plasma 2350 W打造更出色的LED灯
又到了一年中的十二月狂欢季,我四处寻找一套可寻址的LED串灯来布置。
从当地超市买的LED灯,通常要么是单回路,要么是多回路组合。这就导致它们要么全部亮起,要么只能按固定数量的模式交替闪烁,着实乏味。
超市里难觅可寻址LED串灯的踪影。这种灯的特点是,电线上的每个LED都能单独寻址,设置颜色或亮度。判断这些灯是否可寻址也简单,若有三根电缆,两根用于供电,一根用于与灯通信,那就是可寻址的。
我在寻找过程中发现了Pimoroni的Plasma 2350 W,它能和多种不同的LED串灯搭配使用。我在他们的商店购买了Plasma 2350 W和一套66颗星星造型的灯,这或许是用这块板子入门的最简方式。
这是Plasma 2350 W正面的图片。
这是背面的图片。
这是星星造型LED灯靠在墙上拍摄的图片。
即便只是插上设备,也能呈现出漂亮的彩虹效果。要是添加WiFi凭证,从外部API获取随机颜色,那就更有趣了。这意味着只需更改API端点内容,就能更新设备上的颜色。
在本文中,我们将了解Plasma 2360 W,探讨如何设置这块板子,还会介绍一些用MicroPython对其编程的简单示例。这里看似也体现了在技术设备设置和编程上,与Drupal开发有相似的探索与实践精神。在Drupal开发里,也需要对各种模块和功能进行深入了解和设置。
一、规格参数
Plasma 2360 W有不少值得介绍的规格参数,下面深入了解一下。
- 由RP2350A供电 (双ARM Cortex M33内核,最高运行频率150MHz,拥有520KB SRAM)
- 4MB QSPI闪存,支持XiP
- 树莓派RM2模块(CYW43439),支持IEEE 802.11 b/g/n无线局域网和蓝牙
- 复位、启动和用户按钮。
- 一个可编程的板载RGB LED。
- 用于连接LED灯带的螺丝端子
- 用于供电和编程的USB - C接口(最大3A)
- Qw/ST(Qwiic/STEMMA QT)接口
- 尺寸:约61 x 22 x 12mm(长x宽x高,包括接口)
这块板子是完全组装好的,不用焊接就能开始使用。不过,得把LED灯连接到设备上。
它与5V的WS2812/Neopixel/SK6812和APA102/Dotstar/SK9822 LED兼容,有多种灯光选择。
二、连接到板子
套件中附带的LED串灯有三根剥好皮的电线,可直接连接到Plasma上。
- 标有圆点的5V电线,插入标有“5V”的位置。
- 中间用于与灯通信的电线,插入“DAT”位置。
- 最外面没有圆点的电缆,插入标有“ - ”的位置。
这是我连接好电线的板子,右侧的插座就是标有“5V”的插座。
把电线连接到螺丝端子上可能有点麻烦,但连接好后就会正确就位。
三、安装固件
从技术上讲,设置时不一定“需要”安装固件,但可以随时按以下说明刷入默认固件。
- 从Plasma的Github仓库下载固件。对于这个设备,需下载名为
plasma_2350_w - v1.0.0 - micropython - with - filesystem.uf2的文件,这将为设备刷入Micro Python可执行文件和相关文件系统。 - 用USB - C电缆将Plasma 2350 W连接到电脑。
- 按住“BOOT”按钮的同时点击“RST”,让设备进入引导加载模式。
- 将下载的.uf2文件拖放到出现的“RP2350”驱动器中。
设备应该会重置,现在就可以使用了。可以用Thonny访问设备,用Micro Python和内置的Plasma库对灯光编程。这和Drupal模块开发中对模块进行配置和使用类似,都需要按照一定步骤进行操作,让系统发挥出应有的功能。
注意,刷入固件会删除设备上更改过的任何文件,所以要先备份正在处理的所有内容。
四、使用Thonny
Thonny是一个Python集成开发环境(IDE),能轻松连接到Plasma 2350 W,但要先在Thonny中设置一些选项。
打开Thonny,点击 工具 > 选项,然后转到 解释器 选项卡。在该选项卡上,点击“解释器类型...”选项,从列表中选择 MicroPython(树莓派Pico)。
设置好选项后,重启Thonny并点击 打开。会看到一个小对话框,询问从哪里打开文件。若一切设置正确,会看到如下所示的对话框。
若出现设备繁忙的错误,点击Thonny工具栏中的 停止 按钮,然后再试一次。
若一切正常,会看到显示该设备可用文件列表的对话框。
需要查看的文件有:
main.py- 这是核心可执行文件,设备插上电源后会自动加载。出厂时,该脚本会尝试连接WiFi网络,并向包含颜色信息的外部API发出请求,之后该颜色会显示在灯带上的所有LED灯上,每120秒会发出一次新请求并更新颜色。secrets.py- 供main.py使用的文件,用于连接本地WiFi网络。sparkles.py- 一个独立的脚本,会以多个重叠、相移的正弦波点亮LED,营造闪烁效果。
设备上还有其他一些文件,有些能与2350 W配合使用,有些要连接正确接口后才能用。可以四处探索,但不能保证所有文件都能正常工作。
在 secrets.py 文件中更新WiFi详细信息,然后保存回设备。将设备插入任何USB端口时,main.py 文件会运行,若WiFi连接失败,会显示彩虹图案;若API请求成功,则显示单一颜色。
五、对Plasma 2350 W进行编程
对Plasma 2350 W编程很简单,因为该设备自带名为 plasma 的MicroPython包。这个包提供了很多实用函数,可用它们更新LED、监听按钮按下事件、连接WiFi,甚至从外设接收数据。Plasma有大量文档和示例,会教你如何入门。就像在Drupal开发里有丰富的资料和示例帮助开发者进行Drupal模块开发一样。
设备上附带的示例虽有用,但在我的设置中,一开始并不能完全正常工作。初步测试发现,附带的LED灯颜色有点不对,本以为是红色,结果显示成了蓝色。
解决方法是将LED灯的颜色顺序改为蓝、绿、红,可在MicroPython脚本开头设置plasma对象时配置。有许多常量可控制这个设置。
COLOR_ORDER_RGB- RGBCOLOR_ORDER_RBG- RBGCOLOR_ORDER_GBR- GBRCOLOR_ORDER_GRB- GRBCOLOR_ORDER_BGR- BGRCOLOR_ORDER_BRG- BRG
可以在脚本中使用以下代码设置颜色顺序,将 color_order 参数传递给设置脚本。
NUM_LEDS = 66
led_strip = plasma.WS2812(
NUM_LEDS, color_order=plasma.COLOR_ORDER_BGR
)
led_strip.start()
进行这样的更改后,设置的颜色就会正确显示。可以根据自身情况实验,找到正确的设置。
使用 led_strip 对象,可调用 set_rgb() 方法设置灯带中任何LED的颜色。该方法需传入LED的编号,然后是该LED的红、绿、蓝值。无论开头如何设置颜色顺序,该方法中颜色的顺序始终相同。
例如,要将灯带中的第一个LED(LED数组的索引从0开始)设置为红色,可使用以下代码。
led_strip.set_rgb(0, 255, 0, 0)
要将整组LED设置为单一颜色,可使用一个简单的循环。
for i in range(NUM_LEDS):
led_strip.set_rgb(i, 255, 0, 0)
若想清除之前设置的所有颜色,可使用clear()方法。
led_strip.clear()
除此之外,还有很多示例可帮助入门,默认自带的 main.py 文件能帮助开始进行WiFi连接和实现不同的颜色效果。
六、总结
这东西太棒了。这是一块制作精良的印刷电路板,有很多连接选项和功能。
我已经为它规划了一些项目想法,而且内置的WiFi模块意味着还能通过WiFi接口执行一些操作。
在功耗方面,它也非常出色。我将它插在办公室的电池上,运行默认脚本大约80个小时后灯才熄灭。
设置过程体验不是特别好,因为将灯连接到板子上有点麻烦。我在拧紧螺丝时手滑了一下,割伤了自己。我的LED灯的数据线大约在中间位置断了,但我用一点焊接(还有融化的塑料)就轻松解决了问题。
如果能为这块板子配个外壳就好了。暴露在外的芯片看着不太美观,但Pimoroni在他们的网站上不卖外壳。如果你正在阅读这篇文章,并且有一台3D打印机,请与我联系!
固件中附带的示例给了我很多关于如何使用WiFi接口、处理按钮按下事件以及其他一些事情的不同想法。除了LED螺丝接口外,板子还有其他一些接口可以连接。我感觉我目前所做的只是这块板子功能的冰山一角。非常值得购买!未来在技术探索中,也可以借鉴Drupal升级到Drupal11这样不断更新迭代的理念,对这块板子的功能进行持续挖掘和优化。


