wifi 配网方式总结

本文汇总介绍了目前市面上各种WIFI模块的常见的配网方式的原理和实现,对比了各种配网方式的优势和局限,得出结论,WEB配网是最直接、最简单、最灵活、约束条件最少的配网方式,应该成为WIFI模块配网的标配。而基于乐鑫ESP8266芯片的WIFI模块,可以实现对目前市面上各种主流方式的配网方式的支持,也包括对WEB配网方式的支持。

1WIFI模块的“配网”
1.1 “连网”和“配网”
1.1.1   何谓“连网”和“自动连网”?
“连网”一般指的是WIFI设备通过SSID和密码来连接热点AP或路由器,以加入后者所建立的网络的过程。

“自动连网”一般指的是WIFI设备在启动、掉线、或扫描到特定的SSID后,会使用之前保存的SSID与密码,自动连接热点AP或路由器,而不需要手工重新输入。其中,WIFI设备掉线后的“自动连网”,又常常被称为“自动重连”。

“自动连网”,一般需要在之前配网成功后,将SSID和密码进行保存,以便在需要“自动连网”时可以从保存的地址读取出来使用。

1.1.2   何谓“配网”
“配网”指的是,外部向WIFI模块提供SSID和密码,以便WIFI模块可以连接指定的热点或路由器并加入后者所建立的相关WIFI网络

WIFI模块一般不像电脑手机或平板等设备,有丰富的人机交互界面,可以方便的实现配网,因此,WIFI模块的“配网”方式支持,会成为WIFI模块特性的一个基本话题。

能提供方便、灵活多样、条件约束少的配网方式,常常成为WIFI模块的卖点之一,更是WIFI模块的使用者,在选型时需要慎重考虑评估的一个重要方面。

1.2各种配网方式简介
常见的配网方式,一般可以归为如下几大类:直接配网、智能配网、WPS配网、WEB网页配网。用户可以根据具体的使用场合选择各种最适合的配网方式。Anylinkin推荐大家使用WEB配网方式,因为这种配网方式最简单、最直观、最方便,所以依赖的约束条件也最少。

1.2.1直接配网(串口AT、SPIAPI、SDIOAPI、I2CAPI….)
所谓直接配网,就是通过UART串口、SPI口、SDIO口、I2C等主机接口,按照一定的通信协议,将SSID和密码,直接传递给WIFI模块。WIFI模块在收到SSID和密码后去连接热点或路由器,并将连接的结果从主机接口返回。

例如,常见的通过UART串口AT指令配网、SPIAPI函数配网、SDIO API函数配网、I2C API函数配网等等。

1.2.2智能配网(SmartConfig/SmartLink....)与微信Airkiss配网
所谓智能配网(Smart Config),就是使用WIFI设备本身自带的WIFI信号,在MAC层将SSID和密码按照一定的协议格式填充在MAC包中不加密的包头部分,采用广播和抓包方式,从手机等设备将SSID和密码分段多次传递给WIFI模块。

目前市面上常见的多种SmartConfig/SmartLink技术,虽然各个WIFI芯片方案会取不同的英文名字,但是基本原理则基本相同,只是填充的数据协议格式稍有区别。

智能配网一般需要在发送SSID和密码的设备(例如手机)上安装一个APP,该APP实现了和WIFI模块之间的协议交互(发送SSID和密码)。

微信Airkiss扫一扫是微信提供的一种智能配网方式,因为微信的广泛使用而得到大量普及。和其他的普通的智能配网方式比较,不需要单独安装APP。但是它需要连接微信服务器(在后台下载一个小应用),且其不能随便提供的SSID和密码,只能是使用微信的设备当前所连接的路由器的SSID和密码。

1.2.3WPS一键配网
这种方式需要路由器支持WPS。因为安全性的缘故,近几年已经逐步被放弃,越来越多的路由器开始放弃或者自动关闭对这种方式的支持。

1.2.4WEB网页配网
在支持AP模式的WIFI模块上内嵌一个简易的WEB服务器,在WEB网页里提供了配网的交互接口。其他网络设备(例如手机、平板、电脑等)直接连接上WIFI模块的AP热点,在浏览器上打开该WEB网页,在WEB网页里配置该WIFI模块去连接其他的AP或路由器。

归因于近年来越来越多的WIFI芯片解决方案都开始支持STA+AP混合模式(即WIFI模块不仅可以作为工作站STA使用去连接其他路由器或热点,同时本身也可以作为一个热点AP供其他WIFI设备节点来连接),也归因于近年来许多WIFI芯片解决方案越来越高的集成度可以将TCP IP协议栈直接集成在WIFI模块上,因此,可以简单地在WIFI模块上直接实现一个WEB服务器,且这个服务器可以通过WIFI模块的AP模式直接访问(不需要依赖其他网络,手机等设备直接访问WIFI模块自建立的 WIFI网络和WEB网页,进行配置)。

这种配网方式的基本思想是, WIFI模块工作在STA+AP混合模式并启动内嵌的WEB服务器,电脑手机或平板等WIFI设备连接WIFI模块所建立的AP热点,并获取得到一个IP地址(即:加入了这个WIFI模块的热点AP模式所建立的WIFI局域网),然后电脑手机或平板等WIFI设备通过其上标配的浏览器访问WIFI模块上的WEB服务器,在打开的WEB网页中,完成各种配置,包括设置WIFI模块在STA模式下去链接第三方热点或路由器的SSID和密码,让WIFI模块作为STA去连接其他热点AP或路由器。

1.3 各种配网方式比较
1.3.1直接配网(串口AT、SPIAPI、SDIOAPI、I2CAPI….)的优势和局限
1、优势

直接输入和结果反馈,实现简单,过程明了,配网可靠。

2、局限

(1)需要提供额外的人机交互接口

一般需要额外的机交互接口(例如串口线或LCD),来输入SSID或密码。

(2)需要占用单片机系统的额外串口或其他主机接口资源

所以通过串口AT指令或其他主机接口来配网,会受到一些限制,尤其在大量实际场合,设备往往都是封闭式或者不方便提供人机交互接口的,这种方式导致系统的实现和运行维护变得比较麻烦,一般越来越少用到。

1.3.2一般智能配网(SmartConfig/SmartLink....)的优势和局限
1、优势

不需要提供额外的人机交互接口,不占用额外的单片机资源,直接使用WIFI模块自带的WIFI进行配网,实现比较方便

2、局限

(1) 需要安装APP,使用不太方便

一般需要在用户的手机上额外安装APP,而且每个方案供应商提供的APP(及底层协议都可能不相同)。而这个APP一般需要模块供应商来开发,一般需要准备Android和iOS两款APP。且需要用户下载和安装和更新该APP,比较麻烦。

  (2)配网原理和过程复杂,成功率低

通过智能配网方式配网,采用一种类似于sniff的分块多次广播和抓包方式,如果网络干扰大或信号弱,就容易丢失数据,导致配网的难度加大,周期长,成功率降低。所以,有些做得不够好的WIFI模块,在使用智能配网时,经常会遇到很难成功的情形。而在终端用户那边,因为操作的复杂性,导致配网成功的几率进一步降低。

  (3)可能需要提供额外的按键或其他接口

智能配网需要模块预先处于智能配网模式(扫描抓包状态),因此,往往需要一个按键或其他接口,来引导模块在智能配网模式和正常工作模式之间切换。或者,在某个特定阶段(例如启动初始等待20秒)作为智能配网的阶段,用户可以配网,虽可实现单不太灵活,容易带来新的问题。

  (4)一般不支持通过电脑配网

智能配网一般只提供手机或平板等移动设备的APP,很少提供电脑操作系统对应的APP,所以一般只能通过手机等移动设备配网,不能通过电脑等配网。

1.3.3微信Airkiss配网的优势和局限
1、优势

和一般的智能配网方式类似,微信Airkiss配网,不需要提供额外的人机交互接口,不占用额外的单片机资源,使用WIFI模块自带的WIFI进行配网,实现比较方便。

另外,相较于普通的智能配网方式,微信Airkiss不需要安装额外的APP,因此不需要区分Android或iOS版,直接通过微信里的扫一扫功能,就可以完成智能配网。

2、局限

(1)不能让WIFI模块随意配网到任意的路由器,配网到的路由器必须是连接互联网的路由器。

这里的局限包括两点:(1)只能配网到运行微信的手机或平板所连接的路由器(2)只能让WIFI模块针对连接上互联网的路由器进行配网,不能针对没有连接上互联网的局域网路由器配网

        因为,通过微信Airkiss配网,需要手机或平板可以连接上微信服务器也就是互联网,且对模块配网到的路由器必须是手机或平板所当前所连接的路由器。

        也就是说,微信Airkiss配网,只能配网到连接着互联网的路由器,不能对没有连上互联网的路由器进行配网。

  (2)(3)(4)参看1.3.2 一般智能配网(SmartConfig/SmartLink....)的优势和局限

        微信Airkiss和许多智能配置的原理基本相似,主要的唯一区别就是依附于微信,不需要安装APP,因此,也会有其他几点的类似局限性。

1.3.4WEB配网的优势
1、优势

通过WIFI模块内嵌的WEB服务器,来对WIFI模块进行配网,最方便、最简单、基本上没有局限性。其优势表现如下:

  (1) 只需一部支持WIFI带浏览器的设备,去连接WIFI模块自带的AP热点,就可以链接模块内嵌的WEB服务器,打开一个用来配置的WEB网页,来配网到其他路由器。

  (2) 配网简单,很容易成功(成功率和容易程度相当于串口AT等方式的直接配网)。

  (3) 可以配至的路由器或热点,可以连接着互联网,也可以不连接着互联网,可以是任意的只需要SSID+密码就可接入的网络。

  (4) 不需要在系统上添加其他接口,例如按键或串口等,只需要通过模块的现成的WIFI接口进行配网,所以适合封闭或不方便引出额外接口的场合。

  (5) 不仅仅可以通过手机来对WIFI模块进行,也可以通过电脑或其他智能终端(只要可以连WIFI可以打开网页就成)等来配网。

所以,我们认为,WEB配网方式,应该和将成为WIFI模块配网的最佳和标配方式。目前,越来越多的WIFI模块解决方案,都开始支持这种配网方式。

1.3.5市面上各种模块配网方式的优劣对比表(供参考)
配 网 方 式

优  势

局  限

直接配网

串口AT指令

1、  直接输入,配网简单,过程明了,成功率高。

1、需提供额外的人机交互接口来输入SSID和密码,例如串口线或LCD。

2、需要占用单片机系统的额外串口或其他接口资源。

SPI接口API

智能配网

普通的

智能配网( SmartConfig )

1、直接用手机配网,不需要提供额外的人机交互接口,也不占用额外的单片机主机资源。

1、手机需安装APP,iOS或Android版。

2、配网原理和过程复杂,成功率较低。

3、需要提供额外的按键或其他接口引导模块在智能配网和正常工作模式间切换。

4、一般不支持通过电脑PC配网。

微信Airkiss

1、和“普通智能配网”优势1相同。

2、不需安装APP,手机上安装有微信就可以配网。

1、只能配网到连接互联网的路由器或热点。

2/3/4、和“普通智能配网”的局限2/3/4相同。

WEB配网

WEB网页配网

1、直接输入,配网简单,过程明了,成功率高。

2、  可以配至的路由或热点,不受限制不必连互联网。

3、  不需要在系统上添加其他接口,适合封闭或不方便引出额外接口的场合。

4、  可以通过任意支持WIFI和浏览器的设备来配网,非常灵活实用。

1、需要一个支持WIFI功能和浏览器功能的设备(例如,手机或电脑PC)来配合配网。这一点基本算不上局限了。


这里有一个基于8266WIFI模块案例的演示视频,在这个模块上做的WEB服务器:    https://v.qq.com/x/page/o0523skib3s.html (请选择超清或以上查看)。
在这个视频里,可以看到,一旦连接上模块后,手机上会自动弹出一个网页,可以在里面配网并提示配网进展状态、查看连接状态,以及很多其他的功能。

<think>嗯,用户问的是关于xiaozhi-esp32不能WiFi的问题。首先,我需要明确xiaozhi-esp32是什么。可能是一个基于ESP32的开发板,可能用户在使用过程中遇到了问题。问题常见的有置模式无法启动、无法连接热点、无法保存络等。我需要分步骤来分析可能的原因和解决办法。 首先,硬件问题。ESP32的WiFi模块依赖天线和电源,如果天线接触不良或者电源不稳,可能导致无法。这时候需要检查硬件连接,尤其是天线部分是否焊接良好,电源是否稳定,比如电压是否在3.3V左右,电流是否足够。 然后是软件置。ESP32的通常有SmartConfig或AP模式。用户可能代码中逻辑有误,比如没有正确初始化WiFi库,或者超时时间设置过短。需要检查代码中的WiFi.begin()、WiFi.mode()等函数是否正确使用,是否处理了可能的错误情况。 络环境也是一个因素。如果周围WiFi信号干扰多,或者路由器设置了MAC过滤、隐藏SSID等,ESP32可能无法连接。建议用户尝试其他络,或者检查路由器设置,确保SSID和密码正确,没有特殊字符,关闭MAC过滤。 固件或库版本问题。ESP32的Arduino核心库或第三方库可能有版本兼容性问题。用户需要更新到最新版本,或者检查是否有已知的bug,可能需要回退到稳定版本。 另外,过程中常见的现象比如无法进入模式,可能是因为代码逻辑错误,比如没有正确切换STA/AP模式。比如,使用SmartConfig时需要先进入STA模式,然后等待。如果代码中没有正确设置,可能导致无法启动流程。 还有,ESP32的WiFi驱动可能存在bug,尤其是在深度睡眠后重启时,可能需要重新初始化WiFi模块。用户是否在代码中正确处理了WiFi的初始化和关闭流程? 日志输出也是排查问题的关键。建议用户开启串口调试,查看过程中的错误信息,比如连接超时、认证错误等,从而定位问题所在。 此外,用户可能误操作,比如输入错误的WiFi密码,或者路由器限制了连接数量。这时候需要确认密码正确,并检查路由器端是否有连接限制。 总结下来,可能的解决步骤包括检查硬件连接、验证代码逻辑、更新库版本、调整络环境、开启调试信息等。需要逐步排查,从简单到复杂,帮助用户解决问题。</think>关于 **xiaozhi-esp32 无法通过 WiFi **的问题,以下是逐步分析和解决方案: --- ### 一、问题定位 #### 1. 硬件检查 - **天线连接**:确认 ESP32 的 WiFi 天线(如 PCB 天线或外接天线)焊接正常,无物理损坏。 - **供电稳定性**:ESP32 需稳定 **3.3V 电源**,电流不足可能导致 WiFi 模块异常。 #### 2. 软件置 - **模式选择**: - **SmartConfig**:需手机 APP 广播 WiFi 信息,代码需包含 SmartConfig 库(如 `esp_smartconfig`)。 - **AP 模式**:ESP32 作为热点,需检查是否成功开启 AP 模式: ```c WiFi.mode(WIFI_AP); WiFi.softAP("ESP32-AP", "password"); ``` - **超时设置**:超时时间建议 ≥30 秒,避免因络延迟导致失败。 #### 3. 络环境 - **路由器兼容性**:部分路由器加密方式(如 WPA3)可能不兼容,尝试切换为 **WPA2**。 - **信号干扰**:避免 2.4GHz 频段拥挤,或尝试更换 WiFi 信道。 --- ### 二、常见错误及修复 #### 1. 无法进入模式 - **现象**:流程未触发。 - **解决**: - 检查代码是否调用了初始化函数(如 `smartconfig_start()`)。 - 确保 WiFi 模式正确(前需设置为 `WIFI_MODE_STA`)。 #### 2. 连接后断 - **现象**:成功但无法保持连接。 - **解决**: - 更新 ESP32 Arduino 核心库至最新版本(可能修复驱动问题)。 - 添加断重连逻辑: ```c WiFi.setAutoReconnect(true); WiFi.persistent(true); ``` #### 3. 信息保存失败 - **现象**:重启后需重新。 - **解决**: - 使用 Preferences 库保存 WiFi 凭证: ```c #include <Preferences.h> Preferences prefs; prefs.begin("wifi-config"); prefs.putString("ssid", ssid); prefs.putString("password", password); prefs.end(); ``` --- ### 三、调试方法 1. **串口输出日志**: - 开启调试信息,观察错误码(如 `WiFi.status()` 返回值)。 - 示例输出: ``` [WiFi] Connecting to SSID: myWiFi... [WiFi] Status: 6 (WL_DISCONNECTED) ``` 2. **简化测试代码**: - 使用官方示例代码排除自定义逻辑干扰: ```c #include <WiFi.h> void setup() { Serial.begin(115200); WiFi.begin("SSID", "PASSWORD"); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("Connected!"); } void loop() {} ``` --- ### 四、进阶排查 - **频谱分析**:使用 WiFi 分析工具(如 `WiFi Analyzer`)检查信号强度和干扰。 - **固件更新**:通过 ESP-IDF 更新 ESP32 AT 固件(部分定制固件可能存在问题)。 --- ### 五、总结步骤 1. 检查硬件供电和天线。 2. 验证代码逻辑(模式、超时、错误处理)。 3. 更新库和固件版本。 4. 通过串口日志定位具体错误阶段。 5. 简化测试环境,逐步排除干扰因素。 若仍无法解决,建议提供具体错误日志或代码片段,以便进一步分析。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值