作者 | Stack Thomas
译者 | 弯月
出品 | CSDN(ID:CSDNnews)

注意:该项目没有考虑家庭网络安全问题。你应当使用密码,并确保网络无法被外界访问。

我没有任何IT方面的经验,但在研究了一段时间后,成功地完成了该项目,这都要归功于本文中提到的几个开源项目。
该项目需要的硬件:

  • 树莓派,这是一个小型计算机(我使用的是Zero V2,但任何支持WiFi的树莓派均可)
  • WS2812全彩LED灯带(我用的是5条50灯珠的灯带串联)
  • 5伏电源适配器(确保电源适配器能为LED灯带提供足够的功率,我用了多个USB充电器)
  • 绿色电工胶带(用来隐藏灯带上的红绿白色电线)
  • 一个箱子,用于放置这些设备

第一步:设置树莓派

安装树莓派系统并安装Node-RED和必要的软件包。
安装树莓派系统,如果你使用无头设置,确保启用了SSH或VNC。
你可以用任何方法进入树莓派(对于无头设置,SSH是最简单的方法)
确保树莓派系统为最新版本。
使用下述命令安装Node-RED:

bash <(curl -sLhttps://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)

设置Node-RED在计算机启动时自动运行:

sudo systemctl enable nodered.service

如果你想使用LED HAT来控制灯光,则需要装一个树莓派专用的PiCube 4x4x4 LEDcube HAT,这是一个能控制64个灯珠的单色(红蓝绿)的LED设备。
将PiCube安装到树莓派的40针GPIO排针上。
打开Git Bash控制台,使用下述命令下载代码库:

git clone https://github.com/sbcshop/PiCube.git

代码将被下载到home/pi 目录下。使用ls命令查看目录列表,然后使用cd命令进入目录:


cd PiCube

demo.py是PiCube的示例代码。运行下述命令测试并尝试PiCube。

python3 demo.py

这段代码会在PiCube上显示不同的灯光效果。你也可以修改代码来创建自己的效果。

第二步:设置Node-RED

我们可以通过Node-RED所在的树莓派(http://localhost:1880)或本地网络中的任意计算机来访问。如果从其他计算机访问,应该使用树莓派的主机名或IP地址,即http://hostname>:1880。在树莓派上执行hostname -i可以看到IP地址。
我们需要添加另外两个模块,以便控制LED。我们需要添加:

  • node-red-dashboard
  • node-red-node-pi-neopixel
    如果你想使用命令行来添加,只需要通过链接找到命令,确保将其放在正确的目录下,以便Node-RED能发现。或者,你也可以通过UI来添加:
  • 点击右上角的Menu按钮
  • 在下拉菜单中选择Managepalette
  • 选择Install选项卡
  • 在搜索框中输入node-red-dashboard
  • 点击install
  • 完成后,再输入node-red-node-pi-neopixel
  • 点击install
  • 最后点击Close
    现在Node-RED应该有了所有点亮灯带所需的模块。接下来:
  • 点击右上角的Menu
  • 在下拉菜单中选择Import
    输入下述代码:
[{"id":"85fce9c6579baaa0","type":"tab","label":"ChristmasLightsSimple","disabled":false,"info":"","env":[]},{"id":"cc28a93a30fc342a","type":"ui_colour_picker","z":"85fce9c6579baaa0","name":"ColorPicker","label":"COLORPICKER","group":"d2ace9cc.9f3998","format":"rgb","outformat":"string","showSwatch":true,"showPicker":true,"showValue":true,"showHue":false,"showAlpha":false,"showLightness":true,"square":"false","order":1,"width":0,"height":0,"passthru":true,"topic":"","x":370,"y":360,"wires":[["024561a721d6f79c"]]},{"id":"024561a721d6f79c","type":"function","z":"85fce9c6579baaa0","name":"SetColor","func":"var count = global.get('count')||0;\nmsg.payload= msg.payload.replace(/[rgb()\\s]/g,\"\");\nif(count===0){\n    msg.payload = msg.payload;\n}\nelse{\n    msg.payload = (count-1) + \",\" +msg.payload;\n}\n\nreturnmsg;","outputs":1,"noerr":0,"x":540,"y":360,"wires":[["c0297b03d780b3ae"]]},{"id":"693df877b38a2cf1","type":"ui_button","z":"85fce9c6579baaa0","name":"Clear","group":"d2ace9cc.9f3998","order":6,"width":0,"height":0,"passthru":false,"label":"CLEAR","tooltip":"","color":"","bgcolor":"","icon":"","payload":"0,0,0","payloadType":"str","topic":"","x":190,"y":460,"wires":[["a96f4433de81777e","663a12cf6cede0ef"]]},{"id":"206d8115b7db9943","type":"ui_dropdown","z":"85fce9c6579baaa0","name":"SelectStrip Color","label":"SELECT STRIPCOLOR","tooltip":"","place":"SELECTSTRIP COLOR","group":"d2ace9cc.9f3998","order":4,"width":0,"height":0,"passthru":true,"multiple":false,"options":[{"label":"RED","value":"255,0,0","type":"str"},{"label":"GREEN","value":"0,255,0","type":"str"},{"label":"BLUE","value":"0,0,255","type":"str"},{"label":"WHITE","value":"255,255,255","type":"str"},{"label":"PURPLE","value":"255,0,255","type":"str"},{"label":"CYAN","value":"0,255,255","type":"str"},{"label":"YELLOW","value":"255,255,0","type":"str"}],"payload":"","topic":"","topicType":"str","className":"","x":370,"y":420,"wires":[["c0297b03d780b3ae"]]},{"id":"9d8f5d23eeba3096","type":"delay","z":"85fce9c6579baaa0","name":"","pauseType":"rate","timeout":"1","timeoutUnits":"seconds","rate":"4","nbRateUnits":"0.0101","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"outputs":1,"x":710,"y":560,"wires":[["c0297b03d780b3ae"]]},{"id":"c0297b03d780b3ae","type":"rpi-neopixels","z":"85fce9c6579baaa0","name":"WS2812BLEDSTRIP","pixels":"250","bgnd":"","fgnd":"","wipe":"0","mode":"pixels","rgb":"grb","brightness":"40","gamma":true,"x":960,"y":400,"wires":[]},{"id":"40080ab07f9975a1","type":"ui_button","z":"85fce9c6579baaa0","name":"Christmas","group":"d2ace9cc.9f3998","order":5,"width":0,"height":0,"passthru":true,"label":"Christmas","tooltip":"","color":"","bgcolor":"","icon":"","payload":"true","payloadType":"bool","topic":"","x":200,"y":620,"wires":[["5db1f6bc1f363b40"]]},{"id":"34273e36c70ad99f","type":"debug","z":"85fce9c6579baaa0","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"reset","targetType":"msg","x":750,"y":700,"wires":[]},{"id":"5db1f6bc1f363b40","type":"function","z":"85fce9c6579baaa0","name":"Christmas","func":"varnumberOfLEDs = 250;\n\nvar j = 0\n\nwhile (j<numberOfLEDs+1){\n        var setColor = j+','+ 255 +','+ 0 +','+0;\n       node.send({payload:setColor});\n       j++;\n        var setColor =j+','+ 0 +','+ 255 +','+ 0;\n       node.send({payload:setColor});\n       j++;\n        var setColor =j+','+ 0 +','+ 0 +','+ 255;\n       node.send({payload:setColor});\n       j++;\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":460,"y":620,"wires":[["c0297b03d780b3ae"]]},{"id":"a96f4433de81777e","type":"change","z":"85fce9c6579baaa0","name":"","rules":[{"t":"set","p":"reset","pt":"msg","to":"payload","tot":"msg"},{"t":"delete","p":"payload","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":440,"y":520,"wires":[["9d8f5d23eeba3096","34273e36c70ad99f"]]},{"id":"663a12cf6cede0ef","type":"delay","z":"85fce9c6579baaa0","name":"","pauseType":"delay","timeout":"1","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"outputs":1,"x":530,"y":480,"wires":[["c0297b03d780b3ae"]]},{"id":"d2ace9cc.9f3998","type":"ui_group","name":"Christmastree","tab":"14b7bf29.77ead1","order":1,"disp":true,"width":"6","collapse":false},{"id":"14b7bf29.77ead1","type":"ui_tab","name":"Lights","icon":"dashboard","order":1,"disabled":false,"hidden":false}]
  • 单击Import
  • 现在应该能看到图中的流程了
  • 单击右上角的Deploy
    打开新的浏览器窗口,访问http://hostname>:1880/ui(将hostname>改成树莓派的IP地址)。现在应该能看到用户界面了。
    注意:这段代码中灯光强度设置为40%,这样能限制电源的功率,亮度也不错。如果想改变这个值,双击流程末尾的rpi-neopixels节点,在输入框中修改。

第三步:连接

在连接任何电线之前,确保关闭树莓派!LED的连线很简单,只需要连接好LED的地线和信号线即可。但是要确保连线正确。我的连接方式如下:

  • 电源——红色
  • 树莓派的6脚——地线——白色
  • 树莓派的12脚(GPIO 18)——信号线——绿色(这就是为什么只能通过HDMI输出音频,因为音频也使用了同一个引脚)

现在可以给LED灯带连上电源了。根据灯带长度,你可能需要在灯带的多个点连接多个电源(藏在圣诞树后面就好)。
任何裸露的电线都要用电工胶布进行绝缘,任何设备都要确保小孩无法接触。
设置好之后,启动树莓派和灯带。访问http://hostname?:1880/ui(将hostname>改成你的树莓派的IP地址)。点击色环的任意位置,即可改变灯光颜色。
参考链接:

  • https://shopmakergenix.blogspot.com/2021/12/neopixel-christmas-tree-lights.html

用树莓派控制WS2812圣诞树灯饰相关推荐

  1. 树莓派控制WS2812屏幕(python)

    与树莓派连接 红色------5V 白色------GND 绿色-----GPIO18(树莓派第12个引脚) 代码 GitHub:git clone https://github.com/jgarff ...

  2. 使用树莓派控制led灯板 ws2812

    使用树莓派控制led灯板ws2812 推荐一个库 Adafruit_NeoPixel 这里是地址:https://github.com/adafruit/Adafruit_NeoPixel 这个原本是 ...

  3. 树莓派驱动 WS2812 灯珠 不亮的问题

    前言 树莓派在控制某些硬件外设上坑还真不少,今天就又踩了一个(其实有两天了).其实越复杂的问题往往是有越简单的解决办法. 树莓派驱动ws2812 网上一搜几乎都是 用的 rpi-ws281x 这个库 ...

  4. 树莓派控制温湿度传感器DHT11

    2019独角兽企业重金招聘Python工程师标准>>> 小π因为好几次断电之前没有关掉系统,导致系统老是起不来.无奈只好重写了SD卡.装好后前天晚上把一个温湿度传感器(DHT11)接 ...

  5. 树莓派控制4路5v继电器开关

    树莓派控制4路5v继电器开关 准备材料 wiringPi库 安装wiringPi库 查看引脚编号表格 wiringPi API 硬件初始化函数wiringPiSetup GPIO控制函数pinMode ...

  6. 【STC15控制WS2812 RGB彩灯级联】

    STC15控制WS2812 RGB彩灯级联 下面是基于STC15F2K60S2的WS2812RGB彩灯级联测试. 一.WS2812介绍 引脚 工作时序 注意 当我们使用WS2812控制RGB彩灯的时候 ...

  7. 用树莓派控制两盏灯(二)

    续前作:用树莓派控制一盏灯_UnableJOE的博客-CSDN博客 梗概:在前者基础上,添加一盏灯.可以同时控制两盏灯: 新增知识点:数组(常量值字符串), 源程序 main.c 修改了判断的条件,新 ...

  8. 树莓派控制超声波传感器

    看到大二的时候有写过关于树莓派控制HC-SR04超声波测距模块的教程,当时并未给出代码(也不知道是什么原因,估计初写博客并不熟悉吧),所以在三年后的今天贴代码出来,给大家参考下. //树莓派控制超声波 ...

  9. Arduino控制WS2812灯带(灯环)

    设计者:STCode(公众号同名) Arduino控制WS2812灯带(灯环) 1) WS2812灯 WS2812灯带 WS2812灯环 WS2812是一个集控制电路与发光电路于一体的智能外空LED光 ...

最新文章

  1. 《Effective C++》第8章 定制new和delete-读书笔记
  2. ALV显示红绿灯(FMnbsp;ALVnbsp;和nbsp;OOnbsp;ALV两…
  3. Linux 技巧:让进程在后台可靠运行的几种方法(转)
  4. Flux架构小白入门笔记
  5. 找不到文件、主类名和文件名不一致、缺少分号的解决方法
  6. Android之BottomNavigationView实现底部按钮水纹波效果
  7. dynamo python修改多个参数_40岁小白学了30天python发现,编程真的其乐无穷
  8. [转]性能调优攻略(2)
  9. 利用ACIS、HOOPS开发三维软件
  10. eoLinker-API_Shop_知识类API调用的代码示例合集:驾考题库、ISBN书号查询、万年历查询等...
  11. a59s刷机包卡刷 oppo_OPPO A59st刷机教程_OPPO A59st卡刷升级更新官方系统包
  12. 51单片机之串口通信详解及代码示例
  13. java jbutton 省略号_JButton显示省略号
  14. 迭代收缩阈值算法matlab,一种基于自适应快速迭代收缩阈值算法的图像处理方法与流程...
  15. 【Git命令】git commit --amend
  16. Calendar日期类获取上月同期需求
  17. [附源码]计算机毕业设计JAVA旅游管理系统
  18. vue3.0 透传 Attribute
  19. 设置代理让github加速
  20. 保持冷静、继续前行——《白说》读后感

热门文章

  1. java中文文档官方下载
  2. 东大OJ-1544: GG的战争法则
  3. arm-none-linux-gnueabi交叉工具链 no such file or directory
  4. Python:print用法大全
  5. 敏捷开发般若敏捷系列之五:如何推广敏捷(中)(无寿者,回报,破我执)...
  6. vue 组件根元素显示优化
  7. Java多线程编程(2)--多线程编程中的挑战
  8. (IStool)判断系统位数并打包不同的文件
  9. java加密算法入门(三)-非对称加密详解
  10. 2014 ACM/ICPC Asia Regional Beijing Site