100 lines
2.7 KiB
C++
100 lines
2.7 KiB
C++
/* Wi-Fi STA Connect and Disconnect Example
|
|
|
|
This example code is in the Public Domain (or CC0 licensed, at your option.)
|
|
|
|
Unless required by applicable law or agreed to in writing, this
|
|
software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
|
CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
*/
|
|
#include <WiFi.h>
|
|
|
|
const char* ssid = "your-ssid";
|
|
const char* password = "your-password";
|
|
|
|
int btnGPIO = 0;
|
|
int btnState = false;
|
|
|
|
void setup()
|
|
{
|
|
Serial.begin(115200);
|
|
delay(10);
|
|
|
|
// Set GPIO0 Boot button as input
|
|
pinMode(btnGPIO, INPUT);
|
|
|
|
// We start by connecting to a WiFi network
|
|
// To debug, please enable Core Debug Level to Verbose
|
|
|
|
Serial.println();
|
|
Serial.print("[WiFi] Connecting to ");
|
|
Serial.println(ssid);
|
|
|
|
WiFi.begin(ssid, password);
|
|
// Auto reconnect is set true as default
|
|
// To set auto connect off, use the following function
|
|
// WiFi.setAutoReconnect(false);
|
|
|
|
// Will try for about 10 seconds (20x 500ms)
|
|
int tryDelay = 500;
|
|
int numberOfTries = 20;
|
|
|
|
// Wait for the WiFi event
|
|
while (true) {
|
|
|
|
switch(WiFi.status()) {
|
|
case WL_NO_SSID_AVAIL:
|
|
Serial.println("[WiFi] SSID not found");
|
|
break;
|
|
case WL_CONNECT_FAILED:
|
|
Serial.print("[WiFi] Failed - WiFi not connected! Reason: ");
|
|
return;
|
|
break;
|
|
case WL_CONNECTION_LOST:
|
|
Serial.println("[WiFi] Connection was lost");
|
|
break;
|
|
case WL_SCAN_COMPLETED:
|
|
Serial.println("[WiFi] Scan is completed");
|
|
break;
|
|
case WL_DISCONNECTED:
|
|
Serial.println("[WiFi] WiFi is disconnected");
|
|
break;
|
|
case WL_CONNECTED:
|
|
Serial.println("[WiFi] WiFi is connected!");
|
|
Serial.print("[WiFi] IP address: ");
|
|
Serial.println(WiFi.localIP());
|
|
return;
|
|
break;
|
|
default:
|
|
Serial.print("[WiFi] WiFi Status: ");
|
|
Serial.println(WiFi.status());
|
|
break;
|
|
}
|
|
delay(tryDelay);
|
|
|
|
if(numberOfTries <= 0){
|
|
Serial.print("[WiFi] Failed to connect to WiFi!");
|
|
// Use disconnect function to force stop trying to connect
|
|
WiFi.disconnect();
|
|
return;
|
|
} else {
|
|
numberOfTries--;
|
|
}
|
|
}
|
|
}
|
|
|
|
void loop()
|
|
{
|
|
// Read the button state
|
|
btnState = digitalRead(btnGPIO);
|
|
|
|
if (btnState == LOW) {
|
|
// Disconnect from WiFi
|
|
Serial.println("[WiFi] Disconnecting from WiFi!");
|
|
// This function will disconnect and turn off the WiFi (NVS WiFi data is kept)
|
|
if(WiFi.disconnect(true, false)){
|
|
Serial.println("[WiFi] Disconnected from WiFi!");
|
|
}
|
|
delay(1000);
|
|
}
|
|
}
|