WelcomeHere.ro
NIVEL: UȘOR

Tutorial: Scanner Wi-Fi cu ESP32

Unul dintre cele mai simple, dar impresionante proiecte de început cu ESP32. Vom scrie un program care scanează și afișează toate rețelele Wi-Fi din apropiere.

Componente Necesare

  • 1x Placă de dezvoltare ESP32
  • 1x Cablu Micro-USB

Asta este tot! Nu avem nevoie de niciun circuit extern, deoarece totul se întâmplă în interiorul microcontrolerului.

Configurarea Arduino IDE pentru ESP32

Dacă nu ați făcut-o deja, trebuie să adăugați suport pentru plăcile ESP32 în Arduino IDE. Mergeți la File > Preferences și adăugați următorul URL în câmpul "Additional Board Manager URLs":

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

Apoi, mergeți la Tools > Board > Boards Manager..., căutați "esp32" și instalați pachetul de la Espressif Systems.

Codul Sursă

Selectați placa corectă din meniul Tools > Board (de ex. "DOIT ESP32 DEVKIT V1"), alegeți portul COM și încărcați codul de mai jos. Deschideți Serial Monitor setat la viteza 115200.

#include "WiFi.h"

void setup() {
  Serial.begin(115200);

  // Setam modul Wi-Fi la Station (client)
  WiFi.mode(WIFI_STA);
  // Deconectam orice conexiune anterioara
  WiFi.disconnect();
  delay(100);

  Serial.println("Setup finalizat. Se scaneaza retelele...");
}

void loop() {
  Serial.println("Scanare pornita...");

  // WiFi.scanNetworks() va returna numarul de retele gasite
  int n = WiFi.scanNetworks();
  Serial.println("Scanare finalizata.");
  
  if (n == 0) {
    Serial.println("Nicio retea gasita.");
  } else {
    Serial.print(n);
    Serial.println(" retele gasite:");
    
    // Afisam informatii despre fiecare retea
    for (int i = 0; i < n; ++i) {
      // Afiseaza: SSID (numele retelei), RSSI (puterea semnalului), Tipul de criptare
      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);
    }
  }
  Serial.println("");

  // Asteapta 5 secunde inainte de a scana din nou
  delay(5000);
}