ESP8266_ESP32 Smartconfig一键配网功能

目录

SmartConfig一键配网

SmartConfigTM 是由 TI 开发的配网技术,用于将新的 Wi-Fi 设备连接到 Wi-Fi 网络。它使用移动应用程序将无线网凭据从智能手机或平板电脑端广播给未配网的 Wi-Fi 设备。这项技术的优势在于,设备无需直接获知 AP 的 SSID 或密码,而是通过智能手机获取。这对于没有用户界面的无头设备和系统而言十分重要。目前, ESP32 支持三种类型的 SmartConfig 配网: Airkiss、ESPTouch 和 ESPTouch v2。ESPTouch v2 自 SmartConfig v3.0 (SmartConfig 的版本可以从 esp_smartconfig_get_version() 获取)起开始支持,ESPTouch v2 和 vESPTouch 采用完全不同的配网算法,因此配网速度更快。此外,ESPTouch v2 还增加了 AES 加密功能和自定义数据字段。

基本原理

设备进入 Wi-Fi 混杂模式(promiscuous mode)以监听捕获周围的 Wi-Fi 报文。由于设备暂未联网,且 Wi-Fi 网络的数据帧已通过加密,设备无法获取 payload 的内容,但可以获取报文的某些特征数据,例如每个报文的长度。同时对于某些数据帧,例如 UDP 的广播包或多播包,其报文的帧头结构比较固定,较容易识别。

此时在手机 App 或者小程序端,即可通过发送 UDP 的广播包或多播包,并利用报文的特征,例如长度变化进行编码。

将目标 Wi-Fi 路由器的 SSID/PSW 字符以约定的编码方式发送出去,设备端在捕获到 UDP 报文后,按约定的方式进行解码,即可得到目标 Wi-Fi 路由器的相关信息并进行联网。

设备绑定流程

SmartConfig 方式配网,每个厂商的编码方式和报文选择上有自己的协议,文章里的 ESP8266和ESP32采用的协议是乐鑫 ESP-TOUCH协议。基于该协议,设备端在连接 Wi-Fi 路由器成功后,将会告知手机端自己的 IP 地址。此时手机端可以通过数据通道,例如 TCP/UDP 通讯将后台提供的配网 Token 发送给设备,并由设备转发至物联网后台,依据 Token 进行设备绑定。

简单来说,smartconfig一键配网就是ESP8266/32打开配网模式,手机连接WIFI(必须是2.4GWIFI )后打开乐鑫软件APP进入ESPTOUCH,输入密码,点击确认后手机会往外进行发送报文,设备接收到报文后进行连接WiFi,获取ip地址。

ESP8266/ESP32 SmartConfig配网

AT指令配置方式

ESP8266/ESP32两个通过smartconfig配网的方法是相同,只是烧录的固件不同。

ESP8266模组烧录的是乐鑫的ESP-WROOM-02-AT-V2.2.2.0固件,可直接从乐鑫的官网: ESP8266固件进行获取,压缩包里面都会有文档进行说明这个固件是如何使用以及AT指令集。

ESP32模组烧录的是乐鑫的ESP32-WROOM-32-AT-V3.4.0.0固件,可直接从乐鑫的官网: ESP32固件进行获取,压缩包里面都会有文档进行说明这个固件是如何使用以及AT指令集。

烧录对应固件后,发送以下指令打开配网

javascript 复制代码
AT+CWMODE=1   //设置WiFi模式为单Station模式
AT+CWSTARTSMART  //开启 SmartConfig

手机端打开ESPTOUCH软件,进入ESPTOUCH界面,然后输入密码点击确认后,就会开始向外部发送报文了。( ESPTOUCH软件下载地址

过一会后就可以看到ESP8266/32设备配网成功了。

软件页面:

串口页面:

出现Smartconfig connected wifi则表示连接成功。

Arduino程序配置方式

官方在Arduino IDE中,同样为ESP32提供了SmartConfig的示例,实际使用开发可以修改移植到自己的项目中,下面我们来测试一下实际效果。

下载好ESP32的开发环境,我们可以看官方已经为我们提供了SmartConfig的例程,直接打开进行烧录就可以。

烧录完成后我们打开串口输出,查看连接现象,操作和上面的是一样的,这里就不多说了,直接看连接成功的输出结果:

这里输出获取到的IP地址则已经连接上了。

总结

  1. 无论 SmartConfig 成功与否,都请在执行其他命令之前调用AT+CWSTOPSMART 释放 SmartConfig 占用的内存。
  2. 串口的接线两个单片机各有不同,可以看对应固件的用户指南进行接线。

相关推荐
ling91317 小时前
微信小程序通过mqtt控制esp32
mqtt·微信小程序·小程序·esp32·巴法云
Freddy_Ssc4 天前
ESP32之阿里云IoT物模型通信(MQTT-TLS连接通信),基于VSCode环境下的ESP-IDF开发(附源码)
vscode·物联网·阿里云·esp32·物模型
宁子希5 天前
如何将 ESP32 快速接入高德、心知、和风天气API 获取天气信息
android·单片机·嵌入式硬件·esp32
mingupup6 天前
ESP32+Arduino入门(三):连接WIFI获取当前时间
esp32·arduino
~照猫画虎~13 天前
ESP32系列,IDF官方实例——外设:通用GPIO
esp32·esp idf
charlie11451419117 天前
从0开始的构建的天气预报小时钟(基于STM32F407ZGT6,ESP8266 + SSD1309)——第2章——构建简单的ESP8266驱动
stm32·单片机·物联网·学习·c·esp8266
余衫马23 天前
从零到一:ESP32与豆包大模型的RTC连续对话实现指南
esp32·实时音视频·智能对话·esp-adf·sparkbot
公子无缘1 个月前
【嵌入式】复刻SQFMI开源的Watchy墨水屏电子表——(2)软件部分
c语言·嵌入式硬件·物联网·开源·esp32
古希腊掌握嵌入式的神1 个月前
ESP32学习 -从STM32工程架构进阶到ESP32架构
stm32·学习·架构·esp32