#include <Arduino.h>
#include <WebServer.h>
#define LED_PIN 2 // GPIO 2 连接 LED
// put function declarations here:
// 设置Wi-Fi热点的名称和密码
const char* ssid = “ESP32_Hotspot”;
const char* password = “12345678”;
// 创建Web服务器对象,监听80端口
WebServer server(80);
// 根目录的处理函数
void handleRoot() {
// 获取客户端IP地址
IPAddress clientIP = server.client().remoteIP();
// 打印客户端的IP地址
Serial.print(“客户端IP地址: “);
Serial.println(clientIP);
String html = “<html><head><meta charset=\”UTF-8\”></head><body><h1>欢迎来到 ESP32 热点</h1>”;
html += “<p>这是一个简单的 ESP32 热点网页服务器。</p>”;
html += “<p><a href=\”/led/on\”><button>打开 LED</button></a></p>”;
html += “<p><a href=\”/led/off\”><button>关闭 LED</button></a></p>”;
html += “</body></html>”;
server.send(200, “text/html”, html);
}
// 检查Wi-Fi客户端的连接状态
void checkClientConnection() {
if (WiFi.softAPgetStationNum() > 0) {
// 如果有设备连接到ESP32热点,点亮LED
digitalWrite(LED_PIN, HIGH);
} else {
// 如果没有设备连接,熄灭LED
digitalWrite(LED_PIN, LOW);
}
}
void setup() {
// 启动串口
Serial.begin(9600);
// 设置ESP32为热点模式
WiFi.softAP(ssid, password); // 启动ESP32热点
// 打印热点的IP地址
Serial.println(“ESP32 Hotspot started”);
Serial.print(“IP Address: “);
Serial.println(WiFi.softAPIP()); // 打印ESP32的热点IP地址
pinMode(LED_PIN,OUTPUT);
digitalWrite(LED_PIN, LOW);
// 设置根目录请求的处理函数
server.on(“/”, handleRoot);
// 启动Web服务器
server.begin();
}
void loop() {
server.handleClient(); // 处理客户端请求
// 检查客户端连接状态
checkClientConnection();
}