自从使用 ESP32 系列芯片以来,我逐渐发觉了它的强大之处。最近着重研究了一下它的“ WebServer ”功能,便以此开发了一个迷你服务器。
ESP32 芯片是由我国的乐鑫公司继 ESP8266 芯片后推出的又一款集成 WiFi 功能的微控制器。它拥有比 ESP8266 更加强大的性能,可以用来开发更加复杂的应用。ESP32 芯片或模组具有下列特点:
- 处理器:Tensilica LX6 双核处理器(一核处理高速连接;一核独立应用开发)
- 主频:32 位双核处理器,CPU 正常工作速度为 80 MHz,最高可达 240 MHz
- SRAM:520KB,最大支持 8 MB 片外 SPI SRAM
- Flash:最大支持 16 MB 片外 SPI Flash
- WiFi 协议:支持 802.11 b/g/n/d/e/i/k/r 等协议,速度高达150 Mbps
- 频率范围:2.4~2.5 GHz
- 蓝牙协议:支持蓝牙 v4.2 完整标准,包含传统蓝牙 (BR/EDR) 和低功耗蓝牙 (BLE)
- 外设接口:GPIO、ADC、DAC、SPI、I²C、I²S、UART 等
ESP32 芯片主要具有高性能、低功耗、高度集成、体积小、性能稳定等优点。
WebServer——基于ESP32制作迷你服务器【Designed By SoTWild】-前言:-为什么创建此项目?-硬件:·PCB:·传输速度:-软件:·开发环境:·基本代码:-其他:-使用的资料:-开源协议:
借助此项目练习 C 和 HTML 的编写。
这里 ESP32-WROOM 或 ESP32-WROVER 都可以兼容,我将网页文件添加在了 Micro SD 卡中,使用的通信协议是 SDMMC (不是常用的 SPI ,SDMMC 通信速度更快)。因此,你可以直接使用 ESP32-CAM 上传代码。
ESP32 使用的是 2.4GHz 的 WiFi ,理论上最大传输速度是 30Mbps ,但实际上受限于 WiFi 的传输距离,还有它的天线,实测的时候一般为几百Kbps ,不过对于该项目已经足够了,并且在实测中传输速度完全可以在线播放歌曲,甚至低分辨率视频。下载速度为40KB/s。
这里使用的是 Arduino IDE 1.8.13 ,ESP32 包版本为 1.0.2 (出于特殊原因不是2.0.0)。
ESP32:
x1
2
3
4
5const char *ssid = "********"; //你的WiFi名称
6const char *password = "********"; //你的WiFi密码
7
8WebServer server(80); //声明WebServer对象
9
10void handleRoot() { //回调函数
11 File file = SD_MMC.open("/index.html"); //从SD卡读取文件
12 if (!file) {
13 Serial.println("读取文件失败");
14 server.send(404, "text/plain", "Failed to open file!");
15 return;
16 }
17 server.streamFile(file, "text/html"); //向客户端发送文件
18 file.close();
19}
20
21void setup() {
22 Serial.begin(115200); //串口波特率115200
23
24 WiFi.mode(WIFI_STA);
25 WiFi.setSleep(false);
26 WiFi.begin(ssid, password); //连接到无线网络
27 while (WiFi.status() != WL_CONNECTED) {
28 delay(1000);
29 Serial.print(".");
30 }
31 Serial.println("Connected");
32 Serial.print("IP Address:");
33 Serial.println(WiFi.localIP());
34
35 if (!SD_MMC.begin()) //挂载SD卡
36 {
37 Serial.println("存储卡挂载失败");
38 return;
39 }
40
41 server.on("/", handleRoot); //注册链接和回调函数
42
43 server.begin(); //启动Web服务器
44 Serial.println("Web服务器启动");
45}
46
47void loop() {
48 server.handleClient(); //处理来自客户端的请求
49}
SD卡根目录:
xxxxxxxxxx
121
2
3<head>
4 <title>SD WebServer Test</title>
5</head>
6
7<body>
8 <p style="background-color:gray">这是来自SD卡的html文件</p>
9</body>
10
11</html>
12
使用Arduino开发ESP32(09):WebServer使用演示与说明
使用Arduino开发ESP32(14):基于SD卡的Web服务器搭建
GPL-3.0