作者:Rob Zwetsloot
在今天新一期的HackSpace雜志中,Phil King向您展示了如何通過網(wǎng)絡應用程序創(chuàng)建可控制的變色RGB LED氛圍燈。
PIR傳感器的蓋子為RGB LED發(fā)出的光提供了良好的漫射器
通過內置無線連接,Pico W是創(chuàng)建物聯(lián)網(wǎng)(IoT)項目的理想選擇。為了更簡單,Anvil發(fā)布了Pico W IoT工具包,使您能夠輕松、安全地連接到您在Anvil平臺上創(chuàng)建的web應用程序。有一個拖放式的web UI構建器、內置數(shù)據(jù)庫、用戶身份驗證、電子郵件集成、HTTP API等,所有這些都與您的Pico W對話。
通過使用Anvil的特殊UF2固件映像,您可以在MicroPython中對Pico W上的程序進行編碼,只需幾行額外的代碼即可連接到Anvil,然后在Anvil網(wǎng)站上創(chuàng)建一個web應用程序,該應用程序可以向Pico W程序發(fā)送數(shù)據(jù)或從Pico W中接收數(shù)據(jù)。在本教程中,我們將向您展示如何在Anvil web應用程序中使用滑塊控制RGB LED的顏色。
01.安裝固件
為了能夠將Pico W鏈接到Anvil框架,您需要使用特殊的固件文件。到magpi.cc/enviluf2(https://github.com/anvil-works/anvil-pico/releases/)下載最新的“完整”UF2文件。(如果要避免覆蓋Pico W上的任何現(xiàn)有文件,請使用“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 = " "
現(xiàn)在,當Pico W重新啟動時,它將自動連接到您的無線網(wǎng)絡。
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應依次變?yōu)榧t色、綠色和藍色。如果顏色順序錯誤,則需要更換相關跳線
05.編寫代碼
現(xiàn)在,讓我們?yōu)镽GB LED“情緒燈”編寫MicroPython代碼,如mood_lamp_sliders.py列表所示。頂行import anvil.pico使pico W能夠連接到anvil的服務器。第二行,import uasyncio as a,為運行并發(fā)函數(shù)設置異步調度程序。我們還從機器庫導入Pin和PWM類,以便我們可以通過GPIO引腳控制RGB LED。
運行時,Pico W MicroPython代碼將連接到Anvil web應用程序
再往下是一行,以"UPLINK_KEY ="開始。這是您稍后需要粘貼Anvil上創(chuàng)建的web應用程序的上行鏈路密鑰的地方,以便Pico W程序可以鏈接到它。程序底部有一行可以使用它進行連接。
接下來,我們創(chuàng)建三個變量來設置RGB LED的紅色、綠色和藍色部分的級別。然后,我們按照測試代碼設置PWM引腳。
06.調用decorator
在我們的代碼中,我們有三個功能:一個用于控制RGB LED的紅色、綠色和藍色部分。在每個函數(shù)之前,我們添加一個“decorator”,并在定義函數(shù)的行的開頭添加async;例如:
@anvil.pico.callable_async async def red(slider):
這讓我們連接的Anvil web應用程序知道可以從web調用此功能。我們將向其發(fā)送一個值,該值由web應用程序中的滑塊設置,該滑塊將設置該顏色的級別。當我們使用從0到255的值作為滑塊時,我們將其乘以256,將其轉換為PWM電平設置的無符號16位整數(shù)(0到65535)。
RGB_test.py代碼。在此處獲取完整代碼(https://github.com/themagpimag)
07.設計web應用程序
去anvil.works注冊一個免費賬戶。我們希望為我們的燈使用滑塊控件,這不是標準的Anvil組件,因此我們將打開一個包含滑塊庫的演示應用程序:轉到Anvil.works/library/slider并單擊“Open in Anvil”。
Sliders演示應用程序只有兩個滑塊,我們需要三個,分別為紅色、綠色和藍色。從右側的“Toolbox”面板中,將滑塊自定義組件拖動到“Reset”按鈕的正上方。現(xiàn)在選擇一個現(xiàn)有的“Value:”元素,按CTRL/CMD+C復制它,然后用CTRL/CMD+V將它粘貼到新滑塊下。復制并粘貼一個“1”組件到它的右側。
依次單擊每個“Value:”元素,并將其文本(在右側的“屬性”面板中)分別更改為“紅色:”、“綠色:”和“藍色:”。將每個“1”文本元素設置為“0”。此外,將“Blue:”元素名稱設置為“l(fā)abel_6”,并將附帶的“0”元素名稱設為“l(fā)abel_7”。對于每個滑塊,將“slider_max”值設置為255。
mood_lamp_sliders.py。在這里獲取完整代碼(https://github.com/themagpimag)
08.啟用服務器上行鏈路
單擊左下角的“+”按鈕并選擇上行鏈路,然后單擊服務器上行鏈路旁邊的啟用。這將為應用程序生成一個服務器上行鏈路密鑰(忽略客戶端密鑰),您應該將其粘貼到Pico W上MicroPython代碼的第5行,以便它可以連接到該應用程序。
09.調整web代碼
我們需要更改web應用程序代碼,以便將每個滑塊的設置發(fā)送到Pico W程序中的紅色、綠色或藍色功能。單擊“Code”選項卡,將以下行(縮進)添加到slider1_change函數(shù)中:
anvil.server.call_s("green",self.slider_1.level) pass
請注意,滑塊1是中間的滑塊,我們將其指定為綠色。同樣,對于slider2_change,添加以下兩行(縮進):
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.運行兩個應用程序
我們現(xiàn)在可以出發(fā)了。首先,在Thonny運行Pico W程序。您將在Shell窗格中看到消息,以顯示它正在連接。完成后,運行Anvil web應用程序。現(xiàn)在,您可以移動滑塊來調整RGB LED的紅色、綠色和藍色組件,以改變其陰影。
為了使其更有效,您可能需要漫射LED的光。我們簡單地將PIR傳感器的半透明塑料蓋放在上面,效果相當好。你現(xiàn)在有了一個網(wǎng)絡控制的情緒燈!下一次,我們將在Anvil網(wǎng)絡應用程序中讀取Pico W傳感器數(shù)據(jù)。
審核編輯:湯梓紅
-
傳感器
+關注
關注
2553文章
51390瀏覽量
756571 -
led
+關注
關注
242文章
23355瀏覽量
663172 -
RGB
+關注
關注
4文章
801瀏覽量
58715 -
PIR
+關注
關注
0文章
75瀏覽量
17924
原文標題:Pico W IoT搭配Anvil:情緒燈| HackSpace#62
文章出處:【微信號:Arm軟件開發(fā)者,微信公眾號:Arm軟件開發(fā)者】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論