<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>嵌入式 on 豆子技术站</title><link>https://blog.91demo.top/tags/%E5%B5%8C%E5%85%A5%E5%BC%8F/</link><description>Recent content in 嵌入式 on 豆子技术站</description><generator>Hugo -- 0.155.1</generator><language>zh-cn</language><lastBuildDate>Wed, 29 Apr 2026 22:22:34 +0000</lastBuildDate><atom:link href="https://blog.91demo.top/tags/%E5%B5%8C%E5%85%A5%E5%BC%8F/index.xml" rel="self" type="application/rss+xml"/><item><title>一步一步将ESP8266 WIFI 配网搞定并丝滑体验</title><link>https://blog.91demo.top/esp-wifi-config/</link><pubDate>Wed, 29 Apr 2026 22:22:34 +0000</pubDate><guid>https://blog.91demo.top/esp-wifi-config/</guid><description>&lt;p&gt;准备入手ESP网关项目了，手头有一块esp8266的开发小板子，就先从esp8266开始入手。白天搞定了ESP8266 的UDP配网编码和小程序端的控制编码。就一个功能模块给ESP8266配置WIFI网络。这是必须的入门操作，因为WIFI 的SSID和密码不能真的写入到代码中。&lt;/p&gt;
&lt;p&gt;网络配置有很多种方式，我选择了&lt;code&gt;SoftAP配网&lt;/code&gt;，虽然配置有点繁琐，但这是一种很可靠的配网方案，兼容性极高，不依赖手机硬件的特殊协议。以前做过HTTP配网，这是2025年时做的，到现在已经忘的差不多了。现在捡起来再回忆一下。&lt;/p&gt;
&lt;p&gt;准确来说，这不应该算是一个项目，但因为它具有通用性和实用性。我决定把它记录下来，可以方便地应用到我的其它项目中。&lt;/p&gt;
&lt;h2 id="soft配网原理"&gt;Soft配网原理&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;初始化模式：ESP8266 启动后进入 WIFI_AP_STA 模式。它会开启一个无密码（或已知密码）的热点（AP），并运行一个轻量级的 Web 服务器（HTTP Server）。&lt;/li&gt;
&lt;li&gt;通道建立：手机通过小程序或系统设置连接到该热点。此时手机与 ESP8266 处于同一个局域网内。&lt;/li&gt;
&lt;li&gt;数据交互：小程序通过 HTTP Post 请求将目标 WiFi 的 SSID 和 Password 发送给 ESP8266 的固定接口（如 /config）。&lt;/li&gt;
&lt;li&gt;校验与切换：ESP8266 收到参数后，尝试作为客户端（STA）连接路由器。如果连接成功，则关闭 AP 热点，保存参数到 Flash；如果失败，则返回并重置到AP状态。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="esp8266端核心代码arduino-ide和小程序端代码"&gt;ESP8266端核心代码（Arduino IDE）和小程序端代码&lt;/h2&gt;
&lt;p&gt;在Arduino IDE打开项目后，需要安装ESP8266 WebServer库。这个库提供了Web服务，可以接收其它HTTP客户端的连接。&lt;/p&gt;
&lt;p&gt;它的核心是实现了一个非常简单的Web服务，它监听&lt;code&gt;/config&lt;/code&gt;接口并能够接收WIFI信息，以及接收之后可以本地存储，实现动态配置的功能。&lt;/p&gt;
&lt;p&gt;下面是Arduino端的代码片段：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;#include &amp;lt;ESP8266WiFi.h&amp;gt;
#include &amp;lt;ESP8266WebServer.h&amp;gt;
// 定义AP热点的名称
const char* ap_ssid = &amp;#34;ESP8266_Config_Device&amp;#34;;
ESP8266WebServer server(80);
void handleConfig() {
// 处理SSID和密码逻辑
}
void setup() {
// 设置为AP+STA模式
WiFi.mode(WIFI_AP_STA);
WiFi.softAP(ap_ssid);
// 注册接口
server.on(&amp;#34;/config&amp;#34;, HTTP_POST, handleConfig);
server.begin();
}
void loop() {
server.handleClient();
if (WiFi.status() == WL_CONNECTED) {
// 如果连接成功，可以根据需要在这里处理业务逻辑
}
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;完整代码可以从&lt;a href="https://91demo.top/tools/"&gt;https://91demo.top/tools/&lt;/a&gt;下载。小程序端则充当了HTTP客户端，它用来作为输入WIFI信息的终端。这个界面非常简单，一个WiFi信息提交表单，包含了SSID信息和密码信息，以及一个提交按钮。&lt;/p&gt;</description></item></channel></rss>