日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 工業(yè)控制 > 電路設計項目集錦
[導讀]在這個項目中,您將學習使用W5100S-EVB-Pico 2的基礎知識,以及如何使用Adafruit IO在CircuitPython上使用它,基于一個簡單的LED程序,通過向上或向下移動操縱桿或使用Adafruit IO的控制器依次打開或關閉燈。

通過遵循本指南,了解使用Adafruit IO在CircuitPython上使用W5100S-EVB-Pico2的基礎知識。

學習使用W5100S-EVB-Pico 2一開始可能會讓人望而生畏,但使用它實際上非常簡單。此外,MicroPython和CircuitPython等平臺使得在其上開發(fā)項目變得非常容易。

在這個項目中,您將學習使用W5100S-EVB-Pico 2的基礎知識,以及如何使用Adafruit IO在CircuitPython上使用它,基于一個簡單的LED程序,通過向上或向下移動操縱桿或使用Adafruit IO的控制器依次打開或關閉燈。

首先,讓我們從連接圖和Adafruit IO的在線用戶界面開始。

以上是我的項目結構和用戶界面。

這個項目真的很簡單。在游戲板上,你可以通過向上移動操縱桿將燈光從紅色變?yōu)榫G色,向下移動操縱桿,燈光將從綠色變?yōu)榧t色。同時,在控制器上按向上鍵,燈由紅色變?yōu)榫G色,按向下鍵,燈由綠色變?yōu)榧t色,燈由綠色變?yōu)榧t色。

用戶界面還將在電源切換按鈕下方顯示哪些燈已經打開或關閉。

設置板

在開發(fā)項目之前,我們需要配置該塊以與CircuitPython兼容。進入CircuitPython下載頁面,搜索W5100-EVB-Pico 2并將UF2文件下載到本地計算機上。

通過按住BOOTLEG按鈕將您的電路板與PC連接并連接到PC。

將UF2文件拖到單板的驅動器上。

您的板子現在應該包含這些文件。

您現在可以根據連接圖連接模塊,也可以用以太網電纜連接路由器。

設置用戶界面

讓我們從制作用戶界面開始。

去Adafruit的網站,以用戶身份登錄/注冊。

登錄后,進入他們的IO頁面。

找到網頁頂部的提要頁面,創(chuàng)建5個提要,它們是

?電源

?控制器

?紅色

?綠色

?藍色

第一列是提要的名稱。第二列是提要的關鍵。第三列是最近推送到提要的值。

該密鑰用于評估板和接口之間的數據傳輸。這些提要中的值影響用戶界面的狀態(tài)或評估板的狀態(tài)。

您可以通過單擊提要并按提要信息來更改名稱或鍵。

接下來,轉到儀表板選項卡。

添加一個按鈕塊,并將其與電源綁定。

將“開啟值”設置為1,“關閉值”設置為0。

這意味著當提要中的值更新為1時,該塊將切換到On狀態(tài)。如果該值不等于1,則該塊將處于關閉狀態(tài)。

接下來,創(chuàng)建一個控制器塊并將其與控件提要綁定。

按預覽選項卡上的按鈕查看控制器上的每個值。

我們將使用的唯一兩個按鈕是UP和DOWN按鈕,它們對應的值是5和13。

最后,為每種顏色制作三個指示塊,并分別綁定顏色饋送。

將標題和On顏色更改為已綁定到的顏色提要。將條件設置為等于1.0,這樣只有值1才會打開指示塊。

根據需要配置塊的位置。

完成接口的設置。

編碼前的準備

在編寫項目代碼之前,我們仍然需要下載庫來幫助我們更容易地開發(fā)項目。

進入CircuitPython的庫頁面,將包含MPY庫的bundle zip文件夾下載到您的計算機上。

將這5個文件解壓到電路板的lib文件夾中。

1. adafruit_io

2. adafruit_miniqtt

3. adafruit_wiznet5k

4. adafruit_connection_manager

5. adafruit_requests

接下來,在lib文件夾中創(chuàng)建一個名為secrets.py的文本文件。

轉到此鏈接并將JSON代碼粘貼到文本文件中。

找到你的名字和令牌去Adafruit IO和按下鍵選項卡在頁面的右上角。

將aio_name和aio_key粘貼到secrets.py文件中。JSON中的其他變量可以忽略,因為我們不會在這個項目中使用它們。

在CircuitPython上編碼

讓我們開始使用CircuitPython上的web編輯器編寫項目代碼。

轉到CircuitPython的代碼編輯器,并記住將電路板連接到計算機上。

按connect選項卡,選擇您的設備并在代碼編輯器上打開code.py。

必需的庫

首先將庫導入到文件中。

記住,在使用Adafruit接口之前,我們還需要這個secrets.py文件,所以讓我們使用下面的代碼來檢查lib文件夾是否包含這個文件。

如果沒有secrets.py文件,程序將在執(zhí)行主代碼之前立即終止。

模塊和單板端口設置

接下來,讓我們用模塊設置板的端口。

根據連接圖,我將搖臂模塊的垂直組件連接到GP26上,綠、黃、紅燈分別連接到GP11、13、15上。

首先,讓我們初始化GP26的引腳。

由于我們的Rocker模塊是一個模擬信號模塊,我們使用CircuitPython的AnalogIn函數將引腳26設置為對板的模擬輸入。

對于紅綠燈模塊,模塊將接收GP11、gp13和gp15的數字信號,打開模塊上各自的信號燈。因此,我們可以使用CircuitPython的DigitalInOut函數將端口設置為數字信號。我們還需要將方向更改為OUTPUT。

為了按順序打開燈,我們還需要創(chuàng)建一個列表,以紅色、黃色和綠色的順序存儲3盞燈。

旁注:在W5100S-EVB-Pico 2中,有用于模擬信號和數字信號的端口。您可以參考以下圖片或訪問Wiznet的官方網站來查找ADC端口

以太網連接

接下來,讓我們使用該板的以太網功能。

首先將SPI接口Pin與CircuitPython連接。

對于電路板的特定引腳,您可以查看Wiznet官方網站提供的這張圖表。

正如您所看到的,引腳16-19對板的SPI接口有特定的用途。使用以下代碼設置SPI接口。

使用adafruit.wiznet5k提供的WIZNET5K功能將它們組合為以太網接口。查看Github頁面了解更多信息。

接下來,要使用HTTP連接到萬維網,我們需要為以太網接口設置一個請求會話。我們可以使用下面的代碼初始化SSL請求會話。

請求會話是為HTTP請求保留的。我們可以注釋這一行。

以太網接口的最終部分如下:

MQTT通信集

讓我們開始將我們的板制作成一個MQTT客戶機,準備好偵聽Adafruit IO消息。

我們可以用這個函數來設置客戶機。

在MQTT內部。MQTT函數,在使用該函數之前需要填寫幾個參數。

參考Adafruit的MQTT API網站,您可以在MQTT Connection Details小節(jié)的HOST Name中找到broker的參數。當我們將用戶身份驗證信息存儲在secrets.py文件中時,我們可以簡單地從secrets JSON中獲取這些信息并加載到MQTT函數中。將is_ssl設置為True允許我們連接到8883端口上的Adafruit MQTT Api。最后,我們通過引用前面的代碼為MQTT客戶機設置池和上下文。

當我們設置客戶機時,我們需要為客戶機的不同用途創(chuàng)建回調函數。

在這個項目中,我們想做回調函數,當客戶端連接,斷開或接收/發(fā)送消息。

連接功能

這個函數在我們第一次連接到Adafruit IO服務器時被調用。當我們連接到功能時,我們應該訂閱電源饋送和控制器饋送。

訂閱提要將允許在該提要中更新的任何消息觸發(fā)您的消息功能。每當您從訂閱的提要收到消息時,程序就會執(zhí)行此操作。

在CircuitPython中,你可以使用client.subscribe("some_topic")來訂閱物聯(lián)網平臺上的任何主題/提要。

但是,不同的平臺可能需要不同的主題格式。因此,我們需要檢查網站的MQTT API頁面,以便查找主題的格式。

您可以在Adafruit的MQTT API頁面中找到MQTT API主題格式。

如上所示,主題格式為的形式

因此,讓我們將電源和控制器提要設置為可訂閱的主題,因為我們希望電源和控制器提要上的任何更新都能觸發(fā)影響程序的消息函數。

將這兩個主題放入一個名為subscribe_feed_list的列表中。

我們還需要為3個LED燈設置主題,因為我們也將使用此格式將數據發(fā)布到這些主題。

將3個LED主題放入紅色,黃色和綠色的順序列表中,因為我們要按順序發(fā)布到這些主題。

最后,在Connected函數中,我們運行for循環(huán)來訂閱兩個提要。

斷開功能

當我們從MQTT服務器斷開連接時,將調用該函數。

在這個項目中,我只是添加了一條print語句來通知用戶客戶端已經在終端中成功斷開連接。

消息函數

當訂閱的主題中有任何更新時,將調用此函數。

由于訂閱了兩個不同的主題,因此首先需要確定哪個主題觸發(fā)了消息函數。

讓我們首先在接收到有關電源主題的更新時定義該函數。

啟動設備后,電源按鈕將切換為打開狀態(tài)。正如我們之前設計的電源開關在輸入值為1時打開一樣,我們將在這3個函數之外發(fā)布一個值為1的電源開關,以通知接口我們已經打開了設備。

在界面中,用戶可以將電源開關切換到關閉狀態(tài)。這將導致feed值更新為0,此時應該關閉機器。

因此,我們希望獲得電源饋送的最新值,并確定我們的程序是否停止。

在這段代碼中,我們使用global關鍵字允許將這個局部函數更改為位于該函數外部的power變量。然后根據功率開關的最新值將功率設置為True或False,該值在1和0之間變化。

接下來,讓我們在接收到控制器主題的更新時定義該函數。

當用戶按下控制器塊上的任何按鈕時,將在控制器提要中發(fā)布一個值。在我們的項目中,因為我們只使用UP和DOWN按鈕,所以我們的函數只需要處理這兩個值,即值5表示UP,值13表示DOWN。

在下一節(jié)中,我將分別解釋打開和關閉燈的算法。

打開燈的算法

在開燈之前,我們需要先處理最大的情況,即如果所有的燈都開著,我們不能繼續(xù)增加要開的燈的數量。

為了跟蹤打開的燈的數量,我使用了一個名為current_light_on_pos的變量來跟蹤已打開的當前LED位置的位置。

也就是說,位置0是指只有紅燈亮,位置1是指紅黃燈都亮,位置2是指所有燈都亮。在current_light_on_pos中還包含并初始化了一個額外的位置-1,它指的是所有的燈都關閉了。

因此,如果current_light_on_pos的值為2,則表示不能再打開燈了,因此我們從終端通知用戶不能再打開燈了。

在處理了最大值情況之后,讓我們繼續(xù)討論開燈的函數。

當我們按下控制器上的UP按鈕時,我們應該首先將current_light_on_pos增加1,并通過使用led_set[current_light_on_pos]在新位置上打開列表內的燈。value = True。最后,我們將值1發(fā)布到Adafruit IO到相應的顏色主題,因為我們希望界面顯示已打開的顏色。

關掉燈的算法

同樣,讓我們先處理最小情況,也就是所有燈都關閉的情況。

如果current_light_on_pos中的值為-1,則表示所有的燈都關閉了。因此,我們需要通知用戶,我們不能在終端關閉更多的燈。

在處理了最小情況之后,讓我們繼續(xù)討論關燈的函數。

當我們按下控制器上的DOWN按鈕時,我們應該首先通過led_set[current_light_on_pos]關閉列表中current_light_on_pos處的燈。value = False,并將值0發(fā)布到Adafruit IO對應的色源。最后,我們將current_light_on_pos減1,以更新當前已打開的燈的最新位置。

最后,由于我們將更改current_light_on_pos的值和led_set中的值,我們需要在函數中使用global關鍵字設置它們。

這就完成了MQTT客戶機的消息功能。

全消息功能:

主程序

現在讓我們完成主板將要運行的主程序。

我們首先初始化程序中要使用的剩余變量。

power變量被用作while循環(huán)的條件,以保持主程序的運行,直到power變?yōu)镕alse(即從在線界面關閉)。我們還應該初始化消息變量,以便在客戶機中使用。消息的功能。

接下來,讓我們將定義的MQTT客戶機連接到MQTT服務器,即Adafruit IO。

只需使用MQTT.connect()函數連接到服務器,這將同時觸發(fā)我們前面定義的MQTT.connected()函數。同時,我們將值1發(fā)布到Adafruit IO,以將電源開關更改為On狀態(tài)。

讓我們?yōu)槌绦蚓帉憌hile循環(huán)。這個while循環(huán)將一直運行,直到power變量變?yōu)镕alse。在while循環(huán)內部,為了維護與MQTT服務器的連接,我們需要使用MQTT.loop()。

對于while循環(huán)內的函數。我們希望搖臂模塊的輸入打開或關閉燈。讓我們定義read_Vertical = Dir_Vertical這個值。用于存儲操縱桿垂直值的當前值。然后,我們簡單地使用我們之前定義的相同的光響應算法,但使用不同的條件來觸發(fā)燈亮和關燈功能。

您可以為代碼設置自己的閾值,但我使用60000作為打開燈的上限閾值,3000作為關閉燈的下限閾值。

最后,添加一個時間。Sleep函數限制while循環(huán)的指令。

復位和斷開

最后,當退出while循環(huán)時,需要將接口上的所有內容重置為默認狀態(tài),并斷開與服務器的連接。只需運行for循環(huán)并將相應的默認值發(fā)布到電源饋送和LED饋送,它們都是0,然后斷開與服務器的連接。

結論

這里結束了項目代碼和設置。您可以根據上述步驟進行編碼,也可以在GitHub頁面中試用代碼。如果你有任何問題,你也可以在YouTube視頻下評論。我希望這有助于您更多地了解如何在CircuitPython上使用W5100S-EVB-Pico 2,并開始您的第一個物聯(lián)網創(chuàng)建之旅。

本文編譯自hackster.io

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: 驅動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅動性能的關鍵。

關鍵字: 工業(yè)電機 驅動電源

LED 驅動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關鍵字: 驅動電源 照明系統(tǒng) 散熱

根據LED驅動電源的公式,電感內電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關鍵字: LED 設計 驅動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...

關鍵字: 電動汽車 新能源 驅動電源

在現代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質量和效率直接關系到城市的公共安全、居民生活質量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關鍵字: 發(fā)光二極管 驅動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數校正(PFC)、空間受限和可靠性等。

關鍵字: LED 驅動電源 功率因數校正

在LED照明技術日益普及的今天,LED驅動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關鍵字: LED照明技術 電磁干擾 驅動電源

開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現在的LED驅動電源

關鍵字: LED 驅動電源 開關電源

LED驅動電源是把電源供應轉換為特定的電壓電流以驅動LED發(fā)光的電壓轉換器,通常情況下:LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: LED 隧道燈 驅動電源
關閉