ESP32 Arduino 学习 :配置异步HTTP Web服务器


#1

前言

学习如何在 ESP32 开发板运行的 Arduino 核心上配置异步 HTTP Web 服务器。

在学习配置服务器前,因为在下面会涉及到 wifi 方面,所以请先看这篇文章 Arduino: 在 ESP32 上使用 WIFI

操作环境

测试使用的开发板: BPI-UNO32

测试使用的软件:Arduino IDE 1.8.9

为了设置网络服务器,需要安装两个库

  1. ESPAsyncWebServer 该库允许设置异步 HTTP(和Websocket)服务器,这意味着它可以同时处理多个连接

  2. 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请求的路由以及在该路由上收到请求时将执行的函数

  1. 第一个参数,此方法接收一个字符串,其中包含将要侦听的路径。我们将其设置为侦听"/hello"路由上的请求。
  2. 第二个参数,它接收一个类型为WebRequestMethod(此处定义)的枚举,它指定在该路由上允许哪种类型的HTTP请求。我们将定义仅接收HTTP GET请求,因此我们使用值HTTP_GET。
  3. 第三个参数,它接收一个函数,签名由 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 ,进入即可返回以下现象

参考资料

ESP32 Arduino教程:异步HTTP Web服务器

arduino-esp32