RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

基于ESP32的簡易web服務(wù)器設(shè)計

jf_eqg0Ui2u ? 來源:懂事電子設(shè)計 ? 2023-01-05 10:49 ? 次閱讀

本文介紹一下如何使用ESP32快速方便的搭建一個簡易的web服務(wù)器。

45e7f236-8c42-11ed-bfe3-dac502259ad0.png

使用ESP32或ESP8266搭建web服務(wù)器的方式有很多,但是大多數(shù)都的web頁面代碼都是內(nèi)嵌在程序中的,這樣如果要修改web頁面就十分的不方便。今天介紹一種方法將web頁面的代碼以文件的形式上傳到存儲器中,然后在程序中直接利用文件搭建web服務(wù)器。 這里首先介紹一下SPIFFS。SPIFFS又叫SPI閃存文件系統(tǒng)。是一種小型嵌入式系統(tǒng)專用的文件系統(tǒng)。它支持用戶創(chuàng)建文件和目錄。

SPIFFS的主要特點: 專為微控制器上的低 RAM 使用場景而設(shè)計; 使用固定大小的 RAM 緩沖區(qū); Posix-like api:打開,關(guān)閉,讀取,寫入,搜索,統(tǒng)計等; POSIX:Portable Operating System Interface 可移植操作系統(tǒng)接口; 不僅僅是SPI閃存 (SPI Flash:Serial Peripheral interface 串行外圍設(shè)備接口, 串行通信接口的NOR FLASH),它可以在任何 非易失閃存(NOR Flash)上運行,多個 SPIFFS 配置可以在同一目標上運行甚至可以在同一個 SPI 閃存設(shè)備上運行; 實現(xiàn)靜態(tài)磨損均衡; 內(nèi)置的系統(tǒng)一致性檢查; 高度可配置,可適用于各種閃存類型。

使用Arduino進行ESP32開發(fā)時,開發(fā)套件中集成有SPIFFS可以直接使用。但是開發(fā)工具中不具有文件上傳功能,所以首先需要給ArduinoIDE添加SPIFFS文件上傳插件。 首先下載文件上傳工具,可以在下面的鏈接處下載,也可以在文末分享的鏈接處下載。 GitHub - me-no-dev/arduino-esp32fs-plugin: Arduino plugin for uploading files to ESP32 file system
461469ec-8c42-11ed-bfe3-dac502259ad0.png
將所下載的文件“esp32fs.jar”放置到Arduino安裝目錄下的工具文件夾中。如F:arduino-1.8.19 oolsESP32FS ool。然后重啟Arduino IDE。
462f1b5c-8c42-11ed-bfe3-dac502259ad0.png
重啟Arduino IDE后在工具菜單下就可以看到“ESP32 Sketch Data Upload”選項,通過該選項就可以將工程目錄下data文件夾中的文件上傳到ESP32的文件存儲系統(tǒng)中。上傳過程中一定要關(guān)閉ESP32的串口監(jiān)視器窗口,否則會導(dǎo)致上傳失敗。

464cb144-8c42-11ed-bfe3-dac502259ad0.png

文件上傳工具安裝完成后,接下來需要安裝異步web服務(wù)器庫。主要包括ESPAsyncWebServer和AsyncTCP兩個庫。通過這兩個庫可以實現(xiàn)簡單的異步web服務(wù)器的搭建。 異步web服務(wù)器有以下優(yōu)點: 使用異步意味著服務(wù)器可以同時處理來自客戶端的多個連接; 一旦請求準備好并被解析,您就會被調(diào)用; 當您發(fā)送響應(yīng)時,您可以立即準備好處理其他連接,而服務(wù)器會在后臺處理發(fā)送響應(yīng) 速度很快; 易于使用的 API、HTTP Basic 和 Digest MD5 身份驗證(默認)、ChunkedResponse; 易于擴展以處理任何類型的內(nèi)容; 支持繼續(xù) 100; 異步 WebSocket 插件提供不同的位置,無需額外的服務(wù)器或端口; Async EventSource (Server-Sent Events) 插件向瀏覽器發(fā)送事件; 用于條件和永久 URL 重寫的 URL 重寫插件; 支持緩存、Last-Modified、默認索引等的 ServeStatic 插件; 處理模板的簡單模板處理引擎; 兩個庫的下載地址如下:

ESPAsyncWebServer

https://github.com/me-no-dev/ESPAsyncWebServer

AsyncTCP

https://github.com/me-no-dev/AsyncTCP

兩個庫安裝完成后就可以開始創(chuàng)建web頁面了。web前端頁面的開發(fā)工具有很多,自行選擇一種喜歡的方式就可以了。編寫一個簡單的web頁面。



  
    
    
    懂事<a href="https://www.hqchip.com/ask/" target="_blank"><u>電子</u></a>設(shè)計
  
  
    

懂事電子設(shè)計

這是一個測試網(wǎng)頁

Pulpit rock

466a7ea4-8c42-11ed-bfe3-dac502259ad0.png

使用Arduino IDE創(chuàng)建ESP32工程。在工程下創(chuàng)建data文件夾,并將創(chuàng)建的HTML程序文件放到data文件夾內(nèi)。然后依次點擊”工具”->”ESP32 Sketch Data Upload”將WEB程序文件上傳到ESP32存儲器中。

468ad3d4-8c42-11ed-bfe3-dac502259ad0.png

修改程序中的WIFI信息,點擊上傳到ESP32即可。

#include 
#include 
#include "ESPAsyncWebServer.h"
AsyncWebServer server(80);
//連接WIFI
void connect_wifi(){
  const char* wifi_ssid = "***";
  const char* wifi_password = "********";
  Serial.begin(115200);
  WiFi.begin(wifi_ssid, wifi_password);         //連接WIFI
  Serial.print("Connected");
  //循環(huán),直到連接成功
  while(WiFi.status() != WL_CONNECTED){
    Serial.print(".");
    delay(500);
  }
  Serial.println();
  IPAddress local_IP = WiFi.localIP();
  Serial.print("WIFI is connected,The local IP address is "); //連接成功提示
  Serial.println(local_IP); 
}


void web_server(){
 if(!SPIFFS.begin(true)){
    Serial.println("An Error has occurred while mounting SPIFFS");
    return;
  }
  server.serveStatic("/", SPIFFS, "/").setDefaultFile("index.html");
  server.begin();                       //初始化
}


void setup() {
  connect_wifi();
  web_server();
}
 
void loop() {


}

46a05aa6-8c42-11ed-bfe3-dac502259ad0.png

上傳完成后可以打開串口監(jiān)視窗口,等ESP32完成網(wǎng)絡(luò)連接后會輸出對應(yīng)的IP地址。使用同一網(wǎng)絡(luò)下的PC或手機的瀏覽器訪問該IP即可進入到web頁面。

需要對web頁面進行修改時,只需將對應(yīng)的.html程序文件修改后重新上傳即可,可以最大程度的簡化復(fù)雜度。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Web
    Web
    +關(guān)注

    關(guān)注

    2

    文章

    1262

    瀏覽量

    69440
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    9123

    瀏覽量

    85322
  • ESP32
    +關(guān)注

    關(guān)注

    18

    文章

    971

    瀏覽量

    17201

原文標題:基于ESP32的簡易web服務(wù)器

文章出處:【微信號:懂事電子設(shè)計,微信公眾號:懂事電子設(shè)計】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    【FireBeetle ESP32-E開發(fā)板免費試用】+wifi功能測試&搭建web服務(wù)器

    本帖最后由 dql2016 于 2021-9-15 21:11 編輯 ESP32具有wifi功能,可作為AP使用。本帖利用esp32的wifi功能搭建一個簡單的web服務(wù)器實現(xiàn)傳
    發(fā)表于 09-14 21:51

    使用rt-thread studio創(chuàng)建esp32 web服務(wù)器

    1、使用rt-thread studio創(chuàng)建esp32 web服務(wù)器  實驗步驟:  ESP32-Ethernet-Kit_A_V1.1 評估板板載
    發(fā)表于 09-29 14:38

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

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

    ESP32 Web服務(wù)器可以向外部Rest API發(fā)起HTTP請求嗎?

    -IDF 服務(wù)器 API 也可以發(fā)起/發(fā)出請求?3)傳入和傳出請求的流量是否由同一個端口處理(出于端口轉(zhuǎn)發(fā)的原因)?舉個例子,考慮一下自動化中使用的 ESP32,它有自己的 WEB UI,可以向 Shelly 產(chǎn)品輪詢傳感
    發(fā)表于 03-01 06:22

    ESP8266可作為Web服務(wù)器嗎?怎么實現(xiàn)?

    ESP8266可作為Web服務(wù)器嗎怎么實現(xiàn)
    發(fā)表于 10-24 08:17

    帶有BME280的ESP32 Web服務(wù)器的高級氣象站

    介紹一款帶有BME280的ESP32 Web服務(wù)器的高級氣象站。
    發(fā)表于 03-17 11:15 ?18次下載
    帶有BME280的<b class='flag-5'>ESP32</b> <b class='flag-5'>Web</b><b class='flag-5'>服務(wù)器</b>的高級氣象站

    使用ESP32-CAM板訪問網(wǎng)絡(luò)

    在這個項目中,我們將使用ESP32-CAM板。 ESP32相機將托管視頻流Web服務(wù)器您可以使用網(wǎng)絡(luò)中的任何設(shè)備進行訪問。
    發(fā)表于 04-06 11:45 ?43次下載
    使用<b class='flag-5'>ESP32</b>-CAM板訪問網(wǎng)絡(luò)

    如何使用ESP8266制作可配置的Web服務(wù)器

    在這個項目中,我們首先研究如何在 Arduino IDE 中安裝 ESP8266 插件,然后使用 ESP8266 制作可配置的 Web 服務(wù)器。
    的頭像 發(fā)表于 05-10 15:18 ?1.3w次閱讀
    如何使用<b class='flag-5'>ESP</b>8266制作可配置的<b class='flag-5'>Web</b><b class='flag-5'>服務(wù)器</b>

    ESP32 CAM WEB服務(wù)器及入門指南

    電子發(fā)燒友網(wǎng)站提供《ESP32 CAM WEB服務(wù)器及入門指南.zip》資料免費下載
    發(fā)表于 11-17 10:44 ?0次下載
    <b class='flag-5'>ESP32</b> CAM <b class='flag-5'>WEB</b><b class='flag-5'>服務(wù)器</b>及入門指南

    NodeMCU ESP8266啟用AJAX的Web服務(wù)器

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

    ESP32制作網(wǎng)絡(luò)服務(wù)器

    電子發(fā)燒友網(wǎng)站提供《用ESP32制作網(wǎng)絡(luò)服務(wù)器.zip》資料免費下載
    發(fā)表于 11-25 11:53 ?0次下載
    用<b class='flag-5'>ESP32</b>制作網(wǎng)絡(luò)<b class='flag-5'>服務(wù)器</b>

    基于ESP8266的Web服務(wù)器

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

    使用基于ESP32Web服務(wù)器的互聯(lián)網(wǎng)控制LED

    電子發(fā)燒友網(wǎng)站提供《使用基于ESP32Web服務(wù)器的互聯(lián)網(wǎng)控制LED.zip》資料免費下載
    發(fā)表于 12-20 10:09 ?2次下載
    使用基于<b class='flag-5'>ESP32</b>的<b class='flag-5'>Web</b><b class='flag-5'>服務(wù)器</b>的互聯(lián)網(wǎng)控制LED

    ESP32 IDF創(chuàng)建WEB SERVER的流程

    ESP-IDF中,Web服務(wù)器使用httpd組件實現(xiàn)。我們需要先創(chuàng)建httpd_config_t結(jié)構(gòu)體,指定服務(wù)器的端口、最大并發(fā)連接數(shù)、URI匹配處理
    的頭像 發(fā)表于 03-13 15:36 ?4217次閱讀
    <b class='flag-5'>ESP32</b> IDF創(chuàng)建<b class='flag-5'>WEB</b> SERVER的流程

    使用ESP32 Web服務(wù)器進行家庭自動化設(shè)置

    電子發(fā)燒友網(wǎng)站提供《使用ESP32 Web服務(wù)器進行家庭自動化設(shè)置.zip》資料免費下載
    發(fā)表于 07-03 10:49 ?0次下載
    使用<b class='flag-5'>ESP32</b> <b class='flag-5'>Web</b><b class='flag-5'>服務(wù)器</b>進行家庭自動化設(shè)置
    RM新时代网站-首页