醬是創客的ESP32教學主題第六篇,以Ai-Thinker安信可NodeMCU-32S(使用Arduino語言)來實作教學,本篇教學將著重於建立Web Server做一個HTML客製化網頁頁面,讓Wifi用戶連入修改資料,用戶透過WiFi連到ESP32,本篇以簡易的HTML的輸入框和Submit按鈕,並透過get的方式跳轉設定參數到ESP32上
以下是我們今天的目標
- ESP32開發板連線至無線網路基地台iot/chosemaker
- 使用WebServer.h函數
- HTML的基本用法
- 網址 IP/uid 為設定User ID區域,並拉一個輸入框和Submit按鈕,並跳轉至/setuid
- 如何取得get的User ID值
Arduino 範例程式碼如下
//醬是創客 開發實作的好夥伴
#include "WiFi.h"
#include <WebServer.h>
//輸入你的SSID/password
String write_ssid = "iot";
String write_password = "chosemaker";
int statusCode;
String content;
String room_id = "";
//宣告webserver
WebServer server(80);
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, passphrase);
if (testWifi()) {
Serial.println("WiFi connected OK");
Serial.print("Local IP: ");
Serial.println(WiFi.localIP());
//設定webserver
createWebServer();
server.begin();
Serial.println("Server started");
}
else {
Serial.println("WiFi connected NG");
}
}
void loop() {
//handleClient要放在loop
server.handleClient();
}
bool testWifi(void) {
int c = 0;
Serial.println("Waiting for Wifi to connect");
while ( c < 20 ) {
if (WiFi.status() == WL_CONNECTED) { return true; }
delay(500);
Serial.print(WiFi.status());
c++;
}
return false;
}
void createWebServer()
{
server.on("/uid", []() {
content = "<!DOCTYPE HTML>\r\n<html>";
content += "<p>";
content += "<ol>";
content += room_id;
content += "</ol>";
content += "</p><form method='get' action='setuid'><label>UID</label><input name='uid' length=64><input type='submit'></form>";
content += "</html>";
server.send(200, "text/html", content);
});
server.on("/setuid", []() {
room_id = server.arg("uid");
if (room_id.length() > 0) {
Serial.println("html uid:");
Serial.println(room_id);
content = "{\"Success\"}";
statusCode = 200;
} else {
content = "{\"Error\":\"404 not found\"}";
statusCode = 404;
Serial.println("Sending 404");
}
server.send(statusCode, "application/json", content);
});
}
瀏覽器 輸出如下,首先我們知道IP為192.168.2.105,請先打192.168.2.105/uid,並輸入chosemaker按提交,之後再refresh 192.168.2.105/uid網頁一次,就可以出現你的輸入值

Arduino 序列埠監控視窗 輸出如下
Waiting for Wifi to connect 03WiFi connected OK Local IP: 192.168.2.105 Server started html uid: chosemaker
