0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Raspberry Pi WebIOPi IOT—全彩LED圣诞装饰

三心四意 来源:DevicePlus 作者:DevicePlus 2023-02-24 17:11 次阅读

这篇文章来源于DevicePlus.com英语网站的翻译稿。pYYBAGPzH4aAUjueAAEsqFPqUTk852.jpg

圣诞节将近,我们打算制作一个可爱的LED圣诞装饰!通过使用全彩LED和WebIOPi,我们可以用无线控制的方式实现装饰彩灯在红色、蓝色和绿色之间的切换。

关于全彩 LED

poYBAGPzH4mAJprYAADOpUzcGVI614.jpg

图1:RGB全彩5mm LED

RGB全彩5mm LED包含三种基本颜色:红色,绿色和蓝色。通过三种颜色相混合可以得到全彩光源。您可以使用任何的透明RGB LED,从Sparkfun,Amazon等可以购买到这些产品

要控制三种颜色,需要使用4个引脚(3个控制颜色的引脚+GND)。LED的尺寸大于一般的单色LED尺寸。

poYBAGPzH4uAS3siAABSh1KSWuQ903.png

图2:摘自OSTA5131A 数据表

LED的方向取决于引脚的长度。最短的引脚为图2中左侧的①。光源的三基色分别分配到每个引脚上:①绿色; ②蓝色以及 ④ 红色。③是“共阴极组”,指一组拥有阴极公共端的电子元器件。在本项目中,它对应的是LED的负极,需要将其连接到GND端。

poYBAGPzH46AfyFjAAPDb6GwiT0079.png

图3:将全彩LED连接到Raspberry Pi 2

该处的接线非常简单。这次,我们将绿色连接到引脚11(GPIO 17),蓝色连接到引脚13(GPIO 27),红色连接到引脚15(GPIO 22)。根据LED 引脚来使用三个对应并列的引脚可以使接线更加清晰易懂。

现在,让我们来点亮全彩LED!我尝试从WebIOPi默认屏幕上的“GPIO 标头”进行操作。(如果您使用的是WebIOPi,可以通过将设置恢复到原始状态来显示WebIOPi默认屏幕。取消掉[SCRIPTS]中的myproject和[HTTP]中的doc-root注释)

视频中所示,光照强度很大,所以请注意不要直视它!如果您使用了LED漫射器(如橡胶帽等),就可以调低光线亮度。另外,全彩LED的光照强度存在个体差异,所以我们通过更改电阻值对光照强度进行调整。

Raspberry Pi的GPIO引脚是数字输出,所以输出值为1或0(开/关)。一共有2种模式×3种颜色,除了关闭状态,可以展现出7种颜色,如图4所示。

pYYBAGPzH5GATO88AADN1L73gPc666.jpg

图4:加成色

虽然可以表达出七种颜色,但如果仅仅是这样,就太浪费了。这种情况下,对WebIOPi编程就可以派上用场了。通过对WebIOPi进行编程,您可以将灯光调整为自己喜欢的颜色。

关于 PWM

为了从WebIOPi控制全彩LED,需要使用脉冲宽度调制(PWM)的方法。

PWM – Arduino

脉宽调制(PWM)是一种通过数字处理方式获取模拟信号的技术。数字控制用于创建方波信号,即一种在开和关两种状态之间切换的信号。这种开关模式可以通过改变信号处于开状态所用时间与信号处于关状态所用时间之间的比例来模拟开(5V)至关(0V)之间的电压。“开通状态”所持续时间被称为脉冲宽度。为了获得变化的模拟值,您可以更改或调制脉冲宽度。例如,如果将LED以足够快的频率重复这种开关模式,最终呈现出来的效果就会和输出了0V到5V之间的用于控制LED亮度的稳定电压一样。

数字信号中,只有ON(开)和OFF(关)这两种类型的信号。通过使用在一个周期内接通(ON)时间和关闭(OFF)时间之间的比例(占空比),可以处理0 至100%之间的值。

pYYBAGPzH5OAQ2CtAAAw4MKPu3o596.gif

图5:占空比

上图中有关占空比的内容很容易理解。再次说明,波形处于5V时是ON,处于0V时是OFF。该比例是通过计算一个周期内的占比获取的。

现在,我们来看一看WebIOPi中的一些便捷函数。

创建HTML文件

我们从HTML文件开始。WebIOPi中内置有用于PWM控制的滑块部件。

Javascript 库

// Only for Chrome and Safari, create a slider that pulse out 
a 0-100% duty cycle ratio on GPIO 8
button = webiopi().createRatioSlider(8);
content.append(button);

该部件代码内含在示例中的51至53行。注释文本中显示“仅适用Chrome 和Safari”,但其实也适用Windows Internet Explorer、Opera以及Firefox等其他浏览器。

WebIOPi.createRatioSlider

WebIOPi.createRatioSlider (gpio, ratio)

Returns a slider that send its value as a PWM duty cycle ratio

(int) gpio: GPIO number from 0 to 53

(float) ratio: slider’s init value

要使用该函数,只要在第一个参数中输入GPIO编号就可以了!文档中声明了可以为第二个参数设定初始值,但是在当前版本中似乎并没有对该值作出响应(如果有兴趣的话,请参考webiopi.js中第504行)。

现在,我们来为全彩LED创建一个HTML文件吧!

/home/pi/webiopi_sample/html/index.html

input[] { display: block; width: 160px; height: 45px; }

red

green

blue

我们制作了三个滑动条,这样就可以设置RGB每个颜色的值了。使用createRatioSlider函数之后的HTML输出如下所示:


该滑动条可以以0.01的步距在0.0至1.0(0至100%)之间滑动。

由于已经分配了id,如果您想要设置初始值(如第21至23行所示),您可以使用jQuery对进行设置。

$("#ratio17").val(0);

当您在浏览器中对其进行显示时,将会出现如下屏幕内容:

poYBAGPzH5WAH3AlAAAGLDhlY6w054.png

图 6

为了与LED链接,必须在Python端执行初始设置。

创建 Python 文件

因为值的设置是在HTML端完成的,所以Python端只需要对初始化及终止处理进行描述就可以了。

/home/pi/webiopi_sample/python/script.py

import webiopi
 
GPIO = webiopi.GPIO
 
RED   = 22
GREEN = 17
BLUE  = 27
 
def setup():
    # Set GPIO to PWM
    GPIO.setFunction(RED  , GPIO.PWM)
    GPIO.setFunction(GREEN, GPIO.PWM)
    GPIO.setFunction(BLUE , GPIO.PWM)
 
def destroy():
   # Light off
    GPIO.pwmWrite(RED  , 0)
    GPIO.pwmWrite(GREEN, 0)
    GPIO.pwmWrite(BLUE , 0)

由于本次使用了PWM,所以将第10到12行setFunction中的第二个参数指定为“GPIO.PWM”。如果指定为“GPIO.OUT”,脉冲信号将不会被识别,并且在您每次移动滑动条时它将会闪烁一秒钟。

虽然已经在程序末端写入了关闭LED的处理过程,但是还是需要使用“pwmWrite”函数。

PwmWrite (Channel, Value)

Write An Integer Value To The Given PWM Channel.

REST API: POST / Devices / Name / Pwm / Channel / Integer / Value

Name (Str): Device Name From Configuration File

Channel (Int): Analog Channel Number

value (int): integer value to output from 0 to pwmMaximum

在第一个参数中输入指定的GPIO引脚编号以及您想要为第二个参数设定的值。如果该值被设置为0,那么状态变为OFF,LED将会熄灭。

让我们来运行它!

运行指令

sudo /etc/init.d/webiopi start

我们尝试通过移动滑动条来调整显色的光强,如上面视频所示。当调整红色,绿色和蓝色这些单色光时,您可以以渐变的形式调整光强。另外,将这些单色光进行重叠,就可以显示出叠加效果的颜色。设置很小的值将会使光强过弱而导致不稳定,所以需要设置一定程度的光强以保证稳定性。

poYBAGPzH5eAFsW_AACvcFtEToQ600.jpg

图7

这非常方便,因为只需要打开电源就可以立即启用Wi-Fi 和WebIOPi的自动启动设置了。

圣诞装饰!

pYYBAGPzH5qAUyUiAAE56tkonl8355.jpg

图8

安装过程非常简单,只要将跳线直接插入LED 引脚即可,如上图所示。有时候线会脱落,所以最好将线焊接进去。

pYYBAGPzH4aAUjueAAEsqFPqUTk852.jpg

图9

我将LED放进了一个钟形的装饰品中,看起来很酷,不是吗?

用Raspberry Pi的一个GPIO可以点亮两个全彩LED。如果您想要连接许多个,可以使用诸如移位寄存器之类的部件来完成。

圣诞节就快到了!为什么不用这些可爱的led圣诞装饰来增添假日气氛呢?您也可以制造其他创意产品!比如将其放在透明的装饰物中或者蜡烛中,或者使用大量LED制造出手工照明灯来作为您的圣诞节装饰品!

pYYBAGPbhjqAbi1JAAAGd6_rQT0867.png

DevicePlus 编辑团队

设备升级版适用于所有热爱电子和机电一体化的人。

审核编辑黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    242

    文章

    23277

    浏览量

    660851
  • Raspberry Pi
    +关注

    关注

    2

    文章

    559

    浏览量

    22226
收藏 人收藏

    评论

    相关推荐

    视觉享受!用Raspberry Pi实现圣诞树灯光秀

    本文将介绍用树莓派实现圣诞LED灯光秀的方法, 这个项目需要用Raspberry Pi来驱动8个交流插座,同时这些插座会与圣诞树照明灯相连
    的头像 发表于 11-12 18:31 8305次阅读
    视觉享受!用<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>实现<b class='flag-5'>圣诞</b>树灯光秀

    Raspberry Pi实现圣诞树灯光秀

    `这个项目需要用Raspberry Pi来驱动8个交流插座,同时这些插座会与圣诞树照明灯相连。为了使灯光有动态变化,这里用的是可编程RGB LED灯。我可以用
    发表于 11-12 11:38

    Raspberry Pi 标准的40针连接器设计方案

    电压范围输入,凤凰端子输入接口尺寸:160 mm(L) x 120 mm(W) x 20mm(H)软件环境:Raspberry Pi Raspbian OS系统框图产品图片IoT Gateway不带4G
    发表于 08-27 18:26

    利用RGB LED创造圣诞树的智能装饰

    描述RGB圣诞树今年我想在我的圣诞树上添加我自己设计和建造的东西,所以我用 RGB LED 创造了这个智能装饰LED 由 ESP32 控制
    发表于 07-28 07:48

    raspberry_pi各版本差别

    raspberry pi 各版本差别,对比Raspberry Pi Model B+、Raspberry
    发表于 01-06 11:12 0次下载

    如何使用Raspberry Pi 2将旧的RC汽车转换为可在WiFi或Internet上工作

    要通过本地网络访问pi,请打开浏览器,然后从网络中的任何设备导航到 http://ipAddressOfPi:8000/。确保在URL中键入Pi的IP地址。默认用户“ webiopi ”和密码为“
    的头像 发表于 11-01 17:19 2965次阅读

    基于Arduino装饰圣诞树的教程

    由于圣诞节快到了,没有装饰圣诞树,它的本质是不完整的。所以,不要使用我们每年都放的旧圣诞装饰品,让我们更上一层楼,使用带有 Neo 像素
    的头像 发表于 07-13 16:45 3230次阅读
    基于Arduino<b class='flag-5'>装饰</b><b class='flag-5'>圣诞</b>树的教程

    使用Raspberry Pi或Arduino:DIY LED矩阵彩灯

    电子发烧友网站提供《使用Raspberry Pi或Arduino:DIY LED矩阵彩灯.zip》资料免费下载
    发表于 11-04 14:55 2次下载
    使用<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>或Arduino:DIY <b class='flag-5'>LED</b>矩阵彩灯

    使用Raspberry Pi Pico的LED序列

    电子发烧友网站提供《使用Raspberry Pi Pico的LED序列.zip》资料免费下载
    发表于 11-14 11:07 0次下载
    使用<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> Pico的<b class='flag-5'>LED</b>序列

    通过Raspberry Pi进行简单的物联网LED控制

    电子发烧友网站提供《通过Raspberry Pi进行简单的物联网LED控制.zip》资料免费下载
    发表于 12-09 10:02 0次下载
    通过<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>进行简单的物联网<b class='flag-5'>LED</b>控制

    Raspberry Pi上通过网络控制LED

    电子发烧友网站提供《在Raspberry Pi上通过网络控制LED.zip》资料免费下载
    发表于 12-13 09:37 0次下载
    在<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>上通过网络控制<b class='flag-5'>LED</b>

    圣诞LED装饰开源分享

    电子发烧友网站提供《圣诞LED装饰开源分享.zip》资料免费下载
    发表于 12-22 15:10 0次下载
    <b class='flag-5'>圣诞</b><b class='flag-5'>LED</b>树<b class='flag-5'>装饰</b>开源分享

    使用Raspberry Pi和Arduino实现Web控制的LED动画

    电子发烧友网站提供《使用Raspberry Pi和Arduino实现Web控制的LED动画.zip》资料免费下载
    发表于 07-03 14:52 0次下载
    使用<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>和Arduino实现Web控制的<b class='flag-5'>LED</b>动画

    Windows IoTRaspberry Pi:读取按钮

    电子发烧友网站提供《Windows IoTRaspberry Pi:读取按钮.zip》资料免费下载
    发表于 07-10 11:13 0次下载
    Windows <b class='flag-5'>IoT</b>和<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>:读取按钮

    用于室内植物或圣诞树的 Raspberry Pi Pico 水监控器

    Pater Practicus 设计了一个由 Raspberry Pi Pico 供电的东西,通过确保圣诞树获得所需的水,让它在整个季节都保持翠绿灿烂。如果你是在一月份读到这篇文章的,那么这个项目
    的头像 发表于 12-25 15:37 452次阅读
    用于室内植物或<b class='flag-5'>圣诞</b>树的 <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> Pico 水监控器