如何通过网络应用程序创建可控制的变色RGB LED氛围灯

作者:rob zwetsloot  
在今天新一期的hackspace杂志中,phil king向您展示了如何通过网络应用程序创建可控制的变色rgb led氛围灯。
pir传感器的盖子为rgb led发出的光提供了良好的漫射器
通过内置无线连接,pico w是创建物联网(iot)项目的理想选择。为了更简单,anvil发布了pico w iot工具包,使您能够轻松、安全地连接到您在anvil平台上创建的web应用程序。有一个拖放式的web ui构建器、内置数据库、用户身份验证、电子邮件集成、http api等,所有这些都与您的pico w对话。
通过使用anvil的特殊uf2固件映像,您可以在micropython中对pico w上的程序进行编码,只需几行额外的代码即可连接到anvil,然后在anvil网站上创建一个web应用程序,该应用程序可以向pico w程序发送数据或从pico w中接收数据。在本教程中,我们将向您展示如何在anvil web应用程序中使用滑块控制rgb led的颜色。  
01.安装固件
为了能够将pico w链接到anvil框架,您需要使用特殊的固件文件。到magpi.cc/enviluf2(https://github.com/anvil-works/anvil-pico/releases/)下载最新的“完整”uf2文件。(如果要避免覆盖pico w上的任何现有文件,请使用“firmware-only”版本。)
与往常一样,按住pico w的bootsel按钮,同时通过usb将其连接到计算机,然后将uf2文件拖到已安装的“rpi-rp2”卷中。复制完成后,pico w将自动重新启动并重新显示为一个名为“pico w”的卷。
图1:使用rgb led的情绪灯电路的接线图
02.连接到wifi
将pico w连接到计算机后,打开thonny ide,确保python解释器(显示在右下角)设置为“micropython (raspberry pi pico)”。pico w上的main.py文件将自动运行,因此您需要按下停止图标来停止它。打开boot.py文件,在顶部输入无线路由器的ssid(名称)和密码。
wifi_ssid = wifi_password =  
 现在,当pico w重新启动时,它将自动连接到您的无线网络。
03.连接电路
将pico w放在板子的一端,如图1所示。在另一端添加rgb led,每条腿放置在不同的行中。它有四条腿,其中最长的应该是接地连接——使用跳线将其连接到pico w上的gnd引脚。
与led一样,您应该使用电阻器来限制最大电流,以避免led烧坏。我们用了三个330 ω电阻器放置在测试板的中央凹陷上,将led的r(红色)、g(绿色)和b(蓝色)支路连接到分别连接到pico w上gpio引脚13、14和15的跳线。
pico w运行连接到anvil web应用程序的标准micropython代码
注意:我们的rgb led腿的顺序是r、gnd、b和g,但您的可能不同。
04.测试电路
为了确认一切都正确连接,我们将在pico w上运行一个简单的程序。在您计算机上的thanny ide中,确保python解释器(显示在右下角)设置为“micropython (raspberry pi pico)”。
打开一个新文件并在rgb_test.py列表(背面)中添加代码。运行时,rgb led应依次变为红色、绿色和蓝色。如果颜色顺序错误,则需要更换相关跳线
05.编写代码
现在,让我们为rgb led“情绪灯”编写micropython代码,如mood_lamp_sliders.py列表所示。顶行import anvil.pico使pico w能够连接到anvil的服务器。第二行,import uasyncio as a,为运行并发函数设置异步调度程序。我们还从机器库导入pin和pwm类,以便我们可以通过gpio引脚控制rgb led。
运行时,pico w micropython代码将连接到anvil web应用程序
再往下是一行,以uplink_key =开始。这是您稍后需要粘贴anvil上创建的web应用程序的上行链路密钥的地方,以便pico w程序可以链接到它。程序底部有一行可以使用它进行连接。
接下来,我们创建三个变量来设置rgb led的红色、绿色和蓝色部分的级别。然后,我们按照测试代码设置pwm引脚。
06.调用decorator
在我们的代码中,我们有三个功能:一个用于控制rgb led的红色、绿色和蓝色部分。在每个函数之前,我们添加一个“decorator”,并在定义函数的行的开头添加async;例如:
@anvil.pico.callable_asyncasync def red(slider):  
这让我们连接的anvil web应用程序知道可以从web调用此功能。我们将向其发送一个值,该值由web应用程序中的滑块设置,该滑块将设置该颜色的级别。当我们使用从0到255的值作为滑块时,我们将其乘以256,将其转换为pwm电平设置的无符号16位整数(0到65535)。
rgb_test.py代码。在此处获取完整代码(https://github.com/themagpimag)
07.设计web应用程序
去anvil.works注册一个免费账户。我们希望为我们的灯使用滑块控件,这不是标准的anvil组件,因此我们将打开一个包含滑块库的演示应用程序:转到anvil.works/library/slider并单击“open in anvil”。
sliders演示应用程序只有两个滑块,我们需要三个,分别为红色、绿色和蓝色。从右侧的“toolbox”面板中,将滑块自定义组件拖动到“reset”按钮的正上方。现在选择一个现有的“value:”元素,按ctrl/cmd+c复制它,然后用ctrl/cmd+v将它粘贴到新滑块下。复制并粘贴一个“1”组件到它的右侧。
依次单击每个“value:”元素,并将其文本(在右侧的“属性”面板中)分别更改为“红色:”、“绿色:”和“蓝色:”。将每个“1”文本元素设置为“0”。此外,将“blue:”元素名称设置为“label_6”,并将附带的“0”元素名称设为“label_7”。对于每个滑块,将“slider_max”值设置为255。
mood_lamp_sliders.py。在这里获取完整代码(https://github.com/themagpimag)
08.启用服务器上行链路
单击左下角的“+”按钮并选择上行链路,然后单击服务器上行链路旁边的启用。这将为应用程序生成一个服务器上行链路密钥(忽略客户端密钥),您应该将其粘贴到pico w上micropython代码的第5行,以便它可以连接到该应用程序。
09.调整web代码
我们需要更改web应用程序代码,以便将每个滑块的设置发送到pico w程序中的红色、绿色或蓝色功能。单击“code”选项卡,将以下行(缩进)添加到slider1_change函数中:
anvil.server.call_s(green,self.slider_1.level) pass  
请注意,滑块1是中间的滑块,我们将其指定为绿色。同样,对于slider2_change,添加以下两行(缩进):
anvil.server.call_s(red,self.slider_2.level) pass  
为滑块3添加类似的新功能
def slider_3_change(self, **event_args):  self.label_7.text = self.slider_3.level  anvil.server.call_s(blue,self.slider_3.level) pass  
最后,将这些行添加到web代码中的reset_btn_click函数:
self.slider_3.level = 0  self.label_7.text = 0  anvil.server.call_s(red,0)  anvil.server.call_s(green,0)  anvil.server.call_s(blue,0) pass  
10.运行两个应用程序
我们现在可以出发了。首先,在thonny运行pico w程序。您将在shell窗格中看到消息,以显示它正在连接。完成后,运行anvil web应用程序。现在,您可以移动滑块来调整rgb led的红色、绿色和蓝色组件,以改变其阴影。
为了使其更有效,您可能需要漫射led的光。我们简单地将pir传感器的半透明塑料盖放在上面,效果相当好。你现在有了一个网络控制的情绪灯!下一次,我们将在anvil网络应用程序中读取pico w传感器数据。


领芯灵犀(ChipHearts)平台发布:领芯MCU产品线图形化配置调试工具
基于卷积多层感知器(MLP)的图像分割网络unext
浅谈甲类生产厂房应急照明和疏散指示系统的设计问题解析
基于FPGA技术实现VXIbus模块的接口电路设计
RFbeam发布RSP系列雷达信号处理解决方案
如何通过网络应用程序创建可控制的变色RGB LED氛围灯
恩智浦使用MCUXpresso SEC工具和智能卡实现安全制造
四款消防应急灯电路原理及维修
六大场景 看懂声纹识别技术怎样“抗疫防疫”
谷歌千兆之争,对5G移动网络意味着什么?
基于RFID技术的模具管理解决方案
中国联通前三季度财报显示,截至9月底利润为87.8亿元人民币,同比大涨116.6%
“华为发明专利权纠纷案”判赔1000余万元
功率半导体欧美日三足鼎立,国产替代正当时
阿迪达斯最新运动鞋 由海底塑料3D打印制成
电压跟随器的特点 电压跟随器的作用是什么
轻松设计关系型数据库教程
阿里巴巴人工智能实验室发布“家庭大脑”
未来全球嵌入式主板市场将如何发展?
重庆构建集成电路全产业链 设立500亿元发展基金