ESP8266 WiFiScaner nie wykrywa sieci WiFi 2.4 GHz – NodeMCU, ESP-12E, kanały 12-13, zasilanie
Pytanie
esp8266 wifiscaner nie widzi sieci wifi
Odpowiedź Sztucznej Inteligencji
Bezpośrednia odpowiedź na pytanie
- Najczęstszymi przyczynami braku wykrywania sieci przez ESP8266 są:
- błędny tryb pracy (musi być WIFI_STA),
- niestabilne lub zbyt słabe zasilanie (≥ 500 mA / 3 V3),
- sieć nadaje wyłącznie w 5 GHz lub na kanale 12-13 przy ustawieniach regionu USA,
- niewłaściwa/ukryta antena,
- problem z wersją core/SDK lub uszkodzony moduł.
- Zweryfikuj kod przykładowy „WiFiScan”, zasilanie, ustaw tryb stacji, zaktualizuj/lub (czasem) obniż wersję Arduino-ESP8266 Core (np. <3.1.2), ustaw kraj na „PL” (kanały 1-13) i sprawdź, czy inne urządzenia widzą te same sieci.
Bezpośrednia odpowiedź na pytanie
Szczegółowa analiza problemu
- Tryb pracy i kod bazowy
#include <ESP8266WiFi.h>
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA); // tylko tryb stacji
WiFi.disconnect(true); // zerwij ewent. połączenia i AP
delay(100);
}
void loop() {
int n = WiFi.scanNetworks(false, true); // pokaż także ukryte
Serial.printf("Znaleziono %d sieci\n", n);
for (int i=0;i<n;i++){
Serial.printf("%2d) %-32s RSSI:%4d ch:%2d\n",
i+1, WiFi.SSID(i).c_str(), WiFi.RSSI(i), WiFi.channel(i));
}
delay(5000);
}
- Zasilanie i hardware
- Prąd szczytowy podczas skanowania: 300-400 mA.
- Regulator LDO 3 V3 min. 500 mA + kondensatory 100 µF || 100 nF blisko VCC/GND.
- Antena: moduły ESP-12E/F – antena PCB musi być odsunięta od metalowych pól; ESP-07 – poprawny wybór ścieżki antenowej (rezystor 0 Ω).
- Parametry sieci
- ESP8266 obsługuje tylko 2,4 GHz (802.11 b/g/n).
- Jeżeli router pracuje na kanale 12-13, a Core domyślnie ma region US, sieci nie będą widoczne. Wymuś region:
struct { char cc[3]; uint8_t schan; uint8_t nchan; uint8_t policy; } country = {"PL",1,13,0};
wifi_set_country(&country); // SDK function, wymaga ICACHE_FLASH_ATTR
- Ukryte SSID – użyj
show_hidden=true
(jak w kodzie powyżej).
- Wersja biblioteki/firmware
- Zgłaszano, że Core 2.4.1 lub 3.1.2 „gubi” skan (Arduino Forum #540761). Pomaga downgrade do 2.0.0 lub upgrade do najnowszej nightly. Zrób test: Menedżer Płytek → esp8266 → zainstaluj 2.7.4 i 3.1.2, porównaj wyniki.
- Diagnostyka programowa
Serial.setDebugOutput(true);
WiFi.printDiag(Serial); // status RF, kanał, MAC
system_print_meminfo(); // ew. brak RAM
- Zakłócenia / środowisko
- Silne EMI (np. zasilacze impulsowe, silniki), metalowa obudowa, wilgoć; test w odległości 1-3 m od routera.
- Uszkodzenie modułu
- Jeśli inny egzemplarz na tym samym kodzie działa – moduł jest fizycznie uszkodzony (ESD, przegrzanie).
Aktualne informacje i trendy
- Arduino-ESP8266 Core 3.1.x wprowadził pełne wsparcie dla kanałów 12/13, WPA3-SAE (beta) i ułatwioną obsługę
WiFi.scanNetworksAsync
.
- ESP8266 trafia do fazy „long-term support”; nowe projekty często migrują do ESP32-C3 (Wi-Fi + BLE + RISC-V).
- Wzrost popularności sieci 5 GHz i Wi-Fi 6 – ESP8266 ich nie obsłuży; producenci IoT przechodzą na ESP32-C6 (Wi-Fi 6 + 802.15.4).
Wspierające wyjaśnienia i detale
- RSSI < -90 dBm uznaje się za granicę stabilnego połączenia; ESP8266 wykryje sieć zwykle do -98 dBm, lecz przy tej sile pakiety mogą być tracone.
- Skanowanie ustawione co 5-10 s nie wpływa istotnie na zużycie energii; poniżej 1 s powoduje spadki napięcia i może zawieszać firmware.
- Biblioteczna funkcja
WiFi.scanNetworks()
jest blokująca (~110 ms/kanał). Od Core 3.x jest wersja asynchroniczna z callbackiem.
Aspekty etyczne i prawne
- W UE samo skanowanie eterów (tzw. passive scanning) jest legalne, ale zapisywanie ramek zarządzających (sniffing) lub publikacja cudzych SSID/RSSI może podlegać RODO.
- Nie wolno łączyć się z sieciami bez zgody ich właściciela ani nadawać sygnałów na kanałach nieprzeznaczonych dla Wi-Fi w danym regionie.
Praktyczne wskazówki
- Przed testem zrestartuj router, aby upewnić się, że SSID rzeczywiście jest broadcastowane.
- Jeśli zasilasz płytkę przez micro-USB, użyj przewodu ≥ 24 AWG i portu USB ≥ 1 A.
- W IDE PlatformIO/Arduino ustaw opcję „Erase flash: all” przy pierwszym wgraniu – pozostawione dane w NVS potrafią przełączać moduł w tryb AP+STA.
- Dodaj watchdog (
ESP.wdtFeed();
) w długich pętlach skanujących.
Ewentualne zastrzeżenia lub uwagi dodatkowe
- Nie wszystkie implementacje
wifi_set_country()
są dostępne w starszych Core; wówczas trzeba zmienić kanał routera.
- NodeMCU v0.9 dysponuje słabszym stabilizatorem (150 mA) – przy intensywnym skanowaniu może resetować się mimo „poprawnego” napięcia.
- Gęsta sieć 2.4 GHz (> 40 SSID) wydłuża czas skanu; skrypty z timeoutem 3-4 s mogą zwracać 0 sieci.
Sugestie dalszych badań
- Test porównawczy ESP8266 vs ESP32-C3 na tych samych kanałach i zasilaniu.
- Analiza wpływu ustawienia mocy nadajnika (
WiFi.setOutputPower(dBm)
) na czułość odbiornika.
- Implementacja pasywnego skanu kanałowego (promiscuous mode) i analiza ramek beacon w celu optymalizacji rozmieszczenia AP.
Krótkie podsumowanie
Brak wykrywania sieci przez ESP8266 zwykle wynika z błędnego trybu pracy, niewystarczającego zasilania, ograniczeń regionalnych (kanały 12-13) lub problemów z wersją Core. Użyj wzorcowego kodu, zadbaj o wydajne 3 V3, ustaw WIFI_STA
, ewentualnie skonfiguruj kraj „PL”, zaktualizuj / przeflashuj firmware i zweryfikuj antenę. Jeśli po tych krokach moduł wciąż nie widzi sieci, najpewniej jest uszkodzony – potwierdzi to test na innym egzemplarzu.
Zadaj dodatkowe pytanie Sztucznej Inteligencji
Zastrzeżenie: Odpowiedzi udzielone przez sztuczną inteligencję (model językowy) mogą być niedokładne i wprowadzające w błąd. Elektroda nie ponosi odpowiedzialności za dokładność, rzetelność ani kompletność prezentowanych informacji. Wszystkie odpowiedzi powinny być zweryfikowane przez użytkownika.