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一键配网相关推荐

  1. ESP8266微信一键配网smartconfig,esp32可用

    ESP8266微信一键配网 第一步 下载程序 微信配网 恢复出厂设置 ESP32 接入 第一步 下载程序 简单配网例程:点击下载 配网并控制LED例程:点击下载 例程下载后,需要使用arduino i ...

  2. ESP8266_21基于ESP8266的一键配网

    ESP8266_01搭建开发环境 ESP8266_02程序的编译与下载 ESP8266_03SDK与Makefile的基本用法 ESP8266_04管脚控制与软件定时器 ESP8266_05 ESP8 ...

  3. 启明云端分享|ESP32-S3 Smartconfig一键配网

    物联网时代技术开始规模化服务于民众,方便快捷显得尤为重要,smartconfig一键配网便是一个典型案例. 智能家居/家电现阶段还处于普及阶段,由于家庭wifi网络的普及,目前普遍采用wifi与路由器 ...

  4. WIFI配网方案:1、蓝牙配网 2、WIFI自身配网 3、SmartConfig一键配网

    蓝牙配网: 顾名思义,通过蓝牙给WIFI配网,过程相对较为简单,首先设备上具有WIFI和蓝牙两种功能.然后通过手机的小程序或者APP连接产品蓝牙,连接之后发送WIFI连接所需要的SSID和PASSID ...

  5. esp8266 接收udp广播_ESP8266_21基于ESP8266的一键配网

    这一节,说一下一键配网的用法.首先说为什么需要一键配网? 原因很简单,因为设备要上网.那,给那些设备配一个屏幕和一个输入设备行不行? 不是不可以,对那些成本没要求的设备是没问题的.但物联网设备大部分都 ...

  6. ESP8266开发之旅 网络篇⑧ SmartConfig——一键配网

    授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... 共同学习成长QQ群 622368884,不喜勿 ...

  7. ESP8266 arduino 一键配网之后掉电不丢失wifi数据

    本文关注掉电丢失wifi数据和不丢失数据的异同点. 一.软硬件 所用硬件如下图,软件是arduino 1.8.9. 二.代码分析 代码如下: void smartConfig() {WiFi.mode ...

  8. ESP8266开发、ESP8266连接阿里云物联网、天猫精灵控制esp8266、esp8266一键配网、智能家居

    ESP8266开发.ESP8266连接阿里云物联网.天猫精灵控制esp8266.esp8266一键配网.智能家居 项目介绍 最近会 将arduino IDE开发ESP8266中一些值得记录得部分写下来 ...

  9. Esp8266学习之旅⑥ 了解SmartConfig与Airkiss一键配网,给8266一键配网上云端。(带Demo)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 序号 SDK版本 内容 链接 1 nonos2.0 搭建 ...

最新文章

  1. 2022-2028年全球与中国乳胶丝市场研究及前瞻分析报告
  2. 异步调用WCF的方法需要小心的地方
  3. R语言-安装使用指南
  4. Lync Server 2010迁移至Lync Server 2013故障排错Part1:缺少McsStandalone.msi
  5. Tensorflow【实战Google深度学习框架】预训练与微调含代码(看不懂你来打我)
  6. TreeSet的定制排序
  7. nova 之compute服务
  8. 二次型在一点的_EP型隐形车衣除胶剂的使用方法,为什么不建议用柏油清洗剂...
  9. 前端开发框架整理(一些记录给自己看的)
  10. C++之找不到libboost_system.so.1.76库解决
  11. 爬虫实例十 XX酒店详情信息
  12. dbeaver生成结构图_DBeaver的简易操作和建议(一个神奇的数据库操作软件)
  13. DELPHI获取硬盘、CPU、网卡序列号
  14. U盘插入苹果电脑后被分区,在Windows系统用不了怎么办。
  15. firefox 各个版本都在这里
  16. n子棋,你能下赢电脑吗,来玩玩吧
  17. excel就绪筛选模式_Excel自动筛选器显示筛选器模式
  18. 如何巧妙使用7段码数码管?
  19. 苹果CMS v10模板 - JOEOEL模板/苹果CMS手机端模板
  20. BestCoder Round #7-A,B,C

热门文章

  1. 靠一碗面一年三轮融资受资本热捧,张拉拉真的高枕无忧?
  2. 第二章 基本Bean的装载
  3. [python]百度AI接口实现人像抠图换背景色
  4. 【转】汇编中的test和cmp指令
  5. C++:未定义引用静态类成员?
  6. Chapter3:根轨迹法(上)
  7. c语言程序表达语句,《C语言程序设计》讲稿.doc
  8. 从蓝桥杯丢盔卸甲,来学一点javaScript
  9. 第一周作业(零基础)
  10. 主流电源的调光协议分析及应用说明