ESP系列WiFi模塊在基于物聯網項目的愛好者和行業(yè)中非常受歡迎。ESP32是ESP系列模塊中最受歡迎的板之一,它具有雙核32位CPU,內置Wi-Fi,藍牙和足夠數量的I/O引腳。它是一種小型且經濟有效的設備,可用于使任何項目與互聯網通信。在這個項目中,我將創(chuàng)建一個帶有ESP32的web服務器,使用Arduino IDE環(huán)境控制LED。Web服務器是我們存儲網頁、處理網頁并將其傳送給Web客戶端的地方。Web服務器可以通過本地網絡上的任何設備訪問。在之前的教程中,我們使用樹莓派構建了相同的web服務器。
需求
?ESP32模塊
?USB電纜
?電路試驗板
?LED
?跳線
?電阻器1 k
線路圖
編程部分
完整的ESP32 web服務器代碼在本項目的末尾給出。在本節(jié)中,我將告訴您代碼的實際工作原理。
你需要做的第一件事是包括WiFi庫。
現在輸入您的網絡憑據,即您的WiFi網絡的SSID和密碼內的雙倒逗號。
接下來,聲明一個WiFi Server庫的對象,這樣我們就可以訪問它的函數了。所形成的實例的參數將是端口號,因為HTTP的默認端口號是80,所以我將使用這個值。
下面這行創(chuàng)建了一個變量來存儲HTTP請求的標頭:
現在,您必須創(chuàng)建輔助變量來存儲輸出的當前狀態(tài)。
現在,將GPIO分配到您的輸出,這里我使用GPIO2引腳作為我的輸出,您可以根據您正在使用的輸出更改它。
在void setup()函數中,我們將初始化波特率,LED輸出,并使用WiFi.begin(ssid,password)將模塊與Wi-Fi連接;函數。該功能啟動Wi-Fi連接,等待連接成功,并在串口監(jiān)視器上打印ESP IP地址。
在loop()函數中,您必須編寫當新客戶端與web服務器建立連接時發(fā)生的事情。ESP32總是使用server.available()偵聽傳入的客戶端;并將輸入的數據存儲到一個字符串變量中,并在串行監(jiān)視器上打印數據。
現在,if和else語句檢查在您的網頁中按下了哪個按鈕,并相應地控制輸出。例如,如果您按下GPIO2 ON按鈕,則ESP32接收到/2/ON URL上的請求,ESP32將LED打開。
用于ESP32 Webserver的HTML代碼
在HTML中創(chuàng)建網頁對這個項目來說是最重要的,ESP32將發(fā)送一個響應到你的瀏覽器,其中包含一些HTML代碼來構建網頁。-這里我們已經嵌入了完整的HTML代碼在Arduino代碼使用client.println。最后給出了完整的代碼。
下面一行表示我們正在發(fā)送HTML。
下面的代碼行使網頁在任何瀏覽器中都能響應。
現在我們要樣式我們的網頁,裝飾你的頁面,你可以使用CSS樣式按鈕和背景。您可以根據自己的需要更改屬性。
現在設置網頁的標題。在這里,你可以給任何名字或任何你喜歡的東西。
現在您必須編寫代碼來顯示GPIO 2的當前狀態(tài)。使用output2state變量,以便在變量更改時立即更新狀態(tài)。
現在,根據GPIO的當前狀態(tài)顯示on或off按鈕。如果當前狀態(tài)是關閉的,你必須顯示ON按鈕,反之亦然。
最后,當響應結束時,必須清除header變量,并使用client.stop()停止與客戶端的連接。
這是整個項目的編程過程;本文最后給出了該項目的完整代碼,您可以查看。
用Arduino IDE編程ESP32
現在您正處于上傳ESP32代碼的階段,我們將使用Arduino IDE通過以下步驟上傳ESP32中的代碼:
通過USB電纜將ESP32連接到PC上,并如上所述制作電路,這里我使用的是GPIO2,您可以根據您的需要使用。
打開Arduino IDE并將此代碼復制到IDE窗口,但請確保您提供了正確的網絡WiFi憑據。
現在進入Tools——> Board——> ESP32 Dev module。
現在轉到Tools—>Port,選擇ESP32連接的端口。
現在單擊upload上傳代碼。
上傳完成后,您將在輸出控制臺中發(fā)現如下消息。
現在打開你的串行監(jiān)視器,按下ESP32的重置按鈕,現在你的ESP開始連接到你的網絡,一旦連接,它會給你這個ESP的IP。
現在打開瀏覽器并輸入此IP地址,您將找到以下網頁。
從這個網頁,你可以控制你的LED,你可以看到在串行監(jiān)視器以及后臺發(fā)生了什么。
這就是你如何成功地創(chuàng)建一個web服務器,并從網頁控制LED。這樣,您也可以使用ESP32網絡服務器從世界任何地方控制家用電器。
本文編譯自iotdesignpro