WiFiMulti를 탑재한 ESP32: 가장 강력한 Wi-Fi 네트워크에 연결하세요
WiFiMulti를 사용하여 ESP32를 활용하는 방법을 알아보세요 . WiFiMulti를 사용하면 여러 네트워크(SSID/비밀번호 조합)를 등록할 수 있습니다. ESP32 는 신호 강도(RSSI)가 가장 강한 Wi-Fi 네트워크에 연결합니다. 연결에 실패하면 목록에서 다음 네트워크에 연결을 시도합니다.
WiFiMulti는 ESP32 IoT 프로젝트에서 보드가 여러 Wi-Fi 네트워크에 연결할 수 있는 경우 유용합니다 . 이 기능을 프로젝트에 구현하는 것은 매우 간단하며 프로젝트의 성능을 크게 향상시켜 줍니다.
WiFiMulti를 지원하는 ESP32
단 몇 줄의 코드로 WiFiMulti를 ESP32 프로젝트에 빠르게 통합할 수 있습니다. Arduino IDE에서 예제를 찾을 수 있습니다.
ESP32 보드를 선택한 후(도구 > 보드), 파일 > 예제 > WiFi > WifiMulti 로 이동하세요 .
ESP32 에서 WiFiMulti를 사용하는 데 필요한 주요 단계는 다음과 같습니다 .
라이브러리 포함
WiFi.h 먼저, 와 라이브러리를 모두 포함해야 합니다 WiFiMulti.h .
#include <WiFi.h>
#include <WiFiMulti.h>
WiFiMulti
그런 다음 WiFiMulti 객체를 생성해야 합니다:
WiFiMulti wifiMulti;
네트워크 목록 추가
그런 다음 setup()에서 wifiMulti 객체의 addAP() 메서드를 사용하여 네트워크를 추가합니다. 네트워크 SSID와 비밀번호는 addAP() 메서드의 인자로 전달됩니다. 최소한 하나의 네트워크는 추가되어야 합니다.
wifiMulti.addAP("ssid_from_AP_1", "your_password_for_AP_1");
wifiMulti.addAP("ssid_from_AP_2", "your_password_for_AP_2");
wifiMulti.addAP("ssid_from_AP_3", "your_password_for_AP_3");
와이파이에 연결
마지막으로 run() 메서드를 사용하여 Wi-Fi에 연결합니다. Wi-Fi 연결이 끊어지면 메시지를 출력할 수도 있습니다.
if(wifiMulti.run() != WL_CONNECTED) {
Serial.println("WiFi not connected!");
delay(1000);
}
이 코드 조각을 loop() 섹션에서 실행하면, ESP32가 Wi-Fi 네트워크에서 연결이 끊어진 경우 목록에서 다음으로 강한 네트워크에 자동으로 연결을 시도합니다.
WiFiMulti를 사용한 ESP32 예제
WiFiMulti가 ESP32 와 어떻게 작동하는지 이해를 돕기 위해 다음과 같은 기능을 수행하는 간단한 예제를 만들었습니다.
- 접속 가능한 Wi-Fi 네트워크를 검색하고 RSSI 값을 출력합니다( ESP32가 목록에서 가장 강력한 네트워크에 연결되는지 확인하기 위함).
- 사용 가능한 네트워크 목록에서 가장 강력한 Wi-Fi 네트워크에 연결합니다.
- 첫 번째 네트워크와의 연결이 끊어지면 목록에서 다음으로 연결이 강한 네트워크에 자동으로 연결됩니다.
다음 코드를 아두이노 IDE에 복사하여 테스트해 볼 수 있습니다. 이 코드는 ESP32 아두이노 코어 예제 의 WiFiScan 및 WiFiMulti 예제를 기반으로 합니다 .
/*
* Based on the following examples:
* WiFi > WiFiMulti: https://github.com/espressif/arduino-esp32/blob/master/libraries/WiFi/examples/WiFiMulti/WiFiMulti.ino
* WiFi > WiFiScan: https://github.com/espressif/arduino-esp32/blob/master/libraries/WiFi/examples/WiFiScan/WiFiScan.ino
* Complete project details at our blog: https://ebokify.com/
*
*/
#include <WiFi.h>
#include <WiFiMulti.h>
WiFiMulti wifiMulti;
// WiFi connect timeout per AP. Increase when connecting takes longer.
const uint32_t connectTimeoutMs = 10000;
void setup(){
Serial.begin(115200);
delay(10);
WiFi.mode(WIFI_STA);
// Add list of wifi networks
wifiMulti.addAP("ssid_from_AP_1", "your_password_for_AP_1");
wifiMulti.addAP("ssid_from_AP_2", "your_password_for_AP_2");
wifiMulti.addAP("ssid_from_AP_3", "your_password_for_AP_3");
// WiFi.scanNetworks will return the number of networks found
int n = WiFi.scanNetworks();
Serial.println("scan done");
if (n == 0) {
Serial.println("no networks found");
}
else {
Serial.print(n);
Serial.println(" networks found");
for (int i = 0; i < n; ++i) {
// Print SSID and RSSI for each network found
Serial.print(i + 1);
Serial.print(": ");
Serial.print(WiFi.SSID(i));
Serial.print(" (");
Serial.print(WiFi.RSSI(i));
Serial.print(")");
Serial.println((WiFi.encryptionType(i) == WIFI_AUTH_OPEN)?" ":"*");
delay(10);
}
}
// Connect to Wi-Fi using wifiMulti (connects to the SSID with strongest connection)
Serial.println("Connecting Wifi...");
if(wifiMulti.run() == WL_CONNECTED) {
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
}
void loop(){
//if the connection to the stongest hotstop is lost, it will connect to the next network on the list
if (wifiMulti.run(connectTimeoutMs) == WL_CONNECTED) {
Serial.print("WiFi connected: ");
Serial.print(WiFi.SSID());
Serial.print(" ");
Serial.println(WiFi.RSSI());
}
else {
Serial.println("WiFi not connected!");
}
delay(1000);
}
다음 줄에 네트워크 목록을 추가하는 것을 잊지 마세요. 해당 줄들을 반복해서 추가 네트워크를 추가할 수 있습니다.
wifiMulti.addAP("ssid_from_AP_1", "your_password_for_AP_1");
wifiMulti.addAP("ssid_from_AP_2", "your_password_for_AP_2");
wifiMulti.addAP("ssid_from_AP_3", "your_password_for_AP_3");
메모:만약 이 프로젝트를 테스트해보고 싶지만 사용할 수 있는 네트워크가 하나뿐이라면, 스마트폰으로 핫스팟을 생성하고 핫스팟 이름과 비밀번호를 네트워크 목록에 추가하세요. 저는 아이폰에서 테스트해봤는데 잘 작동했습니다 (핫스팟 이름에서 공백이나 특수 문자를 제거해야 할 수도 있습니다).
WiFiMulti를 활용한 ESP32 데모
ESP32 에 네트워크 목록을 추가한 후 코드를 업로드할 수 있습니다 .
보드를 재시작하려면 시리얼 모니터를 115200bps로 열고 ESP32 RST 버튼을 누르십시오.
먼저 주변 네트워크 목록과 해당 RSSI 값을 보여줍니다. 제 경우에는 첫 번째와 세 번째 네트워크에 접근할 수 있습니다. ESP32 는 목록에서 가장 신호가 강한 네트워크에 연결됩니다(RSSI 값이 0에 가까울수록 신호가 강합니다).

ESP32를 사용한 WiFiMulti 예제: 네트워크 스캔 및 연결
아이폰 핫스팟을 제거하면 연결이 끊어지고, 목록에서 다음으로 신호가 강한 네트워크에 연결됩니다.

ESP32를 사용한 WiFiMulti 예제: 목록에서 다음 네트워크에 연결하기
결론
이 글에서는 WiFiMulti를 사용하여 ESP32 가 연결할 수 있는 네트워크 목록을 추가하는 방법을 설명합니다 . ESP32 는 신호 강도(RSSI)가 가장 강한 네트워크에 연결하고, 해당 네트워크와의 연결이 끊어지면 목록에 있는 다음 네트워크에 연결을 시도합니다.
이 튜토리얼이 유용하셨기를 바랍니다. 읽어주셔서 감사합니다.
'ESP32' 카테고리의 다른 글
| ESP Partition Toolbox를 오픈소스로 공개 (0) | 2026.06.01 |
|---|---|
| ESP32를 사용하여 SMTP 서버를 통해 이메일 보내기 (0) | 2026.05.29 |
| esp32 KC 인증받은 모듈 리스트 (0) | 2026.05.28 |
| esp32 max98357 gain 연결과 제어 (0) | 2026.05.27 |
| esp32 sd 카드 spi 인터페이스와 i2s 인터페이스 충돌 (0) | 2026.05.27 |
| ESP-Claw 시작 가이드 1 (0) | 2026.05.27 |
| 실내에서 센티미터 수준의 정밀도로 모든 것을 추적 (0) | 2026.05.26 |
| 저전력 ESP32 회로 제작기 (0) | 2026.05.25 |
취업, 창업의 막막함, 외주 관리, 제품 부재!
당신의 고민은 무엇입니까? 현실과 동떨어진 교육, 실패만 반복하는 외주 계약,
아이디어는 있지만 구현할 기술이 없는 막막함.
우리는 알고 있습니다. 문제의 원인은 '명확한 학습, 실전 경험과 신뢰할 수 있는 기술력의 부재'에서 시작됩니다.
이제 고민을 멈추고, 캐어랩을 만나세요!
코딩(펌웨어), 전자부품과 디지털 회로설계, PCB 설계 제작, 고객(시장/수출) 발굴과 마케팅 전략으로 당신을 지원합니다.
제품 설계의 고수는 성공이 만든 게 아니라 실패가 만듭니다. 아이디어를 양산 가능한 제품으로!
귀사의 제품을 만드세요. 교육과 개발 실적으로 신뢰할 수 있는 파트너를 확보하세요.
캐어랩