news 2026/6/23 17:32:05

ESP32启动HTTP服务器

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ESP32启动HTTP服务器

我是嵌入式学习菌,一名热爱学习的嵌入式工程师

关注我,一起变得更加优秀!

一、核心原理(通俗版)

ESP32的HTTP服务器,本质是利用FreeRTOS系统创建网络任务,绑定80端口监听局域网请求,再把“URL路径”和“处理函数”绑定,最终实现“接收请求→执行逻辑→返回响应”的轻量级网络服务(适配ESP32有限的内存/CPU资源)。

可以把服务器理解为:ESP32上跑的一个“网络客服”——

定规矩:客服最多同时接2个电话(限制并发连接),不抢其他工作(低任务优先级);

守电话:绑定80号“座机号”(HTTP默认端口),一直等来电(监听端口);

记话术:接到“查温度”的来电(访问/temp),就念预设的温度数据(执行处理函数);

回消息:把温度数据通过“电话线”发回去(返回HTTP响应)。

二、完整极简示例(可直接烧录)

实现功能:ESP32连WiFi后启动HTTP服务器,访问http://ESP32的IP/temp就能看到模拟温湿度数据。

#include<esp_wifi.h>#include<esp_http_server.h>#include<freertos/FreeRTOS.h>//----------------------1.WiFi配置(必须先连网)----------------------#defineWIFI_SSID"你的WiFi名称"#defineWIFI_PWD"你的WiFi密码"//简化版WiFi连接(连入局域网,服务器才能被访问)voidwifi_connect(void){wifi_init_config_tcfg=WIFI_INIT_CONFIG_DEFAULT();esp_wifi_init(&cfg);wifi_config_twifi_cfg={.sta={.ssid=WIFI_SSID,.password=WIFI_PWD,},};esp_wifi_set_mode(WIFI_MODE_STA);esp_wifi_set_config(WIFI_IF_STA,&wifi_cfg);esp_wifi_start();esp_wifi_connect();vTaskDelay(pdMS_TO_TICKS(3000));//等3秒连网}//----------------------2.服务器处理函数(核心业务)----------------------//访问/temp时执行:返回模拟温湿度esp_err_ttemp_handler(httpd_req_t*req){charresp[32]="温度:25℃,湿度:60%";//要返回的内容httpd_resp_send(req,resp,HTTPD_RESP_USE_STRLEN);//发送响应returnESP_OK;}//----------------------3.路由配置(URL→处理函数)----------------------//路由表:告诉服务器“访问/temp就调用temp_handler”staticconsthttpd_uri_ttemp_route={.uri="/temp",//匹配的URL路径.method=HTTP_GET,//只响应GET请求(浏览器默认).handler=temp_handler//绑定的处理函数};//----------------------4.启动服务器----------------------httpd_handle_tstart_http_server(void){//步骤1:初始化服务器配置(适配ESP32资源)httpd_config_tconfig=HTTPD_DEFAULT_CONFIG();config.max_open_sockets=2;//最多2个并发连接(省内存)config.task_priority=5;//服务器任务优先级(0-25,5较低,不抢资源)//步骤2:声明服务器句柄(唯一标识这个服务器)httpd_handle_tserver=NULL;//步骤3:启动服务器核心(创建任务、监听80端口)if(httpd_start(&server,&config)==ESP_OK){//步骤4:注册路由(把URL和处理函数绑定)httpd_register_uri_handler(server,&temp_route);}returnserver;}//----------------------5.程序入口----------------------voidapp_main(void){wifi_connect();//第一步:连WiFi(先有网,服务器才可用)start_http_server();//第二步:启动HTTP服务器}

三、代码对应服务器原理说明

代码段服务器层面做了什么?通俗解释

HTTPD_DEFAULT_CONFIG()初始化默认配置(端口80、栈大小等)给“客服”定基础规则(默认接7个电话)

config.max_open_sockets=2限制最大并发连接数客服最多同时接2个电话,避免忙不过来

httpd_start(...)1.创建FreeRTOS任务;

2.绑定80端口;

3.监听端口请求客服上岗,守着80号座机等来电

httpd_register_uri_handler注册路由(URL→处理函数)给客服背话术:接“查温度”来电就念预设内容

temp_handler生成响应数据并发送客服按话术回复来电者

四、测试验证(看服务器是否启动成功)

烧录代码到ESP32,打开串口监视器;

找到ESP32的局域网IP(串口会打印,或路由器后台看);

手机/电脑连同一个WiFi,打开浏览器输入:http://ESP32的IP/temp;

浏览器显示温度:25℃,湿度:60%→服务器启动成功!

五、服务器关键说明

服务器句柄(httpd_handle_t):相当于服务器的“身份证”,后续停止服务器(httpd_stop(server))、新增路由都要靠它;

80端口:HTTP协议默认端口,浏览器访问时不用手动加端口号(如http://192.168.1.100等价于http://192.168.1.100:80);

资源限制:ESP32只有几百KB内存,所以要限制max_open_sockets(并发连接)、max_uri_handlers(路由数量),避免内存不足崩溃;

任务优先级:服务器任务优先级设低(如5),避免抢占WiFi、传感器采集等核心任务的CPU资源。

小编也为零基础小白整理了一份嵌入式学习资料大全。

思维导图、C语言学习、单片机、学习笔记、实例项目……你需要的知识都在这儿!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 10:02:16

[特殊字符] 普通程序员如何黑进你的电脑?

&#x1f4bb; 普通程序员如何黑进你的电脑&#xff1f;你以为黑客都是戴着面具、敲着键盘、屏幕上满是绿色字符的那种人&#xff1f; 不&#xff0c;其实只是你工位旁边那个写了 8 年 Java、每天泡在 IDEA 和 VS Code 里的程序员罢了。&#x1f9e0; 背景&#xff1a;为什么写…

作者头像 李华
网站建设 2026/6/22 19:17:25

HAMA.bundle:动漫收藏家的秩序革命

【免费下载链接】Hama.bundle Plex HTTP Anidb Metadata Agent (HAMA) 项目地址: https://gitcode.com/gh_mirrors/ha/Hama.bundle 曾经&#xff0c;我的Plex动漫库就像一场无休止的标签战争。《进击的巨人》变成了《Attack on Titan》&#xff0c;OVA特典在正片里流浪&a…

作者头像 李华
网站建设 2026/6/23 15:34:27

组合数学➕动态规划 Codeforces Round 1035 (Div. 2) D. Token Removing

被组合数学动态规划整的不知天地为何物了&#xff0c;这玩意经常遇到就算了&#xff0c;还经常不会&#xff0c;至此我打算开篇新的篇章专门记录组合数学➕动态规划的ac之路...... 简洁题意&#xff1a;在给定整数 n [1,5000] 和 m [1e8,1.01e9] 的情况下&#xff0c;m作为…

作者头像 李华
网站建设 2026/6/19 22:59:14

海龟交易法则

海龟交易系统是一个完整的、机械化的趋势跟踪交易系统。它因传奇商品交易员理查德丹尼斯与朋友的一个著名赌约而诞生——丹尼斯认为伟大的交易员可以通过后天系统化训练培养&#xff08;就像新加坡人养殖海龟一样&#xff09;&#xff0c;而非天生。这个实验证明了一套简单但纪…

作者头像 李华
网站建设 2026/6/22 16:30:37

刚柔结合板的层压革命:三维互连中的应力协调与材料创新

刚柔结合板的层压技术是实现三维立体电路的关键突破&#xff0c;其核心挑战在于协调刚性区与柔性区的机械应力与热膨胀行为。传统工艺中&#xff0c;因刚性FR-4与柔性聚酰亚胺的CTE差异达120ppm/℃&#xff0c;界面分层风险高达25%。新一代层压技术通过材料改性与结构创新&…

作者头像 李华
网站建设 2026/6/23 9:29:33

探索C++20模板编程:YimMenuV2游戏菜单框架的极致艺术

探索C20模板编程&#xff1a;YimMenuV2游戏菜单框架的极致艺术 【免费下载链接】YimMenuV2 Unfinished WIP 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenuV2 在当今游戏开发领域&#xff0c;自定义菜单系统已成为提升用户体验的关键要素。今天我们要介绍的…

作者头像 李华