Zpět na články

ESP32 WiFiMulti – připojení k více Wi-Fi sítím

ESP32 WiFiMulti umožňuje připojení k více Wi-Fi sítím a automatický výběr nejsilnější.

ESP32 WiFiMulti – připojení k více Wi-Fi sítím

Při vývoji IoT projektů se může stát, že zařízení potřebuje fungovat na více různých Wi-Fi sítích. Například doma, v práci nebo při použití mobilního hotspotu.

Knihovna WiFiMulti umožňuje mikrokontroleru ESP32 uložit seznam několika Wi-Fi sítí a automaticky se připojit k té, která má nejlepší signál. Pokud spojení vypadne, zařízení se automaticky připojí k další dostupné síti ze seznamu.

To zvyšuje spolehlivost IoT zařízení, protože není nutné ručně měnit přihlašovací údaje v programu.

Jak WiFiMulti funguje

Knihovna umožňuje uložit více kombinací SSID a hesla. ESP32 pak vyhledá dostupné sítě a připojí se k té, která má nejvyšší sílu signálu (RSSI).

Pokud se spojení přeruší, mikrokontroler automaticky zkusí další síť ze seznamu.

To je velmi užitečné například pro:

  • IoT zařízení používaná na více místech
  • projekty s WiFi zálohou (backup network)
  • zařízení přepínající mezi routerem a mobilním hotspotem

Potřebné knihovny

Pro použití WiFiMulti není nutné instalovat žádné speciální knihovny.

Stačí použít knihovny, které jsou součástí balíčku pro ESP32 v Arduino IDE:

  • WiFi.h – základní knihovna pro Wi-Fi
  • WiFiMulti.h – knihovna pro připojení k více sítím

Tyto knihovny jsou již součástí ESP32 Arduino core.

Základní princip použití

Použití WiFiMulti se skládá z několika kroků.

Nejprve je potřeba přidat knihovny do programu.

Poté vytvořit objekt WiFiMulti, který bude spravovat seznam sítí.

Následně se pomocí funkce addAP() přidají jednotlivé Wi-Fi sítě (SSID a heslo).

Nakonec se pomocí funkce run() ESP32 připojí k dostupné síti.

Program pro ESP32

Následující kód ukazuje jednoduchý příklad použití WiFiMulti.

wifi-multi.cpp
1#include <WiFi.h> 2#include <WiFiMulti.h> 3 4WiFiMulti wifiMulti; 5 6void setup() { 7 8 Serial.begin(115200); 9 delay(10); 10 11 WiFi.mode(WIFI_STA); 12 13 // seznam dostupných WiFi sítí 14 wifiMulti.addAP("wifi_1", "heslo_1"); 15 wifiMulti.addAP("wifi_2", "heslo_2"); 16 wifiMulti.addAP("wifi_3", "heslo_3"); 17 18 Serial.println("Pripojuji k WiFi..."); 19 20 while (wifiMulti.run() != WL_CONNECTED) { 21 Serial.print("."); 22 delay(1000); 23 } 24 25 Serial.println(); 26 Serial.println("WiFi pripojena!"); 27 Serial.print("IP adresa: "); 28 Serial.println(WiFi.localIP()); 29} 30 31void loop() { 32 33}

Program postupně zkouší připojení k dostupným sítím a připojí se k té, která je dostupná.

Pokročilý příklad – skenování sítí

Následující příklad navíc zobrazí seznam dostupných Wi-Fi sítí a jejich sílu signálu.

wifi-multi.cpp
1#include <WiFi.h> 2#include <WiFiMulti.h> 3 4WiFiMulti wifiMulti; 5 6void setup() { 7 8 Serial.begin(115200); 9 WiFi.mode(WIFI_STA); 10 11 wifiMulti.addAP("wifi_1", "heslo_1"); 12 wifiMulti.addAP("wifi_2", "heslo_2"); 13 wifiMulti.addAP("wifi_3", "heslo_3"); 14 15 Serial.println("Skenuji WiFi site..."); 16 17 int n = WiFi.scanNetworks(); 18 19 if (n == 0) { 20 Serial.println("Zadne site nenalezeny"); 21 } else { 22 23 for (int i = 0; i < n; i++) { 24 25 Serial.print(i + 1); 26 Serial.print(": "); 27 28 Serial.print(WiFi.SSID(i)); 29 Serial.print(" ("); 30 31 Serial.print(WiFi.RSSI(i)); 32 Serial.println(" dBm)"); 33 } 34 } 35} 36 37void loop() { 38 39 if (wifiMulti.run() != WL_CONNECTED) { 40 Serial.println("WiFi neni pripojena"); 41 delay(1000); 42 } else { 43 44 Serial.print("Pripojeno k: "); 45 Serial.println(WiFi.SSID()); 46 47 Serial.print("IP: "); 48 Serial.println(WiFi.localIP()); 49 50 delay(5000); 51 } 52}

Program:

  1. naskenuje dostupné Wi-Fi sítě
  2. zobrazí jejich SSID a RSSI (sílu signálu)
  3. připojí se k nejsilnější dostupné síti ze seznamu

Jak projekt otestovat

Po nahrání programu do ESP32:

  1. otevři Serial Monitor (115200 baudů)
  2. stiskni RESET na ESP32
  3. zobrazí se seznam dostupných Wi-Fi sítí

ESP32 se poté připojí k nejsilnější síti ze seznamu.

Pokud například vypneš router nebo hotspot, zařízení se automaticky připojí k další síti.

Využití WiFiMulti

WiFiMulti je velmi užitečné v IoT projektech, kde je důležitá stabilita připojení.

Používá se například pro:

  • chytré domácnosti
  • IoT senzory v různých lokalitách
  • zařízení s WiFi zálohou
  • mobilní projekty (např. roboty nebo měřicí zařízení)

Díky automatickému přepínání sítí může zařízení zůstat připojené k internetu i při výpadku hlavní Wi-Fi.

Nakupte svoje ESP32 ještě dnes!

Doprava Zásilkovnou za 89 Kč
Platba dobírkou
Vrácení do 30 dnů
Omezené zásoby - skladem

ESP32-S3 DevKit USB-C

Kompletní vývojová deska s USB-C

240MHz dvoujádrový
WiFi 802.11 b/g/n
Bluetooth 4.2 + BLE
4MB Flash paměť
520KB SRAM
38 GPIO pinů
209za kus

Množstevní slevy:

1
Celkem
209
Objednat

Bezpečná platba při převzetí zásilky nebo online platba přes Comgate, a.s.