admin管理员组文章数量:1130349
ESP32 SoftAP配网:让设备“自己开热点”,用户一键连上家Wi-Fi 🌐
你有没有试过给一个没屏幕的小设备配网?比如买了一个智能插座,说明书上写着:“长按5秒进入配网模式”——然后呢?接下来就是一头雾水:它不发光、不说话、也不弹窗。你打开手机Wi-Fi列表,看到个叫
ESP32_Config_Mode
的陌生名字,心里打鼓:“这玩意儿真的是我家那个新买的吗?”
别急,这就是我们今天要聊的主角—— ESP32 的 SoftAP 配网模式 。它的核心思路特别简单粗暴又聪明:
“我自己当个热点,你连上来告诉我你家Wi-Fi密码,完事我就去连你家路由器。” 💡
听起来是不是有点像“先借你的热点上网,再让我连你家宽带”?没错!这种“反向操作”的设计,在无屏嵌入式设备中简直是救星般的存在。
为啥SoftAP这么香?🔥
在物联网世界里,不是每个设备都能装屏幕和键盘的。想象一下,给100个温湿度传感器一个个输密码?那画面太美不敢看 😵💫。
而 ESP32 这颗芯片,天生自带 Wi-Fi + 蓝牙双模能力,还支持一种叫 SoftAP(软件接入点) 的模式——也就是说,它不仅能当“客户端”去连别人的Wi-Fi,还能摇身一变,变成一个“迷你路由器”,对外广播自己的SSID,等你来连接。
这样一来,配网过程就变成了:
1. 设备上电 → 自动开启热点;
2. 手机连上这个热点;
3. 浏览器访问
http://192.168.4.1
;
4. 输入家里Wi-Fi的账号密码;
5. 提交!设备保存信息并尝试联网;
6. 成功后自动关闭热点,恢复正常工作。
整个过程完全不需要额外App、二维码扫描或蓝牙辅助,纯靠标准浏览器搞定,跨平台兼容性拉满 ✅。
而且更妙的是:如果以后断网了,设备还能自动重启SoftAP,让用户重新配置——相当于自带“失联自救”功能,系统鲁棒性直接起飞 🚀。
技术拆解:它是怎么做到的?🔧
先搞清楚角色切换:AP vs STA
ESP32 的 Wi-Fi 支持多种工作模式,其中两个最常用的是:
- Station (STA) 模式 :作为客户端,去连接外部Wi-Fi网络(比如你家的路由器);
- SoftAP 模式 :作为服务端,自己创建一个Wi-Fi热点,别人来连我。
SoftAP配网的本质,就是让设备先当“老板”(AP),等人把Wi-Fi信息交给它;然后再切回“打工人”身份(STA),拿着凭证去连真正的主网。
它们可以独立运行,也可以共存(AP+STA同时启用),不过一般配网阶段只需要单独开AP就够了。
核心流程走一遍 🔄
整个配网链路其实很清晰,就像一场精心编排的“交接仪式”:
-
启动SoftAP
- 初始化Wi-Fi模块;
- 设置热点名称(SSID)、密码、信道;
- 开启DHCP服务器,给连进来的手机分配IP地址(通常是192.168.4.x);
- 绑定固定IP192.168.4.1,方便用户访问。 -
用户连接 & 访问网页
- 手机搜到名为ESP32_Config_Mode的热点,输入密码连上;
- 打开浏览器访问http://192.168.4.1;
- ESP32 内置轻量级HTTP服务器返回一个HTML页面,让你填SSID和密码。 -
提交配置 & 切换模式
- 用户点击“连接”,表单数据通过POST发送到ESP32;
- 解析出目标Wi-Fi信息,写入NVS(非易失存储);
- 关闭AP模式,切换为STA模式,尝试连接家庭网络;
- 成功则退出配网状态,失败则提示重试或保持热点开放。 -
反馈结果
- 页面显示“正在连接…”;
- 可配合LED指示灯:快闪=等待配置,常亮=已联网,红灯闪烁=密码错误。
整个过程形成闭环,用户体验接近“傻瓜式操作”。
动手实现:代码怎么写?💻
下面这段基于 ESP-IDF 的代码,展示了如何用 C 实现完整的 SoftAP 配网逻辑。
#include "esp_wifi.h"
#include "esp_event.h"
#include "nvs_flash.h"
#include "esp_http_server.h"
// 存储Wi-Fi配置
static wifi_config_t sta_config;
// 启动SoftAP模式
void start_softap() {
// 初始化NVS(用于保存Wi-Fi密码)
nvs_flash_init();
// 网络初始化
esp_netif_init();
esp_event_loop_create_default();
esp_netif_create_default_wifi_ap();
// Wi-Fi初始化
wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
esp_wifi_init(&cfg);
// 配置AP参数
wifi_config_t ap_config = {
.ap = {
.ssid = "ESP32_Config_Mode",
.ssid_len = strlen("ESP32_Config_Mode"),
.channel = 1,
.password = "config1234", // 至少8位
.max_connection = 4,
.authmode = WIFI_AUTH_WPA2_PSK, // 推荐使用WPA2加密
.pmf_cfg = {.required = false},
},
};
// 启动AP
esp_wifi_set_mode(WIFI_MODE_AP);
esp_wifi_set_config(WIFI_IF_AP, &ap_config);
esp_wifi_start();
printf("✅ SoftAP已启动 | SSID: %s | 密码: %s\n",
ap_config.ap.ssid, ap_config.ap.password);
}
📌 小贴士:
- 如果不想设密码,可以把
authmode
改成
WIFI_AUTH_OPEN
,但会降低安全性⚠️;
- 建议设置合理的最大连接数(如4个),避免资源耗尽;
- 使用静态IP
192.168.4.1
是行业惯例,用户容易记住。
加个网页界面?安排!🌐
光有热点还不够,得让人能输入Wi-Fi信息才行。这时候就得请出
esp_http_server
组件,搭个微型Web服务。
httpd_handle_t server = NULL;
// 主页处理器:返回HTML表单
esp_err_t root_handler(httpd_req_t *req) {
const char* html =
"<h2>📶 ESP32 Wi-Fi 配置</h2>"
"<form method='POST' action='/connect'>"
" <label>SSID:</label><br>"
" <input type='text' name='ssid'><br><br>"
" <label>Password:</label><br>"
" <input type='password' name='password'><br><br>"
" <input type='submit' value='🚀 连接'>"
"</form>";
httpd_resp_send(req, html, HTTPD_RESP_USE_STRLEN);
return ESP_OK;
}
// 处理提交请求
esp_err_t connect_handler(httpd_req_t *req) {
char ssid[32] = {0}, password[64] = {0};
size_t len = MIN(req->content_len, sizeof(ssid) - 1);
// 读取POST数据(简化处理)
httpd_req_recv(req, ssid, len);
// 简单解析密码字段(生产环境建议用form parser)
char *pw_pos = strstr(ssid, "password=");
if (pw_pos) {
sscanf(pw_pos, "password=%[^&]", password);
}
// 切换到STA模式并连接
esp_netif_create_default_wifi_sta();
esp_wifi_set_mode(WIFI_MODE_STA);
memset(&sta_config, 0, sizeof(sta_config));
snprintf((char*)sta_config.sta.ssid, 32, "%s", ssid);
snprintf((char*)sta_config.sta.password, 64, "%s", password);
esp_wifi_set_config(WIFI_IF_STA, &sta_config);
esp_wifi_connect();
// 返回响应
httpd_resp_send(req,
"<p>🔄 正在连接...请查看串口日志确认状态。</p>"
"<a href='/'>⬅️ 返回重试</a>",
HTTPD_RESP_USE_STRLEN);
return ESP_OK;
}
// 启动HTTP服务器
void start_webserver() {
httpd_config_t config = HTTPD_DEFAULT_CONFIG();
httpd_start(&server, &config);
// 注册路由
httpd_uri_t uri_get = {
.uri = "/",
.method = HTTP_GET,
.handler = root_handler,
.user_ctx = NULL
};
httpd_register_uri_handler(server, &uri_get);
httpd_uri_t uri_post = {
.uri = "/connect",
.method = HTTP_POST,
.handler = connect_handler,
.user_ctx = NULL
};
httpd_register_uri_handler(server, &uri_post);
printf("🌍 Web服务器已启动,访问 http://192.168.4.1\n");
}
✨ 进阶建议:
- 可结合
mDNS
实现域名访问,比如
http://esp32-config.local
,比记IP友好多了;
- 添加
/status
接口返回当前连接状态,便于前端轮询;
- 使用 HTTPS 或 Token 认证提升安全性(尤其在公共场合);
实际应用场景与优化技巧 🧰
典型架构图 🖼️
+------------------+ +---------------------+
| 手机/PC用户 |<--->| ESP32 (SoftAP模式) |
| 浏览器访问网页 | | - AP热点: 192.168.4.1|
| 输入Wi-Fi凭证 | | - HTTP Server |
+------------------+ +----------+----------+
|
v
+--------+---------+
| 存储配置 -> 切换STA |
| 连接家庭Wi-Fi |
+---------------------+
实战中的坑与对策 🛠️
| 问题 | 解决方案 |
|---|---|
| 多台设备同名冲突 |
在SSID后加MAC地址尾段,如
ESP32_Config_8A2F
|
| 用户忘记关闭Wi-Fi | 设置超时机制(3~5分钟未配置自动关AP) |
| 配网失败怎么办 | LED慢闪提示错误,支持长按重置 |
| 断网后无法恢复 | 检测心跳包丢失,自动重启SoftAP进入配网态 |
| 安全性不足 | 启用WPA2密码保护,限制连接时间 |
最佳实践 checklist ✅
- ✅ 使用 NVS 持久化存储 Wi-Fi 凭证;
- ✅ 上电先检查是否有有效配置,避免频繁进配网模式;
- ✅ 提供明确的状态指示(LED、蜂鸣器等);
- ✅ 支持“一键复位”功能(长按按键清除NVS);
- ✅ 结合 OTA 升级,实现固件与配置分离更新;
- ✅ 日志输出详细连接过程,便于调试。
和其他配网方式比,谁更强?🥊
现在市面上还有不少配网方案,比如:
- SmartConfig(一键配网) :手机APP发UDP广播,设备监听抓取;
- 蓝牙辅助配网 :通过BLE传Wi-Fi信息;
- 二维码扫码配网 :设备显示二维码,手机扫后传输信息;
- 声波/光闪编码 :冷门但有趣……
相比之下,SoftAP的优势非常明显:
| 对比项 | SoftAP | SmartConfig | BLE配网 |
|---|---|---|---|
| 是否需要App | ❌ 不需要 | ✅ 需要 | ✅ 需要 |
| 兼容性 | ⭐⭐⭐⭐⭐(任何浏览器) | ⭐⭐(部分安卓机型失效) | ⭐⭐⭐(需蓝牙支持) |
| 安全性 | ⭐⭐⭐⭐(可加密热点) | ⭐⭐(明文传输风险) | ⭐⭐⭐ |
| 用户体验 | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ |
| 开发难度 | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐ |
所以结论很明确:
👉
如果你追求稳定、免App、跨平台通用,SoftAP依然是首选方案
!
虽然它多了一步“手动连热点”的操作,但换来的是极高的成功率和广泛的设备兼容性,尤其是在工业部署、批量调试场景下,简直不要太香。
写在最后:小功能,大价值 🎯
SoftAP配网看似只是个小功能,但它背后解决的是物联网落地的关键一环—— 如何让用户轻松地把设备接入网络 。
它不炫技,不依赖特定生态,也不怕系统升级导致协议失效。正因如此,哪怕在今天各种“黑科技配网”层出不穷的时代,SoftAP仍然是许多成熟产品的标配方案。
未来,我们可以进一步融合:
- mDNS 实现
.local
域名访问;
- OTA 自动升级固件;
- HTTPS 加密通信防止中间人攻击;
- WebSocket 实现实时状态推送;
- 甚至结合微信小程序做引导页美化体验……
但无论怎么演进, 核心思想不变:让用户用最熟悉的方式,完成最复杂的底层配置 。
而这,正是优秀嵌入式设计的魅力所在 ❤️。
🔦 温馨提示:下次你看到一个默默发光的小盒子,不妨试试连它的热点看看——说不定,它正等着你帮它“回家”呢 😉
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
ESP32 SoftAP配网:让设备“自己开热点”,用户一键连上家Wi-Fi 🌐
你有没有试过给一个没屏幕的小设备配网?比如买了一个智能插座,说明书上写着:“长按5秒进入配网模式”——然后呢?接下来就是一头雾水:它不发光、不说话、也不弹窗。你打开手机Wi-Fi列表,看到个叫
ESP32_Config_Mode
的陌生名字,心里打鼓:“这玩意儿真的是我家那个新买的吗?”
别急,这就是我们今天要聊的主角—— ESP32 的 SoftAP 配网模式 。它的核心思路特别简单粗暴又聪明:
“我自己当个热点,你连上来告诉我你家Wi-Fi密码,完事我就去连你家路由器。” 💡
听起来是不是有点像“先借你的热点上网,再让我连你家宽带”?没错!这种“反向操作”的设计,在无屏嵌入式设备中简直是救星般的存在。
为啥SoftAP这么香?🔥
在物联网世界里,不是每个设备都能装屏幕和键盘的。想象一下,给100个温湿度传感器一个个输密码?那画面太美不敢看 😵💫。
而 ESP32 这颗芯片,天生自带 Wi-Fi + 蓝牙双模能力,还支持一种叫 SoftAP(软件接入点) 的模式——也就是说,它不仅能当“客户端”去连别人的Wi-Fi,还能摇身一变,变成一个“迷你路由器”,对外广播自己的SSID,等你来连接。
这样一来,配网过程就变成了:
1. 设备上电 → 自动开启热点;
2. 手机连上这个热点;
3. 浏览器访问
http://192.168.4.1
;
4. 输入家里Wi-Fi的账号密码;
5. 提交!设备保存信息并尝试联网;
6. 成功后自动关闭热点,恢复正常工作。
整个过程完全不需要额外App、二维码扫描或蓝牙辅助,纯靠标准浏览器搞定,跨平台兼容性拉满 ✅。
而且更妙的是:如果以后断网了,设备还能自动重启SoftAP,让用户重新配置——相当于自带“失联自救”功能,系统鲁棒性直接起飞 🚀。
技术拆解:它是怎么做到的?🔧
先搞清楚角色切换:AP vs STA
ESP32 的 Wi-Fi 支持多种工作模式,其中两个最常用的是:
- Station (STA) 模式 :作为客户端,去连接外部Wi-Fi网络(比如你家的路由器);
- SoftAP 模式 :作为服务端,自己创建一个Wi-Fi热点,别人来连我。
SoftAP配网的本质,就是让设备先当“老板”(AP),等人把Wi-Fi信息交给它;然后再切回“打工人”身份(STA),拿着凭证去连真正的主网。
它们可以独立运行,也可以共存(AP+STA同时启用),不过一般配网阶段只需要单独开AP就够了。
核心流程走一遍 🔄
整个配网链路其实很清晰,就像一场精心编排的“交接仪式”:
-
启动SoftAP
- 初始化Wi-Fi模块;
- 设置热点名称(SSID)、密码、信道;
- 开启DHCP服务器,给连进来的手机分配IP地址(通常是192.168.4.x);
- 绑定固定IP192.168.4.1,方便用户访问。 -
用户连接 & 访问网页
- 手机搜到名为ESP32_Config_Mode的热点,输入密码连上;
- 打开浏览器访问http://192.168.4.1;
- ESP32 内置轻量级HTTP服务器返回一个HTML页面,让你填SSID和密码。 -
提交配置 & 切换模式
- 用户点击“连接”,表单数据通过POST发送到ESP32;
- 解析出目标Wi-Fi信息,写入NVS(非易失存储);
- 关闭AP模式,切换为STA模式,尝试连接家庭网络;
- 成功则退出配网状态,失败则提示重试或保持热点开放。 -
反馈结果
- 页面显示“正在连接…”;
- 可配合LED指示灯:快闪=等待配置,常亮=已联网,红灯闪烁=密码错误。
整个过程形成闭环,用户体验接近“傻瓜式操作”。
动手实现:代码怎么写?💻
下面这段基于 ESP-IDF 的代码,展示了如何用 C 实现完整的 SoftAP 配网逻辑。
#include "esp_wifi.h"
#include "esp_event.h"
#include "nvs_flash.h"
#include "esp_http_server.h"
// 存储Wi-Fi配置
static wifi_config_t sta_config;
// 启动SoftAP模式
void start_softap() {
// 初始化NVS(用于保存Wi-Fi密码)
nvs_flash_init();
// 网络初始化
esp_netif_init();
esp_event_loop_create_default();
esp_netif_create_default_wifi_ap();
// Wi-Fi初始化
wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
esp_wifi_init(&cfg);
// 配置AP参数
wifi_config_t ap_config = {
.ap = {
.ssid = "ESP32_Config_Mode",
.ssid_len = strlen("ESP32_Config_Mode"),
.channel = 1,
.password = "config1234", // 至少8位
.max_connection = 4,
.authmode = WIFI_AUTH_WPA2_PSK, // 推荐使用WPA2加密
.pmf_cfg = {.required = false},
},
};
// 启动AP
esp_wifi_set_mode(WIFI_MODE_AP);
esp_wifi_set_config(WIFI_IF_AP, &ap_config);
esp_wifi_start();
printf("✅ SoftAP已启动 | SSID: %s | 密码: %s\n",
ap_config.ap.ssid, ap_config.ap.password);
}
📌 小贴士:
- 如果不想设密码,可以把
authmode
改成
WIFI_AUTH_OPEN
,但会降低安全性⚠️;
- 建议设置合理的最大连接数(如4个),避免资源耗尽;
- 使用静态IP
192.168.4.1
是行业惯例,用户容易记住。
加个网页界面?安排!🌐
光有热点还不够,得让人能输入Wi-Fi信息才行。这时候就得请出
esp_http_server
组件,搭个微型Web服务。
httpd_handle_t server = NULL;
// 主页处理器:返回HTML表单
esp_err_t root_handler(httpd_req_t *req) {
const char* html =
"<h2>📶 ESP32 Wi-Fi 配置</h2>"
"<form method='POST' action='/connect'>"
" <label>SSID:</label><br>"
" <input type='text' name='ssid'><br><br>"
" <label>Password:</label><br>"
" <input type='password' name='password'><br><br>"
" <input type='submit' value='🚀 连接'>"
"</form>";
httpd_resp_send(req, html, HTTPD_RESP_USE_STRLEN);
return ESP_OK;
}
// 处理提交请求
esp_err_t connect_handler(httpd_req_t *req) {
char ssid[32] = {0}, password[64] = {0};
size_t len = MIN(req->content_len, sizeof(ssid) - 1);
// 读取POST数据(简化处理)
httpd_req_recv(req, ssid, len);
// 简单解析密码字段(生产环境建议用form parser)
char *pw_pos = strstr(ssid, "password=");
if (pw_pos) {
sscanf(pw_pos, "password=%[^&]", password);
}
// 切换到STA模式并连接
esp_netif_create_default_wifi_sta();
esp_wifi_set_mode(WIFI_MODE_STA);
memset(&sta_config, 0, sizeof(sta_config));
snprintf((char*)sta_config.sta.ssid, 32, "%s", ssid);
snprintf((char*)sta_config.sta.password, 64, "%s", password);
esp_wifi_set_config(WIFI_IF_STA, &sta_config);
esp_wifi_connect();
// 返回响应
httpd_resp_send(req,
"<p>🔄 正在连接...请查看串口日志确认状态。</p>"
"<a href='/'>⬅️ 返回重试</a>",
HTTPD_RESP_USE_STRLEN);
return ESP_OK;
}
// 启动HTTP服务器
void start_webserver() {
httpd_config_t config = HTTPD_DEFAULT_CONFIG();
httpd_start(&server, &config);
// 注册路由
httpd_uri_t uri_get = {
.uri = "/",
.method = HTTP_GET,
.handler = root_handler,
.user_ctx = NULL
};
httpd_register_uri_handler(server, &uri_get);
httpd_uri_t uri_post = {
.uri = "/connect",
.method = HTTP_POST,
.handler = connect_handler,
.user_ctx = NULL
};
httpd_register_uri_handler(server, &uri_post);
printf("🌍 Web服务器已启动,访问 http://192.168.4.1\n");
}
✨ 进阶建议:
- 可结合
mDNS
实现域名访问,比如
http://esp32-config.local
,比记IP友好多了;
- 添加
/status
接口返回当前连接状态,便于前端轮询;
- 使用 HTTPS 或 Token 认证提升安全性(尤其在公共场合);
实际应用场景与优化技巧 🧰
典型架构图 🖼️
+------------------+ +---------------------+
| 手机/PC用户 |<--->| ESP32 (SoftAP模式) |
| 浏览器访问网页 | | - AP热点: 192.168.4.1|
| 输入Wi-Fi凭证 | | - HTTP Server |
+------------------+ +----------+----------+
|
v
+--------+---------+
| 存储配置 -> 切换STA |
| 连接家庭Wi-Fi |
+---------------------+
实战中的坑与对策 🛠️
| 问题 | 解决方案 |
|---|---|
| 多台设备同名冲突 |
在SSID后加MAC地址尾段,如
ESP32_Config_8A2F
|
| 用户忘记关闭Wi-Fi | 设置超时机制(3~5分钟未配置自动关AP) |
| 配网失败怎么办 | LED慢闪提示错误,支持长按重置 |
| 断网后无法恢复 | 检测心跳包丢失,自动重启SoftAP进入配网态 |
| 安全性不足 | 启用WPA2密码保护,限制连接时间 |
最佳实践 checklist ✅
- ✅ 使用 NVS 持久化存储 Wi-Fi 凭证;
- ✅ 上电先检查是否有有效配置,避免频繁进配网模式;
- ✅ 提供明确的状态指示(LED、蜂鸣器等);
- ✅ 支持“一键复位”功能(长按按键清除NVS);
- ✅ 结合 OTA 升级,实现固件与配置分离更新;
- ✅ 日志输出详细连接过程,便于调试。
和其他配网方式比,谁更强?🥊
现在市面上还有不少配网方案,比如:
- SmartConfig(一键配网) :手机APP发UDP广播,设备监听抓取;
- 蓝牙辅助配网 :通过BLE传Wi-Fi信息;
- 二维码扫码配网 :设备显示二维码,手机扫后传输信息;
- 声波/光闪编码 :冷门但有趣……
相比之下,SoftAP的优势非常明显:
| 对比项 | SoftAP | SmartConfig | BLE配网 |
|---|---|---|---|
| 是否需要App | ❌ 不需要 | ✅ 需要 | ✅ 需要 |
| 兼容性 | ⭐⭐⭐⭐⭐(任何浏览器) | ⭐⭐(部分安卓机型失效) | ⭐⭐⭐(需蓝牙支持) |
| 安全性 | ⭐⭐⭐⭐(可加密热点) | ⭐⭐(明文传输风险) | ⭐⭐⭐ |
| 用户体验 | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ |
| 开发难度 | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐ |
所以结论很明确:
👉
如果你追求稳定、免App、跨平台通用,SoftAP依然是首选方案
!
虽然它多了一步“手动连热点”的操作,但换来的是极高的成功率和广泛的设备兼容性,尤其是在工业部署、批量调试场景下,简直不要太香。
写在最后:小功能,大价值 🎯
SoftAP配网看似只是个小功能,但它背后解决的是物联网落地的关键一环—— 如何让用户轻松地把设备接入网络 。
它不炫技,不依赖特定生态,也不怕系统升级导致协议失效。正因如此,哪怕在今天各种“黑科技配网”层出不穷的时代,SoftAP仍然是许多成熟产品的标配方案。
未来,我们可以进一步融合:
- mDNS 实现
.local
域名访问;
- OTA 自动升级固件;
- HTTPS 加密通信防止中间人攻击;
- WebSocket 实现实时状态推送;
- 甚至结合微信小程序做引导页美化体验……
但无论怎么演进, 核心思想不变:让用户用最熟悉的方式,完成最复杂的底层配置 。
而这,正是优秀嵌入式设计的魅力所在 ❤️。
🔦 温馨提示:下次你看到一个默默发光的小盒子,不妨试试连它的热点看看——说不定,它正等着你帮它“回家”呢 😉
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
版权声明:本文标题:ESP32 SoftAP配置模式快速完成联网 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://it.en369.cn/jiaocheng/1763582824a2945503.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论