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. 串口的接线两个单片机各有不同,可以看对应固件的用户指南进行接线。

相关推荐
flushddd2 天前
GOOUUU ESP32-S3-CAM 果云科技开发板开发指南(二)(超详细!)Vscode+espidf 摄像头拍摄视频实时传输到LCD,文末附源码
vscode·科技·单片机·物联网·esp32
FightingFreedom9 天前
GPIO交换矩阵和IO_MUX
单片机·嵌入式硬件·esp32·arduino·esp32s3
冰羽IOX14 天前
Arduino IDE离线安装ESP8266板管理工具
esp8266·arduino ide
Ronin-Lotus15 天前
嵌入式硬件篇---ESP32稳压板
嵌入式硬件·esp32·稳压板
sakabu15 天前
ESP32 外设驱动开发指南 (ESP-IDF框架)——GPIO篇:基础配置、外部中断与PWM(LEDC模块)应用
笔记·单片机·学习·esp32
湮雨塵飛16 天前
1. ESP开发之实体按键(KEYPAD&BUTTON)控制LVGL控件
esp32·lvgl·实体按键
Ronin-Lotus18 天前
嵌入式硬件篇---ESP32驱动异常
嵌入式硬件·esp32
Ronin-Lotus18 天前
程序代码篇---数据包解析
python·esp32·数据包解析
IT项目分享19 天前
ESP32 BLE开发快速入门:用MicroPython实现手机与硬件通信
esp32·micropython·it项目网
Ronin-Lotus20 天前
嵌入式硬件篇---驱动板
单片机·嵌入式硬件·esp32·驱动板