esp8266是一个价廉物美功能多的wifi模块,其中的esp8266-01大概10软妹子左右,带有串口通讯和2个IO口,可以用arduino编译烧录,是居家旅行杀人灭口,不对,廉价物联网必备组件。
第一次用esp8266的时候是手动写入ssid和密码的,总觉得这个太不智慧了,于是发现了smartconfig模式,可以通过手机上面的一键配置联网。
用的是arduino的附加开发板:http://wechat.doit.am/package_esp8266com_index.json
各种度娘之后得出结论,esp8266在自动连接一次以后断电就会自动重连,无需手工保存ssid和密码,下面是代码:
#include <ESP8266WiFi.h>
bool autoConfig()
{
WiFi.begin();
for (int i = 0; i < 20; i++)
{
int wstatus = WiFi.status();
if (wstatus == WL_CONNECTED)
{
Serial.println("AutoConfig Success");
Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str());
Serial.printf("PSW:%s\r\n", WiFi.psk().c_str());
WiFi.printDiag(Serial);
return true;
//break;
}
else
{
Serial.print("AutoConfig Waiting......");
Serial.println(wstatus);
delay(1000);
}
}
Serial.println("AutoConfig Faild!" );
return false;
//WiFi.printDiag(Serial);
}
void smartConfig()
{
WiFi.mode(WIFI_STA);
Serial.println("\r\nWait for Smartconfig");
WiFi.beginSmartConfig();
while (1)
{
Serial.print(".");
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;
}
delay(1000); // 这个地方一定要加延时,否则极易崩溃重启
}
}
void setup()
{
Serial.begin(115200);
if (!autoConfig())
{
Serial.println("Start module");
smartConfig();
}
}
void loop()
{
delay(1000);
Serial.println("loop");
}
手机端用esptouch就行,appstore里免费有下载,安卓的应该也有类似软件。