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

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

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

怎樣用ESP32創(chuàng)建一個(gè)Web服務(wù)器 并將其連接到Wi-Fi獲取IP地址

454398 ? 來(lái)源:工程師吳畏 ? 2019-07-26 09:15 ? 次閱讀

入門(mén)

客戶(hù)端與客戶(hù)端之間的連接webserver是使用HTTP協(xié)議建立的。 HTTP協(xié)議如下所示:HTTP/1.1 200 OK r nContent-Type:text/html r n r n“。

”HTTP/1.1 200 OK“表示服務(wù)器已接受請(qǐng)求并已回復(fù)“200 OK”,這是狀態(tài)代碼,后跟“ r n”,這是HTTP協(xié)議的約束。

“Content-Type:text/html r n“表示響應(yīng)內(nèi)容類(lèi)型為HTML格式,后跟” r n“

在HTTP協(xié)議結(jié)束時(shí),網(wǎng)絡(luò)服務(wù)器將返回顯示”Hello world“的網(wǎng)頁(yè)。

代碼

#include

const char* wifi_name = “Tenda_31BC98”; //Your Wifi name

const char* wifi_pass = “barcelona”; //Your Wifi password

WiFiServer server(80); //Port 80

void setup()

{

Serial.begin(115200);

// Let‘s connect to wifi network

Serial.print(“Connecting to ”);

Serial.print(wifi_name);

WiFi.begin(wifi_name, wifi_pass); //Connecting to wifi network

while (WiFi.status() != WL_CONNECTED) { //Waiting for the responce of wifi network

delay(500);

Serial.print(“?!保?

}

Serial.println(“”);

Serial.println(“Connection Successful”);

Serial.print(“IP address: ”);

Serial.println(WiFi.localIP()); //Getting the IP address at which our webserver will be created

Serial.println(“Put the above IP address into a browser search bar”);

server.begin(); //Starting the server

}

void loop()

{

WiFiClient client = server.available(); //Checking for incoming clients

if (client)

{

Serial.println(“new client”);

String currentLine = “”; //Storing the incoming data in the string

while (client.connected())

{

if (client.available()) //if there is some client data available

{

char c = client.read(); //read a byte

Serial.print(c);

if (c == ’ ‘) //check for newline character,

{

if (currentLine.length() == 0) //if line is blank it means its the end of the client HTTP request

{

client.print(“”);

client.print(“

Hello World

”);

break; //Going out of the while loop

}

else

{

currentLine = “”; //if you got a newline, then clear currentLine

}

}

else if (c != ’ ‘)

{

currentLine += c; //if you got anything else but a carriage return character,

}

}

}

}

delay(2000);

}

代碼說(shuō)明

首先,我們加入了Wi-Fi庫(kù),它將幫助我們創(chuàng)建網(wǎng)絡(luò)服務(wù)器。然后我們存儲(chǔ)了Wi-Fi名稱(chēng)和密碼,以便我們可以連接到這個(gè)Wi-Fi網(wǎng)絡(luò)。之后,我們定義了我們要將數(shù)據(jù)發(fā)送到的端口。

const char* wifi_name = “Tenda_31BC98”; //Your Wifi name

const char* wifi_pass = “barcelona”; //Your Wifi password

WiFiServer server(80); //Port 80

在setu中p功能,我們使用上面提供的Wi-Fi信息ESP32連接到我們的Wi-Fi網(wǎng)絡(luò)。如果與Wi-Fi網(wǎng)絡(luò)的連接成功,則“連接成功”將顯示在串行監(jiān)視器上。否則,它將繼續(xù)嘗試,直到它將連接到Wi-Fi網(wǎng)絡(luò)。

Serial.print(“Connecting to ”);

Serial.print(wifi_name);

WiFi.begin(wifi_name, wifi_pass); //Connecting to wifi network

while (WiFi.status() != WL_CONNECTED) { //Waiting for the responce of wifi network

delay(500);

Serial.print(“。”);

}

Serial.println(“”);

Serial.println(“Connection Successful”);

以下命令將獲取IP地址,我們將在串行監(jiān)視器上顯示它。

Serial.println(WiFi.localIP());

然后我們啟動(dòng)了服務(wù)器,以便我們可以獲取數(shù)據(jù)并將數(shù)據(jù)發(fā)送到瀏覽器。

server.begin( );

在循環(huán)函數(shù)中,我們檢查了是否有客戶(hù)端發(fā)送了http請(qǐng)求。如果有任何客戶(hù)端請(qǐng)求可用,它將存儲(chǔ)在字符中并顯示在串行監(jiān)視器上。在請(qǐng)求結(jié)束時(shí),我們將發(fā)送HTML命令,它將在網(wǎng)頁(yè)上打印“Hello world”。

WiFiClient client = server.available(); //Checking for incoming clients

if (client)

{

Serial.println(“new client”);

String currentLine = “”; //Storing the incoming data in the string

while (client.connected())

{

if (client.available()) //if there is some client data available

{

char c = client.read(); //read a byte

Serial.print(c);

if (c == ’ ‘) //check for newline character,

{

if (currentLine.length() == 0) //if line is blank it means it’s the end of the client HTTP request

{

client.print(“

”);

client.print(“

Hello World

”);

break; //Going out of the while loop

}

如何運(yùn)行代碼

使用您的Wi-Fi名稱(chēng)和密碼更改代碼中的Wi-Fi名稱(chēng)和密碼。然后上傳代碼并打開(kāi)串行監(jiān)視器。串行監(jiān)視器將顯示IP地址,如下圖所示。在瀏覽器中輸入此IP地址。

輸入IP地址后,網(wǎng)頁(yè)將如下所示。

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

    關(guān)注

    0

    文章

    137

    瀏覽量

    24356
  • ESP32
    +關(guān)注

    關(guān)注

    17

    文章

    951

    瀏覽量

    16992
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于ESP32-C3FN4為核心自主研發(fā)的Wi-Fi+BT模塊-RF-WM-ESP32B1

    WI-FI模組 - RF-WM-ESP32B1是基于ESP32-C3FN4為核心自主研發(fā)的Wi-Fi+BT模塊,支持IEEE 802.11b/g/n (2.4 GHz
    的頭像 發(fā)表于 11-07 09:45 ?94次閱讀
    基于<b class='flag-5'>ESP32</b>-C3FN4為核心自主研發(fā)的<b class='flag-5'>Wi-Fi</b>+BT模塊-RF-WM-<b class='flag-5'>ESP32</b>B1

    【AI技術(shù)支持】ESP32無(wú)線(xiàn)Wi-Fi常用調(diào)試API

    Wi-Fi常用調(diào)試API在使用esp32調(diào)試Wi-Fi功能時(shí),由于場(chǎng)景和各種因素的影響,難免會(huì)遇到各種連接不上,Wi-Fi斷連等問(wèn)題。下面介
    的頭像 發(fā)表于 10-26 08:00 ?157次閱讀
    【AI技術(shù)支持】<b class='flag-5'>ESP32</b>無(wú)線(xiàn)<b class='flag-5'>Wi-Fi</b>常用調(diào)試API

    esp8266和esp32區(qū)別是什么

    以下是關(guān)于ESP8266和ESP32的主要區(qū)別: 處理和架構(gòu) : ESP8266 :使用個(gè)T
    的頭像 發(fā)表于 08-19 18:16 ?3792次閱讀

    IR900 Wi-Fi聯(lián)網(wǎng)的配置過(guò)程

    ”接口選擇Wi-Fi接口: dot11radio1類(lèi)型選擇:動(dòng)態(tài)地址( DHCP) 如果Wi-Fi路由沒(méi)有開(kāi)DHCP,請(qǐng)選擇類(lèi)型:靜
    發(fā)表于 07-25 06:09

    ESP8266如何為應(yīng)用程序選擇正確的Wi-Fi模塊嗎?

    連接 4 個(gè)站點(diǎn) - 接入點(diǎn)/軟AP同時(shí)具有站點(diǎn)模式(使主機(jī)能夠在網(wǎng)絡(luò)上充當(dāng)站點(diǎn)) - Zeroconf DNS服務(wù)發(fā)現(xiàn) - 次打開(kāi)4個(gè)T
    發(fā)表于 07-19 16:56

    如何將多個(gè)ESP連接到個(gè)ESP并向服務(wù)器發(fā)送數(shù)據(jù)?

    。 該站模式 ESP 連接了傳感。所有這些站模式 esp 收集傳感數(shù)據(jù)并將數(shù)據(jù)發(fā)送到主
    發(fā)表于 07-19 06:49

    AT 0.60.0.0看不到我的Wi-Fi網(wǎng)絡(luò),為什么?

    Wi-Fi 網(wǎng)絡(luò)并連接到它。當(dāng)然,我的路由AP SSID已啟用,我可以在其他設(shè)備上看到此網(wǎng)絡(luò)。這不是什么大問(wèn)題,但我認(rèn)為它仍然是個(gè)錯(cuò)誤
    發(fā)表于 07-18 08:31

    如何記住ESP8266中的Wi-Fi憑據(jù)?

    您好,我正在與ESP8266合作,在公司進(jìn)行個(gè)項(xiàng)目。在成功智能配置后,我無(wú)法記住 Wi-Fi 憑據(jù)。ESP8266軟件版本如下: 在GMR
    發(fā)表于 07-15 07:07

    為什么ESP8266沒(méi)有檢測(cè)到Wi-Fi的SSID?

    你好,我的ESP8266沒(méi)有檢測(cè)到我家Wi-Fi的SSID。我嘗試打開(kāi)我的 iPhone 熱點(diǎn),我可以正常查看和連接(我也成功連接到 MQTT)。相反,沒(méi)有辦法看到我家的
    發(fā)表于 07-09 06:44

    ESP826如何運(yùn)行AP TCP服務(wù)器

    應(yīng)該從平板電腦客戶(hù)端獲取命令進(jìn)行進(jìn)步處理。不涉及額外的路由。 現(xiàn)在,AP工作正常,平板電腦可以登錄WLAN并獲得正確的IP地址。但是客戶(hù)
    發(fā)表于 07-09 06:27

    使用的是esp32官方的Wi-Fi例程,一直連接不上Wi-Fi怎么解決?

    使用的是esp32官方的Wi-Fi例程 一直連接不上Wi-Fi 日志: ESP-ROM:esp8
    發(fā)表于 07-02 07:21

    ESP32-S2如何找到send函數(shù)的底層接口函數(shù)?

    你好,我正在用ESP32-S2做一個(gè)項(xiàng)目,當(dāng)有Wi-Fi時(shí),通過(guò)Wi-Fi連接服務(wù)器;當(dāng)沒(méi)
    發(fā)表于 06-28 08:18

    請(qǐng)問(wèn)ESP32-AT支持Wi-Fi漫游指令嗎?

    請(qǐng)問(wèn) ESP32-AT 支持 Wi-Fi 漫游指令嗎?我這邊在 ESP-IDF 下面看到有 roaming 的示例,但是在 esp-at 中沒(méi)有找到相關(guān)指令。
    發(fā)表于 06-27 07:13

    使用ESP32-C3的SoftAP模式創(chuàng)建Wi-Fi熱點(diǎn),ESP32-C3不輸出任何日志,并且無(wú)法響應(yīng),為什么?

    問(wèn)題描述: 我正在使用ESP32-C3的SoftAP模式創(chuàng)建Wi-Fi熱點(diǎn),并使用手機(jī)連接到該熱點(diǎn)。當(dāng)手機(jī)連接成功并熄屏
    發(fā)表于 06-07 08:26

    Wi-Fi HaLow和傳統(tǒng)Wi-Fi的區(qū)別

    Wi-Fi HaLow和傳統(tǒng)Wi-Fi的區(qū)別? Wi-Fi種無(wú)線(xiàn)網(wǎng)絡(luò)技術(shù),可以連接到互聯(lián)網(wǎng)或局域網(wǎng),為用戶(hù)提供無(wú)線(xiàn)上網(wǎng)的便利。隨著科技的
    的頭像 發(fā)表于 02-02 15:28 ?1049次閱讀