ESP32开发板创建同步WebServer网页服务器

ESP32开发板创建同步WebServer网页服务器

文章目录


前言

ESP32 内置了 Wi-Fi 功能,能够作为网页服务器(Web Server)向网络中的其他设备提供服务。通过在 ESP32 上运行网页服务器,可以创建基于浏览器的用户界面,用于监控传感器数据或控制设备状态,是实现物联网(IoT)应用的基础功能之一。

WebServer 库简介

Arduino-ESP32 核心库内置了 WebServer.h,它提供了一套简洁的 API 来快速构建 Web Server 轻量级的 HTTP 服务器。通过注册路由(URL 路径)及回调函数,实现请求分发与应答。适用于绝大多数典型 IOT 项目的本地网页交互。

选择建议

使用同步WebServer当:
轻量级,入门和资源受限场景,无需额外安装;
项目简单,只有一个用户;
请求处理非常快速(<100ms);
不需要同时处理其他重要任务;
内存资源非常有限;

使用异步WebServer当:
对大流量/高并发等复杂场景,需要高性能,服务多个用户;
有耗时操作(文件操作、网络请求);
需要实时功能(WebSocket);
需要处理上传/下载;
系统有其他重要任务需要及时响应;

同步阻塞模型,服务器一次只能处理一个客户端请求,必须等待当前请求完全处理完成后,才能处理下一个请求。

以下为同步WebServer与异步WebServer对比

在这里插入图片描述

基础网页服务 (STA 模式)

在 STA 模式下创建一个基础的网页服务器,用于显示一个包含"Hello World!"的静态页面。

#include<WiFi.h>#include<WebServer.h>constchar*ssid ="Maker";// 替换为你的 Wi-Fi 名称constchar*password ="12345678";// 替换为你的 Wi-Fi 密码 WebServer server(80);voidsetup(){ Serial.begin(115200);delay(10);// 连接 WiFi 网络 Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password);// 等待连接成功while(WiFi.status()!= WL_CONNECTED){delay(500); Serial.print(".");} Serial.println(); Serial.println("WiFi connected."); Serial.println("IP address: "); Serial.println(WiFi.localIP());// 配置路由和启动服务器 server.on("/", handleRoot); server.begin();}voidloop(){ server.handleClient();}// 处理根路径请求voidhandleRoot(){ server.send(200,"text/html",generateHTML());}// 生成 HTML 页面内容 String generateHTML(){ String htmlContent ="<!DOCTYPE html> <html>\n"; htmlContent +="<head><meta charset=\"utf-8\" name=\"viewport\" content=\"width=device-width\">\n"; htmlContent +="<title>ESP32S3 Test</title>\n"; htmlContent +="</head><body>\n"; htmlContent +="<h1>Hello World!</h1>\n"; htmlContent +="<p>Hello from ESP32</p>\n"; htmlContent +="</body>\n"; htmlContent +="</html>\n";return htmlContent;}

代码解释​
#include <WebServer.h>:引入 Web Server 库,用以在 ESP32 上创建 HTTP 服务器。

WebServer server(80);:创建一个服务器对象,监听标准的 HTTP 端口 80。80 是 HTTP 协议的默认端口。

server.on(“/”, handleRoot);:注册路由处理函数。当客户端访问根路径"/"时,调用 handleRoot() 函数。

server.begin();:启动服务器,开始监听客户端的连接请求。

server.handleClient();:在 loop() 中持续调用,处理传入的客户端请求。

handleRoot():这是一个自定义的回调函数,用于处理特定路径的请求。

server.send(statusCode, contentType, content);:向客户端发送一个 HTTP 响应。向客户端浏览器返回包含 “Hello World” 的简单 HTML 页面。
200:HTTP 状态码,200 OK 表示请求成功。
“text/html”:MIME 类型,告知浏览器响应内容是 HTML 文本。
generateHTML():函数返回的字符串,即网页的实际内容。
generateHTML():一个辅助函数,将 HTML 代码拼接成一个 String 对象,返回包含完整 HTML 结构的字符串。

运行结果​

将代码中的 ssid 和 password 修改为目标 Wi-Fi 网络的名称和密码后上传。串口监视器将显示连接过程和获取到的 IP 地址。在同一局域网的设备上打开浏览器,输入显示的 IP 地址,即可看到"Hello World!"页面。

在这里插入图片描述


在这里插入图片描述

Read more

配置钉钉龙虾OpenClaw机器人调用OpenMetadata

配置钉钉龙虾OpenClaw机器人调用OpenMetadata

目录 * 一、前言 * 1️⃣钉钉(DingTalk) * 2️⃣OpenClaw * 3️⃣OpenMetadata * 4️⃣MCP(Model Context Protocol) * 二、安装OpenClaw * 三、配置OpenClaw钉钉机器人 * 四、调用OpenMetadata MCP 一、前言 先介绍下这四个工具/协议的定位与核心能力,本文将从零开始配置。 1️⃣钉钉(DingTalk) 阿里巴巴旗下的企业协作平台,2014年上线,是中国市场份额最大的企业即时通讯与办公套件之一。 核心能力包括:即时消息与视频会议、考勤打卡与审批流、企业通讯录、低代码应用搭建(宜搭)、以及近年来整合的 AI 助理功能。它更像一个"企业操作系统",把 HR、OA、协同文档、

使用西门子博途TIA及仿真软件S7-PLCSIM Advanced通过Kepware OPCUA通讯与Fanuc ROBOGUIDE软件连接进行虚拟仿真调试机器人

使用西门子博途TIA及仿真软件S7-PLCSIM Advanced通过Kepware OPCUA通讯与Fanuc ROBOGUIDE软件连接进行虚拟仿真调试机器人

前言 使用ROBOGUIDE软件调试机器人时,与PLC通讯那端的调试使我很头痛,包含激活机器人启动回HOME等功能很难单独使用ROBOGUIDE实现(我想应该归咎于我比较菜),此时又需要建立新的PLC控制FANUC机器人的库就做了尝试用OPC搭建仿真环境的测试。测试成功用起来还不错。 配置TIA程序 ·创建PLC,例1515。开启OPC服务器。 OPC配置如下: 在TIA中为添加Fanuc机器人组态 以上为在TIA中OPC作为服务器的配置。 配置S7-PLCSIM Advanced V3.0  ·建立仿真PLC注意开Online Access。   输入PLC名称和IP地址,启动后将TIA中的PLC程序和配置下载到PLCSIM中。 配置kepware ·由于S7-1500作为OPC服务器,因此需要将kepware设置为客户端 ·先配置OPCUA项目属性 新建客户端配置属性 项目中属性要开允许匿名访问。客户端要输入opc服务器地址就是TIA配置的地址。 ·建立S7-1500通讯的变量 查看变量通讯状态。Quality为良好为通讯正常,Unknow

AI绘画新体验:用Qwen-Image-Lightning轻松生成水墨中国风作品

AI绘画新体验:用Qwen-Image-Lightning轻松生成水墨中国风作品 [【免费下载链接】Qwen-Image-Lightning 项目地址: https://ai.gitcode.com/hf_mirrors/lightx2v/Qwen-Image-Lightning/?utm_source=gitcode_aigc_v1_t0&index=top&type=card& "【免费下载链接】Qwen-Image-Lightning"] 你有没有试过这样描述一幅画:“一叶扁舟浮于烟雨江南,远山如黛,近水含烟,墨色渐变,留白处似有微风拂过纸面”——然后几秒钟后,一张真正带着水墨呼吸感的画就出现在屏幕上?不是模板拼贴,不是滤镜叠加,而是从文字意境直接生长出的东方气韵。 这不再是想象。Qwen-Image-Lightning 正在让“用中文写诗,AI落笔成画”成为日常操作。它不强迫你背英文术语,不考验你调参功力,更不卡在显存报错的红字里。

【VR音游】音符轨道系统开发实录与原理解析(OpenXR手势交互)

【VR音游】音符轨道系统开发实录与原理解析(OpenXR手势交互)

VR音游音符轨道系统开发实录与原理解析 在 VR 音游的开发过程中,音符轨道系统是最核心的交互与可视化部分。本文结合一次完整的开发实录,分享从核心原理与设计到VR内容构建的完整过程,帮助读者快速理解音符轨道系统的实现思路。 文章目录 * VR音游音符轨道系统开发实录与原理解析 * 一、实录结果 * 二、VR内容开发步骤 * 1. 准备音符与交互逻辑 * 2. 创建谱面 * 3. 绘制音轨 * 4. 预制件与音频替换 * 三、原理解析(音符轨道系统) * 1. 音符轨道(Note Track) * 2. 轨迹调节与偏移控制 * 3. 音符触摸激活 * 4. 谱面编辑工具(Editor 功能) * 四、总结与展望 * 1. 成果回顾:从零到一的核心突破 * 2. 技术总结:核心设计理念 * 3. 开发难点与问题反思 * 4. 优化策略与改进方向 * 5.