www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

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

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

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

在這個(gè)項(xiàng)目中,您將學(xué)習(xí)使用W5100S-EVB-Pico 2的基礎(chǔ)知識(shí),以及如何使用Adafruit IO在CircuitPython上使用它,基于一個(gè)簡單的LED程序,通過向上或向下移動(dòng)操縱桿或使用Adafruit IO的控制器依次打開或關(guān)閉燈。

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

以上是我的項(xiàng)目結(jié)構(gòu)和用戶界面。

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

用戶界面還將在電源切換按鈕下方顯示哪些燈已經(jīng)打開或關(guān)閉。

設(shè)置板

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

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

將UF2文件拖到單板的驅(qū)動(dòng)器上。

您的板子現(xiàn)在應(yīng)該包含這些文件。

您現(xiàn)在可以根據(jù)連接圖連接模塊,也可以用以太網(wǎng)電纜連接路由器。

設(shè)置用戶界面

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

去Adafruit的網(wǎng)站,以用戶身份登錄/注冊(cè)。

登錄后,進(jìn)入他們的IO頁面。

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

?電源

?控制器

?紅色

?綠色

?藍(lán)色

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

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

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

接下來,轉(zhuǎn)到儀表板選項(xiàng)卡。

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

將“開啟值”設(shè)置為1,“關(guān)閉值”設(shè)置為0。

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

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

按預(yù)覽選項(xiàng)卡上的按鈕查看控制器上的每個(gè)值。

我們將使用的唯一兩個(gè)按鈕是UP和DOWN按鈕,它們對(duì)應(yīng)的值是5和13。

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

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

根據(jù)需要配置塊的位置。

完成接口的設(shè)置。

編碼前的準(zhǔn)備

在編寫項(xiàng)目代碼之前,我們?nèi)匀恍枰螺d庫來幫助我們更容易地開發(fā)項(xiàng)目。

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

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

1. adafruit_io

2. adafruit_miniqtt

3. adafruit_wiznet5k

4. adafruit_connection_manager

5. adafruit_requests

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

轉(zhuǎn)到此鏈接并將JSON代碼粘貼到文本文件中。

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

將aio_name和aio_key粘貼到secrets.py文件中。JSON中的其他變量可以忽略,因?yàn)槲覀儾粫?huì)在這個(gè)項(xiàng)目中使用它們。

在CircuitPython上編碼

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

轉(zhuǎn)到CircuitPython的代碼編輯器,并記住將電路板連接到計(jì)算機(jī)上。

按connect選項(xiàng)卡,選擇您的設(shè)備并在代碼編輯器上打開code.py。

必需的庫

首先將庫導(dǎo)入到文件中。

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

如果沒有secrets.py文件,程序?qū)⒃趫?zhí)行主代碼之前立即終止。

模塊和單板端口設(shè)置

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

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

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

由于我們的Rocker模塊是一個(gè)模擬信號(hào)模塊,我們使用CircuitPython的AnalogIn函數(shù)將引腳26設(shè)置為對(duì)板的模擬輸入。

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

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

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

以太網(wǎng)連接

接下來,讓我們使用該板的以太網(wǎng)功能。

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

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

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

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

接下來,要使用HTTP連接到萬維網(wǎng),我們需要為以太網(wǎng)接口設(shè)置一個(gè)請(qǐng)求會(huì)話。我們可以使用下面的代碼初始化SSL請(qǐng)求會(huì)話。

請(qǐng)求會(huì)話是為HTTP請(qǐng)求保留的。我們可以注釋這一行。

以太網(wǎng)接口的最終部分如下:

MQTT通信集

讓我們開始將我們的板制作成一個(gè)MQTT客戶機(jī),準(zhǔn)備好偵聽Adafruit IO消息。

我們可以用這個(gè)函數(shù)來設(shè)置客戶機(jī)。

在MQTT內(nèi)部。MQTT函數(shù),在使用該函數(shù)之前需要填寫幾個(gè)參數(shù)。

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

當(dāng)我們?cè)O(shè)置客戶機(jī)時(shí),我們需要為客戶機(jī)的不同用途創(chuàng)建回調(diào)函數(shù)。

在這個(gè)項(xiàng)目中,我們想做回調(diào)函數(shù),當(dāng)客戶端連接,斷開或接收/發(fā)送消息。

連接功能

這個(gè)函數(shù)在我們第一次連接到Adafruit IO服務(wù)器時(shí)被調(diào)用。當(dāng)我們連接到功能時(shí),我們應(yīng)該訂閱電源饋送和控制器饋送。

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

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

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

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

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

因此,讓我們將電源和控制器提要設(shè)置為可訂閱的主題,因?yàn)槲覀兿M娫春涂刂破魈嵋系娜魏胃露寄苡|發(fā)影響程序的消息函數(shù)。

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

我們還需要為3個(gè)LED燈設(shè)置主題,因?yàn)槲覀円矊⑹褂么烁袷綄?shù)據(jù)發(fā)布到這些主題。

將3個(gè)LED主題放入紅色,黃色和綠色的順序列表中,因?yàn)槲覀円错樞虬l(fā)布到這些主題。

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

斷開功能

當(dāng)我們從MQTT服務(wù)器斷開連接時(shí),將調(diào)用該函數(shù)。

在這個(gè)項(xiàng)目中,我只是添加了一條print語句來通知用戶客戶端已經(jīng)在終端中成功斷開連接。

消息函數(shù)

當(dāng)訂閱的主題中有任何更新時(shí),將調(diào)用此函數(shù)。

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

讓我們首先在接收到有關(guān)電源主題的更新時(shí)定義該函數(shù)。

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

在界面中,用戶可以將電源開關(guān)切換到關(guān)閉狀態(tài)。這將導(dǎo)致feed值更新為0,此時(shí)應(yīng)該關(guān)閉機(jī)器。

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

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

接下來,讓我們?cè)诮邮盏娇刂破髦黝}的更新時(shí)定義該函數(shù)。

當(dāng)用戶按下控制器塊上的任何按鈕時(shí),將在控制器提要中發(fā)布一個(gè)值。在我們的項(xiàng)目中,因?yàn)槲覀冎皇褂肬P和DOWN按鈕,所以我們的函數(shù)只需要處理這兩個(gè)值,即值5表示UP,值13表示DOWN。

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

打開燈的算法

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

為了跟蹤打開的燈的數(shù)量,我使用了一個(gè)名為current_light_on_pos的變量來跟蹤已打開的當(dāng)前LED位置的位置。

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

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

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

當(dāng)我們按下控制器上的UP按鈕時(shí),我們應(yīng)該首先將current_light_on_pos增加1,并通過使用led_set[current_light_on_pos]在新位置上打開列表內(nèi)的燈。value = True。最后,我們將值1發(fā)布到Adafruit IO到相應(yīng)的顏色主題,因?yàn)槲覀兿M缑骘@示已打開的顏色。

關(guān)掉燈的算法

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

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

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

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

最后,由于我們將更改current_light_on_pos的值和led_set中的值,我們需要在函數(shù)中使用global關(guān)鍵字設(shè)置它們。

這就完成了MQTT客戶機(jī)的消息功能。

全消息功能:

主程序

現(xiàn)在讓我們完成主板將要運(yùn)行的主程序。

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

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

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

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

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

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

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

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

復(fù)位和斷開

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

結(jié)論

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

本文編譯自hackster.io

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

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉