ESP32 와이파이의 전반적인 내용은 여기 사이트에 있고
https://randomnerdtutorials.com/esp32-useful-wi-fi-functions-arduino/
ESP32 Useful Wi-Fi Library Functions (Arduino IDE) | Random Nerd Tutorials
ESP32 Wi-Fi Functions: scan networks, connect to a network, connection strength, connection status, reconnect, Wi-Fi status and modes, IP address, static IP address and more.
randomnerdtutorials.com
위 사이트에서 와이파이 재연결에 대한 내용은 아래 사이트에 정리되어있다.
https://randomnerdtutorials.com/solved-reconnect-esp32-to-wifi/
[SOLVED] Reconnect ESP32 to Wi-Fi Network After Lost Connection | Random Nerd Tutorials
Reconnect your ESP32 to a Wi-Fi network after losing the connection. Reconnect when the ESP32 loses Wi-Fi signal, router restarts, or other situations.
randomnerdtutorials.com
여기서
1. 시간 간격과 연결 상태를 비교하여 재연결
2. 와이파이 이벤트 핸들러를 통해 재연결
로 2가지 방식이 있다.
첫번째 방법은
WiFi.reconnect(); 함수를 사용하는데
loop 문을 계속 돌리면서
시간 개념(interval)이 들어가
메모리 소모가 약간 있을 수 있다.
두번째 방법은
변화를 감지하면 이벤트 핸들러가 호출되어서
자동으로 작동하기 때문에
loop에서 계산될 필요가 없다.
보드 : ESP32 Dev Module
2번째 방법에 감동하여 아주 약간만 손본 코드이다.
#include <WiFi.h>
const char* ssid = ""; //아이디
const char* password = ""; //비밀번호
void WiFiStationConnected(WiFiEvent_t event, WiFiEventInfo_t info){
Serial.println("Connected to AP successfully!");
}
void WiFiGotIP(WiFiEvent_t event, WiFiEventInfo_t info){
Serial.println("WiFi connected");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
}
void WiFiStationDisconnected(WiFiEvent_t event, WiFiEventInfo_t info){
Serial.println("Disconnected from WiFi access point");
Serial.print("WiFi lost connection. Reason: ");
Serial.println(info.disconnected.reason);
Serial.println("Trying to Reconnect");
WiFi.begin(ssid, password);
}
void WiFionEvent(){
WiFi.onEvent(WiFiStationConnected, SYSTEM_EVENT_STA_CONNECTED);
WiFi.onEvent(WiFiGotIP, SYSTEM_EVENT_STA_GOT_IP);
WiFi.onEvent(WiFiStationDisconnected, SYSTEM_EVENT_STA_DISCONNECTED);
}
void setup(){
Serial.begin(115200);
WiFi.disconnect(true);
delay(1000);
WiFionEvent();
/* Remove WiFi event
Serial.print("WiFi Event ID: ");
Serial.println(eventID);
WiFi.removeEvent(eventID);*/
WiFi.begin(ssid, password);
Serial.println("Wait for WiFi... ");
}
void loop(){
}
결과물

'Arduino' 카테고리의 다른 글
| [Arduino] 아두이노 기울기 센서 (tilt sensor) (0) | 2021.05.31 |
|---|---|
| [Arduino] NodeMCU(와이파이 미사용) + RGB led 테스트 - platformio ide (0) | 2021.05.06 |
| [Arduino] 아두이노 - Cds 조도센서 밝기에 따른 LED 제어 (0) | 2021.04.20 |
| [Arduino] 아두이노 - Pull up 저항, 내부 풀업 저항 원리, 푸시 버튼 (0) | 2021.04.19 |
| [Arduino] 아두이노 Cds 조도센서 (0) | 2021.04.19 |