使用 Pimoroni Plasma 2350 W 打造更优质的 LED 灯:综合指南

用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 - RGB
  • COLOR_ORDER_RBG - RBG
  • COLOR_ORDER_GBR - GBR
  • COLOR_ORDER_GRB - GRB
  • COLOR_ORDER_BGR - BGR
  • COLOR_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这样不断更新迭代的理念,对这块板子的功能进行持续挖掘和优化。