ESP32构建简单WebServer服务器

WebServer 服务器

此案例中,我们将创建一个最简单的 webserver 服务器

案例实现:ESP32 通过 SPIFFS 上传网页文件并保存,之后手机开启热点,ESP32 连接到该热点;与手机处于同一热点下的任何一个设备(下面用电脑演示)都可以通过 ESP32 反馈的内网地址访问其构建的网页!


ESP32 filesystem uploader

SPIFFS 是一种嵌入式文件管理系统
arduino 已经集成了对应库,但是依然需要我们下载另一个库来实现文件上传的功能

下载 ESP32 filesystem uploader
https://github.com/me-no-dev/arduino-esp32fs-plugin

注意我们需要下载的是 jar 文件,即编译过后的,具体下载地址在上方 github 页面的 readme 里面有

下载对应的 ZIP 包后,直接解压到 arduino 根目录下的 tools 文件夹内即可(如下图所示)

在这里插入图片描述


重启 arduino,新建一个项目,项目内容保持为空

依次点击 工具->ESP Sketch Data Upload

在这里插入图片描述

由于我们是第一次使用 SPIFFS,需要进行初始化,弹出窗口点击 yes 即可

等待一段时间,当 arduino 下方输出框停止输出后,就会在当前项目目录下创建一个 data 文件夹

该文件夹存放网页文件,下次直接按照此方法再次运行 ESP Sketch Data Upload 即可上传文件到 ESP32 的 SPIFFS 里面了!


WebServer 库

此时需要外部的 webserver 库支持,下载下面这两个库

AsyncTCP https://github.com/me-no-dev/AsyncTCP
ESPAsyncWebServer https://github.com/me-no-dev/ESPAsyncWebServer

依次点击 项目->加载库->加载 ZIP 库

选择我们下载完毕的两个库的 ZIP 压缩包,arduino 即可自动安装!

在这里插入图片描述


WIFI 链接

此时开启我们的手机热点

我的热点设置是
热点名称(SSID):zhiller
热点密码:pp12345678

故得出以下代码

#include <WiFi.h>
#include <SPIFFS.h>
#include "ESPAsyncWebServer.h"

// 设置ESP32服务器运行于80端口
AsyncWebServer server(80);

//连接WIFI
void connect_wifi(){

  // WIFI名称以及对应密码
  const char* wifi_ssid = "zhiller";
  const char* wifi_password = "pp12345678";

  // 设置串口波特率,以便通过串口监视器观察输出
  Serial.begin(115200);

  WiFi.begin(wifi_ssid, wifi_password);         //连接WIFI

  Serial.print("正在连接WIFI");

  //循环请求,直到连接成功
  while(WiFi.status() != WL_CONNECTED){
    Serial.print(".");
    delay(500);
  }

  Serial.println();
  IPAddress local_IP = WiFi.localIP();
  Serial.print("WIFI链接成功,此为IP:"); //连接成功提示
  Serial.println(local_IP);
}

// 开启webserver,挂载网页index.html
void web_server(){
 if(!SPIFFS.begin(true)){
    Serial.println("SPIFFS发生错误");
    return;
  }
  server.serveStatic("/", SPIFFS, "/").setDefaultFile("index.html");
  server.begin();                       //初始化
}

void setup() {
  connect_wifi();
  web_server();
}

void loop() {

}

网页与代码烧录

随便写一个网页

代码清单 index.html

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<link
			rel="stylesheet"
			type="text/css"
			href="style.css"
		/>
		<title>测试网站</title>
	</head>
	<body>
		<h1>测试网站</h1>
		<p>测试测试测试</p>
	</body>
</html>

保存该网页到项目目录下的 data 文件夹

之后回到 arduino,依次执行 工具->ESP Sketch Data Upload 上传网页文件
(此时必须要保证串口监视器是关闭状态,否则上传必定失败)

上传完毕后,先打开串口监视器(提前调节波特率到 115200),然后才开始上传代码

我们通过串口监视器可以观察到正在连接 WIFI,并且在连接到 WIFI 后,出现 ESP32 搭设的 webserver 的内网 IP

在这里插入图片描述

之后将电脑连接到手机热点

电脑上访问对应的 IP+端口,如 192.168.43.141:80
此时即可浏览到对应的网页 index.html


  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
好的,下面是具体步骤: 1. 连接ESP32开发板,并在Arduino IDE中安装ESP32开发板支持。 2. 打开Arduino IDE,新建一个项目。 3. 在“文件”菜单中,选择“示例”->“WiFi”->“WiFiWebServer”打开示例代码。 4. 修改代码,将WiFi的SSID和密码替换为你自己的WiFi网络的名称和密码。 5. 在“setup”函数中,添加代码 `Serial.begin(115200);` 打开串口,方便调试。 6. 在“loop”函数中,添加代码 `Serial.println("Hello World from ESP32!");` 打印“Hello World from ESP32!”。 7. 上传代码到ESP32开发板。 8. 打开串口监视器,查看ESP32是否连接到WiFi网络。 9. 在浏览器中输入ESP32的IP地址,即可看到“Hello World from ESP32!”的输出。 下面是完整的代码: ```c #include <WiFi.h> #include <WiFiClient.h> #include <WebServer.h> const char* ssid = "your_SSID"; const char* password = "your_PASSWORD"; WebServer server(80); void setup() { Serial.begin(115200); // Connect to Wi-Fi network with SSID and password Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi..."); } Serial.println("WiFi connected"); // Print ESP32 IP address Serial.print("IP address: "); Serial.println(WiFi.localIP()); server.on("/", []() { server.send(200, "text/plain", "Hello World from ESP32!"); }); server.begin(); } void loop() { server.handleClient(); Serial.println("Hello World from ESP32!"); delay(1000); } ``` 注意:在代码中需要将 `your_SSID` 和 `your_PASSWORD` 替换为你自己的WiFi网络的名称和密码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zhillery

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值