龙空技术网

ESP8266 SmartConfig——一键配网

arduino的程序世界 222

前言:

目前姐妹们对“c udp广播”大致比较关心,朋友们都需要了解一些“c udp广播”的相关资讯。那么小编同时在网上汇集了一些关于“c udp广播””的相关文章,希望各位老铁们能喜欢,朋友们一起来学习一下吧!

还记得博主几天前发的一篇文章,通过一键配网,让ESP01S模块自动配网,连接当前WiFi热点的文章吗?很神奇是不是?,其实一点都不难,今天我们来了解一下相关内容。

smartconfig工作原理

所谓SmartConfig就是手机App端发送包含WIFI用户名以及密码的UDP广播包,智能终端(开启了sniffer混杂模式)的WIFI芯片可以接收到该UDP包,只要知道UDP包的组织形式,就可以通过接收到的UDP包解密出WIFI用户名密码,然后智能硬件配置收到的用户名密码到指定的WIFI AP上。

简单操作步骤如下:8266 端作为station,进入smartconfig, 等待手机端发出的用户名和密码。手机端把填写当前网络的密码通过UDP广播;8266 获取到信息之后推出smartconfig配置,连接网络;smartconfig支持库

WiFi.beginSmartConfig();//启动配网模式源码:/** * 启动 SmartConfig,SmartConfig需要处于STA工作模式; */bool ESP8266WiFiSTAClass::beginSmartConfig() { //SmartConfig已经开启了 if(_smartConfigStarted) { return false; } //开启STA模式 if(!WiFi.enableSTA(true)) { // enable STA failed return false; } //调用真正的smartconfig_start,并设置了_smartConfigCallback 回调函数 if(smartconfig_start(reinterpret_cast<sc_callback_t>(&ESP8266WiFiSTAClass::_smartConfigCallback), 1)) { _smartConfigStarted = true; _smartConfigDone = false; return true; } return false;}WiFi.smartConfigDone();//是否完成配网源码:略WiFi.stopSmartConfig();//不解释源码:略

实例:

#include <ESP8266WiFi.h>void smartConfig(){ WiFi.mode(WIFI_STA); Serial.println("\r\nWait for Smartconfig"); delay(2000); // 等待配网 WiFi.beginSmartConfig(); while (1) { Serial.print("."); delay(500); if (WiFi.smartConfigDone()) { Serial.println("SmartConfig Success"); Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str()); Serial.printf("PSW:%s\r\n", WiFi.psk().c_str()); WiFi.setAutoConnect(true); // 设置自动连接 break; } } Serial.println(""); Serial.println("WiFi connected");  Serial.println("IP address: "); Serial.println(WiFi.localIP());}void setup(){ Serial.begin(115200); smartConfig();}void loop(){ delay(100); Serial.println("loop");}

然后使用ESP8266提供的App ESPTouch工具,在手机上进行操作。找不到app的留邮箱。

标签: #c udp广播