前言
学习如何在 ESP32 开发板运行的 Arduino 核心上配置异步 HTTP Web 服务器。
在学习配置服务器前,因为在下面会涉及到 wifi 方面,所以请先看这篇文章 Arduino: 在 ESP32 上使用 WIFI
操作环境
测试使用的开发板: BPI-UNO32
测试使用的软件:Arduino IDE 1.8.9
库
为了设置网络服务器,需要安装两个库
-
ESPAsyncWebServer 该库允许设置异步 HTTP(和Websocket)服务器,这意味着它可以同时处理多个连接
-
AsyncTCP 该库是 ESP32 开发板的异步 TCP 库,它是 ESPAsyncWebServer 库实现的基础
(可以到 Arduino IDE 的 工具-库管理-搜索库 搜索并进行下载)
函数解析
AsyncWebServer::AsyncWebServer(uint16_t port)
创建一个 AsyncWebServer 对象,使用它设置异步 ESP32 HTTP服务器
代码讲解
// 配置服务器将侦听传入HTTP请求的路由以及在该路由上收到请求时将执行的函数
server.on("/hello", HTTP_GET, [](AsyncWebServerRequest *request) {
request->send(200, "text/plain", "Hello World");
});
配置服务器将侦听传入HTTP请求的路由以及在该路由上收到请求时将执行的函数
- 第一个参数,此方法接收一个字符串,其中包含将要侦听的路径。我们将其设置为侦听
"/hello"
路由上的请求。 - 第二个参数,它接收一个类型为WebRequestMethod(此处定义)的枚举,它指定在该路由上允许哪种类型的HTTP请求。我们将定义仅接收HTTP GET请求,因此我们使用值HTTP_GET。
- 第三个参数,它接收一个函数,签名由 ArRequestHandlerFunction 类型定义在这里我们将指定该处理函数必须返回 void ,并作为参数接收指向 AsyncWebServerRequest 类型对象的指针。每个传入的客户端将被封装在此类对象中,并且两者都处于活动状态,直到连接断开
使用示例
将下面代码通过 Arduino IDE 直接上传到 ESP32 中
#include <WiFi.h>
#include <FS.h>
#include <ESPAsyncWebServer.h>
// 记得修改 **** 的内容
const char *ssid = "********";
const char *password = "*******";
AsyncWebServer server(80); // 默认的端口
void setup()
{
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(1000);
Serial.println("Connecting to WiFi..");
}
Serial.println(WiFi.localIP());
server.on("/hello", HTTP_GET, [](AsyncWebServerRequest *request) {
request->send(200, "text/plain", "Hello World");
});
server.begin(); // 开启服务器
}
void loop()
{
}
现象
打开 Arduino IDE-工具-串口监视器,即可发现 IP 地址
如果 ESP32 连接的是 PC 端的移动热点,则打开 PC 端的浏览器,输入 你的 IP 地址/hello ,进入即可返回以下现象