驴友花雕 发表于 2025-1-12 17:13:39

【花雕学编程】Arduino动手做(246)---ESP8266 的 HTTP服务器




驴友花雕 发表于 2025-1-12 17:17:34

【花雕学编程】Arduino动手做(246)---ESP8266的HTTP服务器




驴友花雕 发表于 2025-1-12 17:53:34

【花雕学编程】Arduino动手做(246)---ESP8266的HTTP服务器

本帖最后由 驴友花雕 于 2025-1-14 19:48 编辑

【花雕学编程】239种传感器执行器系列实验(资料代码+仿真编程+图形编程)
   实验二百四十六:ESP8266串口wifi模块 NodeMCU Lua V3物联网开发板 CH340
   实验项目之九:设置ESP8266 V3开发板使用WiFi的简单HTTP服务器

实验开源代码

/*
【花雕学编程】239种传感器执行器系列实验(资料代码+仿真编程+图形编程)
   实验二百四十六:ESP8266串口wifi模块 NodeMCU Lua V3物联网开发板 CH340
   实验项目之九:设置ESP8266 V3开发板使用WiFi的简单HTTP服务器
*/

#include <ESP8266WiFi.h> // 包含ESP8266WiFi库,用于WiFi连接
#include <ESP8266WebServer.h> // 包含服务器库,用于创建Web服务器的支持

// 替换为您的网络凭据
const char* ssid = "zhz3";
const char* password = "z156721";

// 创建 ESP8266WebServer 对象,监听 80 端口
ESP8266WebServer server(80); // 确保使用正确的类名 'ESP8266WebServer'

// 处理根 URL 请求的函数
void handleRoot() {
String message = "<html><body>";
message += "<h1>Hello from ESP8266!</h1>";
message += "<p>IP Address: ";
message += WiFi.localIP().toString(); // 添加设备的本地IP地址
message += "</p></body></html>";
server.send(200, "text/html", message); // 确保使用变量 'server'
}

// 处理额外页面请求的函数
void handlePage() {
server.send(200, "text/html", "<html><body>This is an additional page.</body></html>"); // 确保使用变量 'server'
}

void setup() {
Serial.begin(115200); // 初始化串口,以115200波特率
Serial.println(""); // 打印空行以隔开输出
Serial.println("");
Serial.println("ESP8266 V3 准备就绪!"); // 打印初始化成功信息

// 连接到 WiFi 网络
WiFi.begin(ssid, password); // 开始尝试连接到WiFi网络
Serial.print("连接到WiFi");
int attempts = 0;
while (WiFi.status() != WL_CONNECTED && attempts < 20) {
    delay(500); // 每隔500毫秒检查一次连接状态
    Serial.print("..."); // 打印连接进度
    attempts++;
}
if (WiFi.status() == WL_CONNECTED) {
    Serial.println("\n已连接到WiFi"); // 打印连接成功信息
    Serial.print("IP地址: ");
    Serial.println(WiFi.localIP()); // 打印设备的本地IP地址
} else {
    Serial.println("\nFailed to connect to WiFi"); // 打印连接失败信息
    return; // 停止继续执行setup函数
}

// 定义根 URL 处理程序
server.on("/", handleRoot); // 确保使用变量 'server'

// 定义额外页面的路由处理程序
server.on("/page", HTTP_GET, handlePage); // 确保使用变量 'server'

// 启动服务器
server.begin(); // 确保使用变量 'server'
Serial.println("ESP8266 V3的HTTP服务器已启动"); // 打印服务器启动信息
}

void loop() {
// 处理任何收到的请求
server.handleClient(); // 确保使用变量 'server'
}

驴友花雕 发表于 2025-1-12 17:58:38

【花雕学编程】Arduino动手做(246)---ESP8266的HTTP服务器

本帖最后由 驴友花雕 于 2025-1-14 19:48 编辑

代码解读:

1、包含库:

#include <ESP8266WiFi.h>:引入ESP8266WiFi库,支持ESP8266的WiFi功能。

#include <ESP8266WebServer.h>:引入ESP8266WebServer库,支持创建Web服务器。

2、网络凭据:

const char* ssid = "zhz3";:设置WiFi网络的SSID。

const char* password = "z156721";:设置WiFi网络的密码。

3、创建Web服务器对象:

ESP8266WebServer server(80);:创建一个Web服务器对象,监听80端口(HTTP默认端口)。

4、处理根 URL 请求:

void handleRoot():定义一个函数,用于处理对根路径(/)的请求。

函数中创建一个包含HTML内容的字符串消息,并使用server.send函数发送HTTP响应,状态码为200,内容类型为"text/html"。

5、处理额外页面请求:

void handlePage():定义一个函数,用于处理对/page路径的请求。

函数中创建一个简单的HTML消息,并使用server.send函数发送HTTP响应。

6、初始化设置(setup函数):

Serial.begin(115200);:设置串口通讯速度为115200波特率。

WiFi.begin(ssid, password);:开始尝试连接到WiFi网络。

检查WiFi连接状态,最多尝试20次(每次延迟500毫秒)。如果连接成功,打印本地IP地址;否则,打印连接失败信息。

设置根路径和额外页面的处理程序。

启动Web服务器。

7、主循环(loop函数):

server.handleClient();:处理客户端请求。

这个程序将在ESP8266连接到指定的WiFi网络后,创建一个简单的Web服务器。当用户在浏览器中访问设备的IP地址时,会看到一个包含设备本地IP地址的网页。

驴友花雕 发表于 2025-1-12 18:47:28

【花雕学编程】Arduino动手做(246)---ESP8266的HTTP服务器

在PC端打开浏览器,输入IP地址:192.168.28.40


驴友花雕 发表于 2025-1-12 19:07:57

【花雕学编程】Arduino动手做(246)---ESP8266的HTTP服务器

在手机端打开浏览器,输入IP地址:192.168.28.40


驴友花雕 发表于 2025-1-12 19:12:12

【花雕学编程】Arduino动手做(246)---ESP8266的HTTP服务器


驴友花雕 发表于 2025-1-14 11:57:21

【花雕学编程】Arduino动手做(246)---ESP8266的HTTP服务器

实验串口返回情况


页: [1]
查看完整版本: 【花雕学编程】Arduino动手做(246)---ESP8266 的 HTTP服务器