回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

【花雕学编程】Arduino动手做(246)---ESP8266 Web 服务器:通过JSON响应客户端请求 简单

头像 驴友花雕 2025.01.16 9 0

14.jpg
23.jpg

10-.jpg
19.jpg

  【花雕学编程】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的响应结果。

实验串口返回情况

 

59.jpg

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

 

59-1.jpg

手机端打开浏览器,在电脑端串口上会收到提示消息

 

59-.jpg

35.jpg

评论

user-avatar
icon 他的勋章
    展开更多