在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何使用ESP8266制作可配置的Web服務器

科技觀察員 ? 來源:allaboutcircuits ? 作者:穆罕默德·阿明·卡 ? 2022-05-10 15:18 ? 次閱讀

在這個項目中,我們首先研究如何在 Arduino IDE 中安裝 ESP8266 插件,然后使用 ESP8266 制作可配置的 Web 服務器。

ESP8266 之所以受歡迎,很大程度上是因為它具有出色的性價比。它還可以通過 Wi-Fi 將互聯網連接到微處理器

它的主要缺點是功耗。ESP8266 不是一款非常節能的芯片,因為它的設計符合大多數家庭和企業都可以使用的 IEEE 802.1 協議(我們稱之為 Wi-Fi)。該協議議程保證了創建無線本地網絡的良好速度和穩健性。更高的速度會導致更高的功耗,這使得 ESP8266 對于低功耗設計效率低下。

但是,ESP8266 在功耗不重要的情況下非常有用,例如不斷供電且不需要電池的設備。ESP8266 可以連接到任何 Wi-Fi 網絡,并通過 TCP 和 UDP 等各種協議發送或接收數據。此外,它還可以構建 Wi-Fi 熱點并管理其他設備。

電路設計注意事項

ESP8266 可能需要 250mA 的電流來傳輸數據。因此,如果我們想要有足夠的余量,我們可能需要至少 500mA 的電流來為 ESP8266 供電。使用從計算機獲取電源USB 電纜為 ESP8266 供電可能會導致不穩定。

在這個項目中,我們使用保證 1A 電流的 5V 電源和 LM1086-3.3V 作為穩壓器為 ESP8266 供電。在圖 1 中,顯示了在引導加載程序和使用模式下使用 ESP8266 的引腳配置。

ada.jpg

?

圖 1.在引導加載程序和使用模式下使用 ESP8266。

Arduino 附加組件

安裝 ESP8266 插件在互聯網上的許多文章中都有描述,但為了清楚起見,我們將在這里簡要介紹安裝。要安裝 ESP8266 插件,我們需要更新 Arduino IDE 中的板管理器。可以從 File-》Preferences-》Additional Boards Manager URLs 添加一個額外的 Board Manager URL。在 URL 部分,應輸入以下 URL,如圖 2 所示。

ESP-add.jpg

圖 2.其他董事會經理 URL

通過更新 URL,可以通過導航到 Tools-》Boards-》Boards Manager 來訪問 ESP8266 插件。ESP8266 板可用,應安裝。安裝后,在板部分,ESP8266 模塊將可用。可以選擇不同類型的模塊,并且出于本項目的目的(因為我們構建了我們正在使用的電路板),我們將使用通用 ESP8266 模塊。

將草圖上傳到 ESP8266

要對 ESP8266 進行編程,我們使用 ESP8266 已經包含的 UART 引導加載程序。在這個項目中,我制作了一個簡單的 ESP8266 開發板,原理圖如圖 3 和以下部件列表:

1. ESP8266-12(E或F不分大小,唯一區別是內存)

2. 3.3K電阻 x 2

3. 470R 功率演示LED電阻

4. 一個LED決定板子是供電還是供電不是

5. AMS1117-3.3: 電壓調節器

6. 10uF-25v 電解電容

7. 22uF-25v 電解電容

8. 100nF 電容

9. 一個用于串行通信的 3 針連接器

10. 一個用于進入引導加載程序的 2 針連接器

為了進入啟動模式,GPIO0 應接地以啟動 ESP8266。然后通過在 Arduino IDE 中設置適當的 COM 端口,可以通過點擊上傳按鈕上傳草圖。編程完成后,GPIO0 應該懸空,因為 ESP8266 應該以正常模式啟動并運行程序。

main_schematic1.jpg

圖 3. ESP8266-12E 開發板原理圖

連接到接入點

ESP8266 具有內置 EEPROM,可用于存儲數據等應用,以構建安全登錄頁面。使用 EEPROM 很像其他 Arduino 板,但有一些細微差別。

一方面,您需要在開始讀取或寫入之前調用 EEPROM.begin(size)。大小是您要使用的字節數,介于 4 到 4096 字節之間。請注意,EEPROM.write() 不會立即寫入閃存。每當您希望將更改保存到閃存時,都必須調用 EEPROM.commit()。

在這個項目中,我們想要制作一個可配置的 Web 服務器,它可以放置在每個網絡中(即,在沒有 SSID 和接入點連接密碼的新網絡中)以與之前的設置進行連接。當連接失敗時,ESP8266 將進入接入點模式并等待接收配置設置(SSID 和密碼)。

一開始,我們獲取 512 字節的 EEPROM 并檢查用戶名或密碼是否可用。我們還可以為我們的設備選擇一個特定的 IP 地址并手動設置,需要存儲在 EEPROM 中。當我們需要創建設備數據庫以了解其位置和定義時,手動設置設備 IP 很有用。

在下面的完整代碼片段中,我們從 EEPROM 中保留 512 個字節,然后在收集信息后,我們嘗試連接到接入點。在完整的代碼中,如果 EEPROM 為空,代碼將繞過連接階段。

EEPROM.begin(512);
IPAddress ipad(192, 168, 1, eip.toInt());
IPAddress gateway(192,168,1,1);
IPAddress subnet(255,255,255,0);
WiFi.begin(esid.c_str(), epass.c_str());
WiFi.config(ipad, gateway, subnet);

上面的代碼嘗試使用存儲在 EEPROM 中的特定 IP 地址連接到網絡。使用特定 IP 地址時要記住的一件事是,我們需要知道網關 IP 地址以及網絡子網掩碼。另一方面,上述項目對于需要 DHCP 服務器的自動 IP 尋址不是必需的。

可以使用 WiFi.status() 函數檢查 Wi-Fi 狀態。根據 Arduino 網站,此函數返回以下內容:

WL_CONNECTED:連接到 Wi-Fi 網絡時分配

WL_NO_SHIELD:在沒有 Wi-Fi 屏蔽時分配

WL_IDLE_STATUS:在調用 WiFi.begin() 時分配的臨時狀態,并保持活動狀態,直到嘗試次數到期(導致 WL_CONNECT_FAILED)或建立連接(導致 WL_CONNECTED)

WL_NO_SSID_AVAIL:當沒有可用的 SSID 時分配

WL_SCAN_COMPLETED:掃描網絡完成時分配

WL_CONNECT_FAILED:在所有嘗試連接失敗時分配

WL_CONNECTION_LOST:連接丟失時分配

WL_DISCONNECTED:從網絡斷開時分配

通過使用 WiFi.status() 函數,我們可以檢查連接狀態,如果不存在,ESP8266 應該轉向接入點。

可以使用 WiFi.mode(WIFI_AP) 進行接入點配置,這需要用戶名和密碼。可以使用 WiFi.softAP 函數設置用戶名和密碼。描述每一個 Wi-Fi 功能會使這篇文章變得非常長,并且超出了本項目的范圍。但是,熱心的人可以在GitHub和Arduino 網站上找到有關 ESP6288 的 Wi-Fi 功能和其他庫的非常全面的文檔。

在這個項目中,我們希望將我們的設備連接到現有網絡。首先,當我們的設備沒有連接網絡的SSID和密碼時,它會進入接入點模式,然后我們可以對其進行配置。配置完成后,設備可以連接到所需的網絡。另一方面,有人可能只想在接入點模式下使用 ESP8266。在這種情況下,我們需要在要傳輸數據時連接到設備。

因此,在接入點模式下,ESP8266 將等待一組新的配置。可以使用返回整數的 WiFi.scanNetworks 掃描該區域中可用的無線接入點,以確定現有的接入點。收集可用網絡的數量后,以下功能可以為您提供所需的所有信息:

WiFi.SSID:獲取當前網絡的SSID

WiFi.RSSI:獲取與路由器連接的信號強度

WiFi.encryptionType:獲取當前網絡的加密類型

圖 4 顯示了 WiFi.scanNetworks 的輸出。數據通過 RS232 通信和名為TeraTerm的程序捕獲 。

teraterm.jpg

圖 4.掃描網絡

移動DNS

使用預建庫很容易在 ESP8266 上創建 Web 服務器。此外,可以使用 ESP8266mDNS 庫創建一個簡單的多播域名系統 (mDNS),將名稱鏈接到網絡中的服務器 IP。mDNS 將主機名解析為缺少本地名稱服務器的小型網絡中的 IP 地址。它使用與單播 DNS 相同的編程接口、數據包格式和操作語義。

接下來,“mdns.begin(‘esp8266’)”會導致一個 mDNS 服務器被定義為 ESP8266 的名稱。如果一切正常,mdns.begin 函數返回 true,我們可以通過 server.begin() 啟動服務器。

讀取 GET 請求

我們可以通過 mdns.update() 更新 mDNS 查詢,然后作為客戶端讀取請求。下面的代碼首先更新 mDNS 查詢,然后,如果數據包可用,則讀取它。

mdns.update();
WiFiClient client = server.available();
if (!client) {
return(20);
}
String req = client.readStringUntil('\r');
// Wait for data from client to become available
if(client.connected() && !client.available()){
return(20);
}

在上面的代碼中,ESP8266 檢查是否有任何客戶端可用。如果客戶端可用,它將讀取其數據,直到它收到‘\r’,這意味著數據包的結束。從那時起,我們的 Web 服務器可以接收 GET 請求,但無法解釋它們或發送答案。

可以使用 client.print() 函數發送客戶端的答案。對于客戶端,為了將其視為網頁內容(即在 Firefox 等瀏覽器中查看答案),答案應為 HTML 格式。通過這種方式,我們可以使用我們的 ESP8266 創建一個圖形化的 HTML Web 服務器。

在上面的代碼中,我們讀取客戶端 GET 請求并將其存儲在“req”變量中。‘req’ 變量現在有 GET 數據,我們可以簡單地解釋它。根據客戶端的 GET 請求,我們應該創建一個字符串,并使用 client.print() 函數生成客戶端答案。下面的代碼片段生成一個簡單的 HTML 頁面,用于回復客戶。

s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n\r\n

ALL ABOUT CIRCUITS!"; s += "

"; s += "\r\n\r\n"; client.print(s);

在片段中,“200”命令已發送到客戶端。

結論

在這個項目中,我們檢查了用于創建簡單 Web 服務器的 ESP8266 庫。然后,創建了一個可配置的 Web 服務器,該服務器采用 SSID 和所需無線網絡的密碼。最后,在連接到本地網絡后,GET 請求在設備和客戶端之間傳輸。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Web服務器
    +關注

    關注

    0

    文章

    138

    瀏覽量

    24767
  • Arduino
    +關注

    關注

    189

    文章

    6493

    瀏覽量

    190231
  • ESP8266
    +關注

    關注

    51

    文章

    965

    瀏覽量

    47035
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    ESP8266配置為帶有AT命令的Web服務器,AT命令回復HTTP GET出現錯誤怎么解決?

    我已將ESP8266配置為帶有 AT 命令的 Web 服務器。當瀏覽連接時,它會向我發送一個請求[i]GET /favicon.ico我想
    發表于 07-16 08:29

    使用EsP8266(NodeMCU)連接阿里云服務器

    Esp8266【NodeMCU】連接阿里云服務器創建阿里云產品添加設備Esp8266代碼MQTT_PASSWD密碼生成工具修改PubSubClient.h文件(不修改無法連接Mqtt服務器
    發表于 11-24 06:23

    ESP8266 WEB智能小后臺 ,采電壓,繪曲線,向服務器傳信息

    ESP8266 WEB小后臺 ,采電壓,繪曲線,向服務器傳信息一個月前,自己想設計一個不用安裝應用程序的智能手機控制的硬件。是否有人有興趣?有興趣的可以聯系我,朝“自帶智能使用程序的智能硬件,或是有
    發表于 11-25 22:15

    ESP8266使Web服務器完全無響應是怎么回事?

    我正在使用 ESP8266WebServer 庫和為 NodeMCU ESP8266 編譯的草圖。我知道庫創建的服務器需要以下代碼才能激活: void loop(void
    發表于 05-12 08:20

    使用ESP8266作為Web服務器,如何將網頁上傳到SPIFFS?

    我希望這是一個宣布這個的好地方...... 我一直在使用 ESP8266 作為 Web 服務器,因此必須一直將我的網頁上傳到 SPIFFS。 我曾經使用 Arduino IDE 和 SPIFFS
    發表于 05-23 08:49

    ESP8266可作為Web服務器嗎?怎么實現?

    ESP8266可作為Web服務器嗎怎么實現
    發表于 10-24 08:17

    如何建立一個帶Arduino IDE的ESP8266 Web服務器

    本文檔的主要內容詳細介紹的是如何建立一個帶Arduino IDE的ESP8266 Web服務器
    發表于 06-02 08:00 ?2次下載
    如何建立一個帶Arduino IDE的<b class='flag-5'>ESP8266</b> <b class='flag-5'>Web</b><b class='flag-5'>服務器</b>

    Esp8266(NodeMCU)連接阿里云服務器

    Esp8266【NodeMCU】連接阿里云服務器創建阿里云產品添加設備Esp8266代碼MQTT_PASSWD密碼生成工具修改PubSubClient.h文件(不修改無法連接Mqtt服務器
    發表于 11-16 10:21 ?18次下載
    <b class='flag-5'>Esp8266</b>(NodeMCU)連接阿里云<b class='flag-5'>服務器</b>

    調用Lua新建的WEB服務器 操作Nodemcu esp8266 控制繼電器實現物聯網

    調用Lua新建的WEB服務器 操作Nodemcu esp8266 控制繼電器實現物聯網
    發表于 12-08 16:51 ?13次下載
    調用Lua新建的<b class='flag-5'>WEB</b><b class='flag-5'>服務器</b>  操作Nodemcu <b class='flag-5'>esp8266</b> 控制繼電器實現物聯網

    esp8266作為web服務器的實現

    最近要在ESP8266和單片機之間實現網頁控制
    發表于 12-29 18:53 ?1次下載
    <b class='flag-5'>esp8266</b>作為<b class='flag-5'>web</b><b class='flag-5'>服務器</b>的實現

    最簡單DIY基于ESP8266的物聯網智能小車②(webserver服務器網頁高級遙控版)

    ESP8266ESP32物聯網智能小車開發系列文章目錄第一篇:最簡單DIY基于ESP8266的物聯網智能小車①(webserver服務器網頁簡單遙控版)第二篇:最簡單DIY基于
    發表于 12-29 18:58 ?0次下載
    最簡單DIY基于<b class='flag-5'>ESP8266</b>的物聯網智能小車②(webserver<b class='flag-5'>服務器</b>網頁高級遙控版)

    通過使用ESP8266 NodeMCU Web服務器來控制的電子元件

    電子發燒友網站提供《通過使用ESP8266 NodeMCU Web服務器來控制的電子元件.zip》資料免費下載
    發表于 10-24 11:04 ?1次下載
    通過使用<b class='flag-5'>ESP8266</b> NodeMCU <b class='flag-5'>Web</b><b class='flag-5'>服務器</b>來控制的電子元件

    NodeMCU ESP8266啟用AJAX的Web服務器

    電子發燒友網站提供《NodeMCU ESP8266啟用AJAX的Web服務器.zip》資料免費下載
    發表于 11-22 09:37 ?1次下載
    NodeMCU <b class='flag-5'>ESP8266</b>啟用AJAX的<b class='flag-5'>Web</b><b class='flag-5'>服務器</b>

    基于ESP8266Web服務器

    項目將告訴你如何在不使用 Arduino 的情況下使用 ESP8266 構建 Web 服務器
    發表于 12-07 11:02 ?1次下載

    基于ESP8266實現串口服務器

    ESP8266工作在TCP服務器模式時,可以借助IOTGATEWAY很輕松地將傳統設備接入物聯網,實現多設備實時監控
    的頭像 發表于 05-17 15:55 ?3906次閱讀
    基于<b class='flag-5'>ESP8266</b>實現串口<b class='flag-5'>服務器</b>
    主站蜘蛛池模板: 性久久久久久久久 | 四虎在线观看免费永久 | 免费抓胸吻胸激烈视频网站 | 闲人综合 | 五月婷婷网址 | 天天看天天碰 | 欧美久久综合 | 人人草人 | 377p亚洲欧洲日本大胆色噜噜 | 婷婷亚洲综合五月天小说在线 | 免费人成网ww777kkk手机 | 精品三级三级三级三级三级 | 亚洲国产精品乱码一区二区三区 | 91黄视频在线观看 | 免费观看在线aa | av2014天堂网 | 五月四房婷婷 | 人人人人凹人人爽人人澡 | 9966国产精品视频 | 欧美精品网 | 成人理伦 | 三级高清| 天天透天天干 | 与子乱刺激对白在线播放 | 久久婷婷成人综合色 | 激情亚洲婷婷 | 免费啪视频观在线视频在线 | 黄色免费在线网址 | 久久久久久久蜜桃 | 色综合久久网女同蕾丝边 | 狠狠干狠狠操视频 | 日韩色天使综合色视频 | 国产人免费人成免费视频 | 亚洲qingse | 天天做天天爽爽快快 | 欧美洲视频在线观看 | 天天爆操 | 色偷偷成人网免费视频男人的天堂 | 欧美福利片在线观看 | 2018天天夜夜| 色域综合 |