ESP32嵌入网页的三种方法
部分内容 引用自 InfiniteYuan ESP32 开发笔记(十一)使用 ESP32 做为 WebServer
ESP32 嵌入网页的三种方法
ESP32 是一款功能强大的微控制器,具有 WiFi 和蓝牙连接功能,因此可以将其用于各种物联网项目。在 ESP32 上嵌入网页可以通过以下三种方法来实现:
一、使用 c 语言字符串存储 html 网页内容
可以使用 ESP32 的 WiFi 功能来创建一个 HTTP 服务器,将网页文件放置在 c 语言字符串中,并通过 HTTP 协议向客户端(如智能手机或计算机)提供网页文件。可以使用 Arduino IDE 中提供的 ESP32 Web Server 库来实现此目的。当客户端访问 ESP32 的 IP 地址时,服务器将返回存储器中的网页文件,浏览器将解析并显示网页。优点是简单使用,缺点是没有压缩比较占空间。
示例
1 | String ROOT_HTML = "<!DOCTYPE html><html><body><h1>Web Server with ESP32 -Station Mode</h1></body></html>"; |
二、压缩成gz文件,生成c数组。
开启gzip后,浏览器接收到服务器发送的压缩数据,然后进行解析和显示。这可以减少网络实际传输数据的大小,从而提高浏览速度。特别是对于纯文本文件,gzip压缩可以使其大小缩小到原大小的30%~40%,大大提高了传输效率。
工作流程
- 首先通过 gzip 将 HTML 文件压缩为 .gz 文件
- 使用 filetoarray 工具将 .gz 文件转为头文件
- 在 ESP32 程序中将头文件中的数组发送出去
flowchart LR A(index.html) -->|gzip| B(html.gz) B -->|fileToArray| C(index.h)
fileToArray 工具
使用这个工具将 .gz 文件转换为包含十六进制数组和其长度的头文件。
源码如下:
1 |
|
详细使用方式
- 使用 gzip 将 HTML 文件转换为 .gz 文件
1 | gzip index.html |
- 编译 fileToArray.c 源文件,生成可执行文件
1 | gcc fileToArray.c -o fileToArray |
- 使用 fileToArray 将 .gz 文件转为头文件
1 | ./fileToArray index.html.gz > index.h |
示例
1 |
|
把gzip压缩的网页直接嵌入固件中
该方法效果与方法二一致且稍微麻烦,故在此不再介绍
结语
以上是三种常见的在 ESP32 上嵌入网页的方法,每种方法都有其优缺点和使用场景。根据实际需求选择最适合的方法来实现网页嵌入。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 RETUZE!
评论