ESP8266 ArduinoIDE的探索之旅 5.SmartConfig的使用
在智能IOT商品的应用中一定程度上来说是不可能将要接入的WiFi的SSID和密码固化在产品的内部的,但是不是每个客户都会通过代码去修改接入设备的无线网络的帐号密码,所以应运而生了两种配网的方式:
- 在首次上电的时候,设备会以AP(结点)的模式出现,客户连接上这个AP之后就可以进行基础的设置以及搜索连接需要使用的无线网络的SSID和密码。在设置完成之后设备会重启并且自动的连接到设置的无线网络中。
- 各大芯片厂商基于802.11协议制定的一键配网方案,设备开机时处于混杂模式监听当前网络中的所有报文;手机APP将SSID和密码编码到UDP报文中,通过广播包或组播报发送,智能硬件接收到UDP报文后解码,得到正确的SSID和密码,然后主动连接指定SSID的路由,完成连接。
下表是我查的各大厂商推出的主流的一键配网的方式:
|
厂商 |
芯片方案 |
技术名称 |
发包方式 |
1 |
TI |
CC3200 |
SmartConfig |
往某一固定IP发udp包 |
2 |
高通 |
QCA4004/QCA4002 |
SmartConnection |
|
3 |
联发科MTK |
MTK7681 |
SmartConnection |
组播地址编码 |
4 |
MARVELL |
MC200+8801/MW300 |
EasyConnect |
组播地址编码 |
5 |
Reltek |
AMEBA |
SimpleConfig |
组播地址编码 |
6 |
乐鑫 |
Esp8266 |
SmartConfig |
组播,通过长度编码 |
7 |
新案线 |
NL6621 |
SmartConfig |
组播地址编码 |
8 |
|
AirKiss |
全网广播,通过长度编码 |
本文主要讲解的是乐鑫的一键配网和微信的一键配网的方式。
ESP8266是支持乐鑫的SmartConfig一键配网协议的,今天我们也是主要去讲解使用NodeMCU来实现SmartConfig。首先我们需要做以下准备:
- 一台有Arduino IDE并且安装了ESP8266函数库的电脑(不会的话看我的博文//天坑)
- 一块ESP8266(可以是ESP12s、ESP01都是可以的)
#include "ESP8266WiFi.h"
unsigned char num = 0;
void smartConfig()
{
WiFi.mode(WIFI_STA);
Serial.println("Waitting SmartConfig!");
WiFi.beginSmartConfig(); //开启SmartConfig服务
while(1)
{
Serial.print(".");
num++;
if(num >= 15)
{
Serial.print("\n");
num = 0;
}
delay(500);
if(WiFi.smartConfigDone()) //连接成功标志
{
Serial.println("SmartConfig Success!");
delay(2000);
Serial.println();
Serial.printf("SSID:%s\t\n",WiFi.SSID().c_str()); //显示WIFi名
Serial.printf("PASSWORD:%s\t\n",WiFi.psk().c_str()); //显示WIFi密码
delay(2000);
Serial.printf("IP address: ");
Serial.println(WiFi.localIP());
break;
}
else //连接失败后的提示
println("SmartConfig,Please reboot ESP8266 and try agin!")
}
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Serial is ok!");
smartConfig();
}
void loop() {
// put your main code here, to run repeatedly:
}
注:一定要注意在获取本机IP的时候一定要在连接成功之后间隔一段时间在获取,因为AP设备通过DHCP给ESP8266分配IP地址是需要一定的时间的,所以要延时一段时间(一般在网络情况良好的时候获取IP大概需要2秒左右)。
程序打好之后就可以使用我们的手机进行一键配网了,有两种方式一种是下载安信可的APP(SmartConfigDebugger),另外一种是使用微信公众号(就是AirKiss)下面我们对其分别进行讲解:
- 如果使用APP软件的话可以通过github进行下载https://github.com/EspressifAppAndroid和IOS版本都有的(安卓APP在releases\apk目录下自行安装)。
- 如果使用微信的话可以关注“安信可科技”公众号,在公众号的下方有WIFI配置按照提示操作即可。
将NodeMCU开发板上电然后将手机接入目标网路 ,在相应的框框中输入网络密码点击连接如果连接成功开发板会串口打印如下信息:
至此,ESP8266通过SmartConfig连接网络也就成功了。后续会写ESP8266保存SmartConfig配网的账号密码信息到EEPROM并且在需要时自动切换的教程!