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.
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.
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:
- naskenuje dostupné Wi-Fi sítě
- zobrazí jejich SSID a RSSI (sílu signálu)
- připojí se k nejsilnější dostupné síti ze seznamu
Jak projekt otestovat
Po nahrání programu do ESP32:
- otevři Serial Monitor (115200 baudů)
- stiskni RESET na ESP32
- 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.
