【花雕学编程】239种传感器执行器系列实验(资料代码+仿真编程+图形编程)
实验二百四十六:ESP8266串口wifi模块 NodeMCU Lua V3物联网开发板 CH340
实验项目之十五:ESP8266 Web服务器:通过JSON响应客户端请求
实验开源代码
/*
【花雕学编程】239种传感器执行器系列实验(资料代码+仿真编程+图形编程)
实验二百四十六:ESP8266串口wifi模块 NodeMCU Lua V3物联网开发板 CH340
实验项目之十五:ESP8266 Web服务器:通过JSON响应客户端请求
*/
#include <ESP8266WiFi.h> // 包含ESP8266WiFi库,用于WiFi连接
#include <ESP8266WebServer.h> // 包含ESP8266WebServer库,用于创建Web服务器
#include <ArduinoJson.h> // 包含ArduinoJson库,用于处理JSON数据
/********** 请修改以下内容 *************************/
const char* ssid = "zhz3"; // 设置Wi-Fi名称
const char* password = "z156721"; // 设置Wi-Fi密码
ESP8266WebServer server(80); // 创建一个Web服务器对象,监听80端口
void setup() {
Serial.begin(115200); // 初始化串口通信,波特率为115200
WiFi.begin(ssid, password); // 连接到指定的Wi-Fi网络
// 等待Wi-Fi连接成功
while (WiFi.status() != WL_CONNECTED) {
delay(500); // 每隔500毫秒检查一次连接状态
Serial.print("."); // 打印连接进度
}
Serial.println("Connected to WiFi"); // 打印连接成功信息
Serial.print("IP Address: "); // 打印IP地址
Serial.println(WiFi.localIP());
server.on("/", handleRoot); // 设置根路径的处理函数
server.begin(); // 启动服务器
Serial.println("HTTP server started"); // 打印服务器启动信息
}
void loop() {
server.handleClient(); // 处理客户端请求
}
void handleRoot() {
Serial.println("Client connected to /"); // 调试信息:有客户端连接到根路径
StaticJsonDocument<200> doc; // 创建一个静态JSON文档对象
doc["message"] = "欢迎来到ESP8266 Web服务器!"; // 向JSON文档添加一个键值对
String response;
serializeJson(doc, response); // 将JSON对象序列化为字符串
server.send(200, "application/json", response); // 发送JSON响应
}
代码解读:
1、包含库:
#include <ESP8266WiFi.h>:包含ESP8266WiFi库,用于WiFi连接功能。
#include <ESP8266WebServer.h>:包含ESP8266WebServer库,用于创建Web服务器。
#include <ArduinoJson.h>:包含ArduinoJson库,用于处理JSON数据。
2、定义Wi-Fi网络凭据:
const char* ssid = "zhz3";:定义要连接的WiFi网络的SSID(名称)。
const char* password = "zy156721";:定义要连接的WiFi网络的密码。
3、创建Web服务器对象:
ESP8266WebServer server(80);:创建一个ESP8266WebServer对象,监听80端口。
4、初始化设置(setup函数):
Serial.begin(115200);:初始化串口通信,设置波特率为115200。
WiFi.begin(ssid, password);:开始连接到指定的WiFi网络。
使用while (WiFi.status() != WL_CONNECTED)循环等待WiFi连接成功,并每隔500毫秒打印一次连接进度。
Serial.print("IP Address: ");:打印设备的IP地址。
server.on("/", handleRoot);:设置处理根路径的处理函数handleRoot。
server.begin();:启动Web服务器。
Serial.println("HTTP server started");:打印服务器启动信息。
5、主循环(loop函数):
server.handleClient();:处理客户端请求。
6、处理根路径请求的函数(handleRoot函数):
Serial.println("Client connected to /");:打印调试信息,表示有客户端连接到根路径。
创建一个静态JSON文档对象StaticJsonDocument<200> doc;。
向JSON文档添加一个键值对doc["message"] = "欢迎来到ESP8266 Web服务器!";。
将JSON对象序列化为字符串serializeJson(doc, response);。
发送JSON响应server.send(200, "application/json", response);,状态码为200,内容类型为application/json。
这段代码会使ESP8266连接到指定的WiFi网络,并启动一个简单的Web服务器。当客户端访问根路径(/)时,服务器会返回一个包含欢迎信息的JSON响应。这样可以方便地在浏览器中测试和查看ESP8266的响应结果。
实验串口返回情况
在手机端打开浏览器,输入IP地址:192.168.28.40
手机端打开浏览器,在电脑端串口上会收到提示消息
评论