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ą:
    1. błędny tryb pracy (musi być WIFI_STA),
    2. niestabilne lub zbyt słabe zasilanie (≥ 500 mA / 3 V3),
    3. sieć nadaje wyłącznie w 5 GHz lub na kanale 12-13 przy ustawieniach regionu USA,
    4. niewłaściwa/ukryta antena,
    5. 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

  1. 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);
    }
  2. 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 Ω).
  1. 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).
  1. 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.
  1. Diagnostyka programowa
    Serial.setDebugOutput(true);
    WiFi.printDiag(Serial);           // status RF, kanał, MAC
    system_print_meminfo();           // ew. brak RAM
  2. Zakłócenia / środowisko
  • Silne EMI (np. zasilacze impulsowe, silniki), metalowa obudowa, wilgoć; test w odległości 1-3 m od routera.
  1. 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.

Oceń odpowiedź:

Zadaj dodatkowe pytanie Sztucznej Inteligencji

Czekaj (1min)...
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.