#include <ESP8266WiFi.h>
uint8_t FlashPin = 0; //Flash脚
uint8_t LedPin = 2 ; //Led脚
int count = 0;
void setup() {
Serial.begin(115200); //打开串口
pinMode(FlashPin, INPUT);//设置管脚为输入
pinMode(LedPin, OUTPUT);
if (!autoConfig())
{
Serial.println("Start module");
smartConfig();
}
digitalWrite(LedPin,HIGH);
}
void loop() {
while(digitalRead(FlashPin) == LOW) {
delay(200);
count ++;
if (count >= 20) { //>=4s
digitalWrite(LedPin,LOW); delay(300);
digitalWrite(LedPin,HIGH);delay(100);
digitalWrite(LedPin,LOW); delay(300);
digitalWrite(LedPin,HIGH);
ESP.eraseConfig();
delay(1000);
ESP.reset();
ESP.restart();
//Serial.println("Long Key");
break;
}
}
count = 0;
digitalWrite(LedPin,HIGH);
delay(200);//nothing to do just delay
}
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); // 这个地方一定要加延时,否则极易崩溃重启
}
}