ESP8266 SmartConfig一键配网
ESP8266 SmartConfig一键配网
Wi-Fi 配网,指由外部向 Wi-Fi 设备提供 SSID 和密码(PSW),让 Wi-Fi 设备可以连接指定的热点或路由器,并加入后者所建立的 Wi-Fi 网络。
对于具备丰富人机界面包括屏幕/键盘的设备,例如电脑或手机,可以直接输入 SSID/PSW 进行连接。
对于不具备丰富人机交互界面的物联网 Wi-Fi 设备,例如智能灯、扫地机器人等,则可以借助手机等智能设备,以某种配网方式将 SSID/PSW 传递该设备。
1.基本原理
1.设备进入 Wi-Fi 混杂模式(promiscuous mode)以监听捕获周围的 Wi-Fi 报文。由于设备暂未联网,且 Wi-Fi 网络的数据帧已通过加密,设备无法获取 payload 的内容,但可以获取报文的某些特征数据,例如每个报文的长度。同时对于某些数据帧,例如 UDP 的广播包或多播包,其报文的帧头结构比较固定,较容易识别。
2.此时在手机 App 或者小程序侧,即可通过发送 UDP 的广播包或多播包,并利用报文的特征,例如长度变化进行编码。
3.将目标 Wi-Fi 路由器的 SSID/PSW 字符以约定的编码方式发送出去,设备端在捕获到 UDP 报文后,按约定的方式进行解码,即可得到目标 Wi-Fi 路由器的相关信息并进行联网。
2.配网流程
SmartConfig 方式配网,每个厂商的编码方式和报文选择上有自己的协议,对于 ESP8266,采用的协议是乐鑫 ESP-TOUCH协议。
基于该协议,设备端在连接 Wi-Fi 路由器成功后,将会告知手机端自己的 IP 地址。
此时手机端可以通过数据通道,例如 TCP/UDP 通讯将后台提供的配网 Token 发送给设备,并由设备转发至物联网后台,依据 Token 进行设备绑定。
目前腾讯连连小程序已支持采用 ESP-TOUCH 协议进行 SmartConfig 配网,并提供相应的 小程序 SDK。
- SmartConfig 方式配网及设备绑定的示例流程图如下:
3.ESP8266 SmartConfig模式配置
ESP8266指令集中就有SmartConfig模式配置,该模式仅支持在 ESP8266 单 station 模式下调用。
AT+CWSTARTSMART – 开启 SmartConfig
//⽆无论 SmartConfig 成功与否,都请调⽤用 “AT+CWSTOPSMART”释放快连占⽤的内存
AT+CWSTOPSMART – 停⽌止 SmartConfig
3.1程序示例
/*开启Smart模式*/
u8 ESP8266_SetSmartMode(u8 *server_ip,u16 server_port)
{char buff[200];printf("进入smart配网模式\r\n");u16 time1=0,time2=0;;if(Esp8266_SendCmdCheckStat("AT+CWSTARTSMART\r\n","OK"))return 1;//开启Smart失败usart3_cnt=0;usart3_flag=0;while(1){if(usart3_flag){usart3_rx_buff[usart3_cnt]='\0';printf("rx:%s\r\n",usart3_rx_buff);if(strstr((char *)usart3_rx_buff,"smartconfig connected wifi"))//连接热点成功{usart3_cnt=0;usart3_flag=0;printf("2.关Smart模式\r\n");if(Esp8266_SendCmdCheckStat("AT+CWSTOPSMART\r\n","OK"))return 2; break;}else{usart3_cnt=0;usart3_flag=0;memset(usart3_rx_buff,0,sizeof(usart3_rx_buff));}}Delay_Ms(1);time1++;time2++;if(time2>=100){LED1=!LED1;}if(time1>=65530)return 3;//超时退出}/*连接服务器*/if(Esp8266_SendCmdCheckStat("AT+CIPMUX=0\r\n","OK"))return 4;; snprintf(buff,sizeof(buff),"AT+CIPSTART=\"TCP\",\"%s\",%d\r\n",server_ip,server_port);//printf("buff:%s\r\n",buff);printf("9.连接服务器\r\n");if(Esp8266_SendCmdCheckStat(buff,"OK"))return 5; printf("配置透传模式\r\n");if(Esp8266_SendCmdCheckStat("AT+CIPMODE=1\r\n","OK\r\n"))return 6; printf("开始发送数据\r\n");if(Esp8266_SendCmdCheckStat("AT+CIPSEND\r\n",">"))return 7; return 0;
}
4.功能实现
初始化硬件,ESP8266模式配置,连接物联网平台。
int main()
{int i=0;u8 stat=0;u32 time=0;u16 cnt=0;float temp;Beep_Init();//蜂鸣器初始化Led_Init();//LED初始化Key_Init();//按键初始化Usartx_Init(USART1,115200,72);Usartx_Init(USART3,115200,36);TIMx_Init(TIM2,72,20000);//通过定时器2辅助串口接收数据,20msTIMx_Init(TIM4,72,20000);//通过定时器2辅助串口接收数据,20msDS18B20_Init();
// RTC_Init();//RTC初始化printf("初始化完成\r\n");while(1){stat=Esp8266_STA_TCPclinet_Init((u8 *)WIFI_NAME,(u8 *)WIFI_PASSWORD,(u8 *)SERVER_IP,SERVER_PORT);if(stat==0)break;if(stat==6)i++;if(i>=3){stat=ESP8266_SetSmartMode((u8 *)SERVER_IP,SERVER_PORT);if(stat==0)break;}printf("stat=%d\r\n",stat); }printf("服务器连接成功\r\n");while(1){MQTT_Init();stat=MQTT_Connect(ClientID,Username,Password);if(stat==0)break;Delay_Ms(500);printf("正在连接....\r\n");}printf("连接成功\r\n");stat=MQTT_SubscribeTopic(SET_TOPIC,0,1);if(stat)printf("订阅失败\r\n");else printf("订阅成功\r\n"); while(1){if(usart3_flag){for(i=0;i<usart3_cnt;i++){printf("%c",usart3_rx_buff[i]);}printf("\r\n");usart3_cnt=0;usart3_flag=0;}Delay_Ms(1);time++;cnt++;if(time>=5000){time=0;MQTT_SentHeart();//发送心跳包}if(cnt>=5000){cnt=0;temp=DS18B20_GetTemp()*0.0625;sprintf(mqtt_message,"{\"method\":\"report\",\"clientToken\":\"123\",\"params\":{\"LED1\":1,\"temp\":%.2f,\"L\":356}}",temp);//温度MQTT_PublishData(POST_TOPIC,mqtt_message,0);}}
}
- EspTouch工具下载: ESP-TOUCH
ESP-TOUCH 协议采用的是 Smart Config(智能配置)技术来帮助用户将嵌入了 ESP8266EX 的设备连接至 Wi-Fi 网络。用户只需在手机上进行简单操作即可实现智能配置。
采用由乐鑫科技提供的 ESP-TOUCH应用APP,将WIFI热点信息通过smartConfig模式传输给ESP8266模块。最终实现设备上网,连接物联网平台。
首先需要将自己的手机连接上目标热点,然后打开ESP-TOUCH软件,输入目标热点的密码,然后等待ESP8266响应。
串口终端调试信息: WIFI模式配置、进入smartConfig模式获取WIFI热点信息,连接物联网平台。
物联网平台连接成功,微信小程序端查看云端推送的温度数据和光照强度,可通过开关远程控制目标设备。
关于服务器连接请参考:ESP8266连接腾讯云
工程示例:https://download.csdn.net/download/weixin_44453694/18775098
ESP8266 SmartConfig一键配网相关推荐
- ESP8266微信一键配网smartconfig,esp32可用
ESP8266微信一键配网 第一步 下载程序 微信配网 恢复出厂设置 ESP32 接入 第一步 下载程序 简单配网例程:点击下载 配网并控制LED例程:点击下载 例程下载后,需要使用arduino i ...
- ESP8266_21基于ESP8266的一键配网
ESP8266_01搭建开发环境 ESP8266_02程序的编译与下载 ESP8266_03SDK与Makefile的基本用法 ESP8266_04管脚控制与软件定时器 ESP8266_05 ESP8 ...
- 启明云端分享|ESP32-S3 Smartconfig一键配网
物联网时代技术开始规模化服务于民众,方便快捷显得尤为重要,smartconfig一键配网便是一个典型案例. 智能家居/家电现阶段还处于普及阶段,由于家庭wifi网络的普及,目前普遍采用wifi与路由器 ...
- WIFI配网方案:1、蓝牙配网 2、WIFI自身配网 3、SmartConfig一键配网
蓝牙配网: 顾名思义,通过蓝牙给WIFI配网,过程相对较为简单,首先设备上具有WIFI和蓝牙两种功能.然后通过手机的小程序或者APP连接产品蓝牙,连接之后发送WIFI连接所需要的SSID和PASSID ...
- esp8266 接收udp广播_ESP8266_21基于ESP8266的一键配网
这一节,说一下一键配网的用法.首先说为什么需要一键配网? 原因很简单,因为设备要上网.那,给那些设备配一个屏幕和一个输入设备行不行? 不是不可以,对那些成本没要求的设备是没问题的.但物联网设备大部分都 ...
- ESP8266开发之旅 网络篇⑧ SmartConfig——一键配网
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... 共同学习成长QQ群 622368884,不喜勿 ...
- ESP8266 arduino 一键配网之后掉电不丢失wifi数据
本文关注掉电丢失wifi数据和不丢失数据的异同点. 一.软硬件 所用硬件如下图,软件是arduino 1.8.9. 二.代码分析 代码如下: void smartConfig() {WiFi.mode ...
- ESP8266开发、ESP8266连接阿里云物联网、天猫精灵控制esp8266、esp8266一键配网、智能家居
ESP8266开发.ESP8266连接阿里云物联网.天猫精灵控制esp8266.esp8266一键配网.智能家居 项目介绍 最近会 将arduino IDE开发ESP8266中一些值得记录得部分写下来 ...
- Esp8266学习之旅⑥ 了解SmartConfig与Airkiss一键配网,给8266一键配网上云端。(带Demo)
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 序号 SDK版本 内容 链接 1 nonos2.0 搭建 ...
最新文章
- 2022-2028年全球与中国乳胶丝市场研究及前瞻分析报告
- 异步调用WCF的方法需要小心的地方
- R语言-安装使用指南
- Lync Server 2010迁移至Lync Server 2013故障排错Part1:缺少McsStandalone.msi
- Tensorflow【实战Google深度学习框架】预训练与微调含代码(看不懂你来打我)
- TreeSet的定制排序
- nova 之compute服务
- 二次型在一点的_EP型隐形车衣除胶剂的使用方法,为什么不建议用柏油清洗剂...
- 前端开发框架整理(一些记录给自己看的)
- C++之找不到libboost_system.so.1.76库解决
- 爬虫实例十 XX酒店详情信息
- dbeaver生成结构图_DBeaver的简易操作和建议(一个神奇的数据库操作软件)
- DELPHI获取硬盘、CPU、网卡序列号
- U盘插入苹果电脑后被分区,在Windows系统用不了怎么办。
- firefox 各个版本都在这里
- n子棋,你能下赢电脑吗,来玩玩吧
- excel就绪筛选模式_Excel自动筛选器显示筛选器模式
- 如何巧妙使用7段码数码管?
- 苹果CMS v10模板 - JOEOEL模板/苹果CMS手机端模板
- BestCoder Round #7-A,B,C