作者:Rob Zwetsloot
在今天新一期的HackSpace雜志中,Phil King向您展示了如何通過(guò)網(wǎng)絡(luò)應(yīng)用程序創(chuàng)建可控制的變色RGB LED氛圍燈。
PIR傳感器的蓋子為RGB LED發(fā)出的光提供了良好的漫射器
通過(guò)內(nèi)置無(wú)線連接,Pico W是創(chuàng)建物聯(lián)網(wǎng)(IoT)項(xiàng)目的理想選擇。為了更簡(jiǎn)單,Anvil發(fā)布了Pico W IoT工具包,使您能夠輕松、安全地連接到您在Anvil平臺(tái)上創(chuàng)建的web應(yīng)用程序。有一個(gè)拖放式的web UI構(gòu)建器、內(nèi)置數(shù)據(jù)庫(kù)、用戶身份驗(yàn)證、電子郵件集成、HTTP API等,所有這些都與您的Pico W對(duì)話。
通過(guò)使用Anvil的特殊UF2固件映像,您可以在MicroPython中對(duì)Pico W上的程序進(jìn)行編碼,只需幾行額外的代碼即可連接到Anvil,然后在Anvil網(wǎng)站上創(chuàng)建一個(gè)web應(yīng)用程序,該應(yīng)用程序可以向Pico W程序發(fā)送數(shù)據(jù)或從Pico W中接收數(shù)據(jù)。在本教程中,我們將向您展示如何在Anvil web應(yīng)用程序中使用滑塊控制RGB LED的顏色。
01.安裝固件
為了能夠?qū)ico W鏈接到Anvil框架,您需要使用特殊的固件文件。到magpi.cc/enviluf2(https://github.com/anvil-works/anvil-pico/releases/)下載最新的“完整”UF2文件。(如果要避免覆蓋Pico W上的任何現(xiàn)有文件,請(qǐng)使用“firmware-only”版本。)
與往常一樣,按住Pico W的BOOTSEL按鈕,同時(shí)通過(guò)USB將其連接到計(jì)算機(jī),然后將UF2文件拖到已安裝的“RPI-RP2”卷中。復(fù)制完成后,Pico W將自動(dòng)重新啟動(dòng)并重新顯示為一個(gè)名為“Pico W”的卷。
圖1:使用RGB LED的情緒燈電路的接線圖
02.連接到WiFi
將Pico W連接到計(jì)算機(jī)后,打開Thonny IDE,確保Python解釋器(顯示在右下角)設(shè)置為“MicroPython (Raspberry Pi Pico)”。Pico W上的main.py文件將自動(dòng)運(yùn)行,因此您需要按下停止圖標(biāo)來(lái)停止它。打開boot.py文件,在頂部輸入無(wú)線路由器的SSID(名稱)和密碼。
WIFI_SSID = "" WIFI_PASSWORD = " "
現(xiàn)在,當(dāng)Pico W重新啟動(dòng)時(shí),它將自動(dòng)連接到您的無(wú)線網(wǎng)絡(luò)。
03.連接電路
將Pico W放在板子的一端,如圖1所示。在另一端添加RGB LED,每條腿放置在不同的行中。它有四條腿,其中最長(zhǎng)的應(yīng)該是接地連接——使用跳線將其連接到Pico W上的GND引腳。
與LED一樣,您應(yīng)該使用電阻器來(lái)限制最大電流,以避免LED燒壞。我們用了三個(gè)330?Ω電阻器放置在測(cè)試板的中央凹陷上,將LED的R(紅色)、G(綠色)和B(藍(lán)色)支路連接到分別連接到Pico W上GPIO引腳13、14和15的跳線。
Pico W運(yùn)行連接到Anvil web應(yīng)用程序的標(biāo)準(zhǔn)MicroPython代碼
注意:我們的RGB LED腿的順序是R、GND、B和G,但您的可能不同。
04.測(cè)試電路
為了確認(rèn)一切都正確連接,我們將在Pico W上運(yùn)行一個(gè)簡(jiǎn)單的程序。在您計(jì)算機(jī)上的Thanny IDE中,確保Python解釋器(顯示在右下角)設(shè)置為“MicroPython (Raspberry Pi Pico)”。
打開一個(gè)新文件并在RGB_test.py列表(背面)中添加代碼。運(yùn)行時(shí),RGB LED應(yīng)依次變?yōu)榧t色、綠色和藍(lán)色。如果顏色順序錯(cuò)誤,則需要更換相關(guān)跳線
05.編寫代碼
現(xiàn)在,讓我們?yōu)镽GB LED“情緒燈”編寫MicroPython代碼,如mood_lamp_sliders.py列表所示。頂行import anvil.pico使pico W能夠連接到anvil的服務(wù)器。第二行,import uasyncio as a,為運(yùn)行并發(fā)函數(shù)設(shè)置異步調(diào)度程序。我們還從機(jī)器庫(kù)導(dǎo)入Pin和PWM類,以便我們可以通過(guò)GPIO引腳控制RGB LED。
運(yùn)行時(shí),Pico W MicroPython代碼將連接到Anvil web應(yīng)用程序
再往下是一行,以"UPLINK_KEY ="開始。這是您稍后需要粘貼Anvil上創(chuàng)建的web應(yīng)用程序的上行鏈路密鑰的地方,以便Pico W程序可以鏈接到它。程序底部有一行可以使用它進(jìn)行連接。
接下來(lái),我們創(chuàng)建三個(gè)變量來(lái)設(shè)置RGB LED的紅色、綠色和藍(lán)色部分的級(jí)別。然后,我們按照測(cè)試代碼設(shè)置PWM引腳。
06.調(diào)用decorator
在我們的代碼中,我們有三個(gè)功能:一個(gè)用于控制RGB LED的紅色、綠色和藍(lán)色部分。在每個(gè)函數(shù)之前,我們添加一個(gè)“decorator”,并在定義函數(shù)的行的開頭添加async;例如:
@anvil.pico.callable_async async def red(slider):
這讓我們連接的Anvil web應(yīng)用程序知道可以從web調(diào)用此功能。我們將向其發(fā)送一個(gè)值,該值由web應(yīng)用程序中的滑塊設(shè)置,該滑塊將設(shè)置該顏色的級(jí)別。當(dāng)我們使用從0到255的值作為滑塊時(shí),我們將其乘以256,將其轉(zhuǎn)換為PWM電平設(shè)置的無(wú)符號(hào)16位整數(shù)(0到65535)。
RGB_test.py代碼。在此處獲取完整代碼(https://github.com/themagpimag)
07.設(shè)計(jì)web應(yīng)用程序
去anvil.works注冊(cè)一個(gè)免費(fèi)賬戶。我們希望為我們的燈使用滑塊控件,這不是標(biāo)準(zhǔn)的Anvil組件,因此我們將打開一個(gè)包含滑塊庫(kù)的演示應(yīng)用程序:轉(zhuǎn)到Anvil.works/library/slider并單擊“Open in Anvil”。
Sliders演示應(yīng)用程序只有兩個(gè)滑塊,我們需要三個(gè),分別為紅色、綠色和藍(lán)色。從右側(cè)的“Toolbox”面板中,將滑塊自定義組件拖動(dòng)到“Reset”按鈕的正上方?,F(xiàn)在選擇一個(gè)現(xiàn)有的“Value:”元素,按CTRL/CMD+C復(fù)制它,然后用CTRL/CMD+V將它粘貼到新滑塊下。復(fù)制并粘貼一個(gè)“1”組件到它的右側(cè)。
依次單擊每個(gè)“Value:”元素,并將其文本(在右側(cè)的“屬性”面板中)分別更改為“紅色:”、“綠色:”和“藍(lán)色:”。將每個(gè)“1”文本元素設(shè)置為“0”。此外,將“Blue:”元素名稱設(shè)置為“l(fā)abel_6”,并將附帶的“0”元素名稱設(shè)為“l(fā)abel_7”。對(duì)于每個(gè)滑塊,將“slider_max”值設(shè)置為255。
mood_lamp_sliders.py。在這里獲取完整代碼(https://github.com/themagpimag)
08.啟用服務(wù)器上行鏈路
單擊左下角的“+”按鈕并選擇上行鏈路,然后單擊服務(wù)器上行鏈路旁邊的啟用。這將為應(yīng)用程序生成一個(gè)服務(wù)器上行鏈路密鑰(忽略客戶端密鑰),您應(yīng)該將其粘貼到Pico W上MicroPython代碼的第5行,以便它可以連接到該應(yīng)用程序。
09.調(diào)整web代碼
我們需要更改web應(yīng)用程序代碼,以便將每個(gè)滑塊的設(shè)置發(fā)送到Pico W程序中的紅色、綠色或藍(lán)色功能。單擊“Code”選項(xiàng)卡,將以下行(縮進(jìn))添加到slider1_change函數(shù)中:
anvil.server.call_s("green",self.slider_1.level) pass
請(qǐng)注意,滑塊1是中間的滑塊,我們將其指定為綠色。同樣,對(duì)于slider2_change,添加以下兩行(縮進(jìn)):
anvil.server.call_s("red",self.slider_2.level) pass
為滑塊3添加類似的新功能
defslider_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函數(shù):
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.運(yùn)行兩個(gè)應(yīng)用程序
我們現(xiàn)在可以出發(fā)了。首先,在Thonny運(yùn)行Pico W程序。您將在Shell窗格中看到消息,以顯示它正在連接。完成后,運(yùn)行Anvil web應(yīng)用程序。現(xiàn)在,您可以移動(dòng)滑塊來(lái)調(diào)整RGB LED的紅色、綠色和藍(lán)色組件,以改變其陰影。
為了使其更有效,您可能需要漫射LED的光。我們簡(jiǎn)單地將PIR傳感器的半透明塑料蓋放在上面,效果相當(dāng)好。你現(xiàn)在有了一個(gè)網(wǎng)絡(luò)控制的情緒燈!下一次,我們將在Anvil網(wǎng)絡(luò)應(yīng)用程序中讀取Pico W傳感器數(shù)據(jù)。
審核編輯:湯梓紅
-
傳感器
+關(guān)注
關(guān)注
2573文章
53868瀏覽量
779989 -
led
+關(guān)注
關(guān)注
243文章
24329瀏覽量
683758 -
RGB
+關(guān)注
關(guān)注
4文章
818瀏覽量
61040 -
PIR
+關(guān)注
關(guān)注
0文章
76瀏覽量
18497
原文標(biāo)題:Pico W IoT搭配Anvil:情緒燈| HackSpace#62
文章出處:【微信號(hào):Arm軟件開發(fā)者,微信公眾號(hào):Arm軟件開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
帶有LIN自動(dòng)尋址的RGB氛圍燈解決方案-E521.31
RGB混光的基本原理與RGB汽車氛圍燈的應(yīng)用研究

rgb led燈變色原理詳解_RGB三基色LED變色程序
LED燈RGB色盤算法應(yīng)用程序APP的詳細(xì)資料免費(fèi)下載

如何通過(guò)Android應(yīng)用程序來(lái)控制LED燈
RGB LED在汽車氛圍燈中的應(yīng)用說(shuō)明

用自己聲音或智能手機(jī)控制RGB LED燈帶實(shí)現(xiàn)夢(mèng)幻效果

Arduino控制的RGB LED燈條

使用Arduino的Android控制RGB LED燈條

如何應(yīng)用RGB LED漸變色連續(xù)漸變色來(lái)拯救世界

評(píng)論