Сканирование Wi-Fi сетей с помощью ESP32

Сканирование Wi-Fi сетей с помощью ESP32

Сканирование Wi-Fi сетей с помощью ESP32

Одна из самых мощных возможностей ESP32 — это способность сканировать и оценивать качество ближайших Wi-Fi сетей. Это крайне важно для широкого круга применений. Например, ESP32 может использовать эту информацию для автоматического подключения к самой сильной доступной сети, обеспечивая надёжное соединение для вашего проекта. Или, анализируя уровень сигнала различных сетей, ESP32 может оценивать своё местоположение внутри здания или территории — метод, который широко используется в системах позиционирования внутри помещений.

В этом руководстве мы покажем вам, как запрограммировать ESP32 для получения списка всех Wi-Fi сетей в зоне его действия, а также важных сведений о каждой сети, таких как имя (SSID), уровень сигнала (RSSI), тип защиты и канал.

Шаг 1 — Настройка Arduino IDE

Мы будем использовать Arduino IDE для программирования ESP32, поэтому убедитесь, что у вас установлено дополнение ESP32, прежде чем продолжить:

Установка платы ESP32 в Arduino IDE

Микроконтроллер ESP32 быстро стал одной из самых популярных плат среди любителей, инженеров и людей, интересующихся Интернетом вещей (IoT)…

/lastminuteengineers/esp32-arduino-ide-tutorial/index

Шаг 2 — Подключение ESP32 к компьютеру

Теперь подключите вашу плату ESP32 к компьютеру с помощью USB-кабеля.

ESP32 подключён к компьютеру с помощью USB-кабеля

Шаг 3 — Выбор платы и порта

Откройте Arduino IDE и нажмите на «Select other board and port…» в верхнем выпадающем меню.

Меню выбора платы и порта в Arduino IDE 2

Появится новое окно. Найдите конкретный тип вашей платы ESP32 (в нашем случае это DOIT ESP32 DEVKIT V1). Если вы не уверены, какая у вас плата, выбор ESP32 Dev Module часто является безопасным вариантом.

Далее выберите порт, соответствующий вашей плате ESP32. Обычно он обозначается как «/dev/ttyUSB0» (в Linux или macOS) или «COM6» (в Windows).

Выбор платы ESP32 и порта в Arduino IDE 2

Шаг 4 — Загрузка кода

Теперь вы готовы загрузить код в ESP32.

#include <WiFi.h>

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

  // Initialize WiFi and start scan
  WiFi.mode(WIFI_STA);  // Set the Wi-Fi mode to Station
  WiFi.disconnect();    // Disconnect from any previous connections
  delay(100);

  Serial.println("Scanning for Wi-Fi networks...");
  int n = WiFi.scanNetworks();  // Start network scan

  if (n == 0) {
    Serial.println("No networks found.");
  } else {
    Serial.print(n);
    Serial.println(" networks found:");
    for (int i = 0; i < n; ++i) {
      // Print SSID and signal strength for each network
      Serial.print(i + 1);
      Serial.print(": ");
      Serial.print(WiFi.SSID(i));
      Serial.print(" (");
      Serial.print(WiFi.RSSI(i));
      Serial.print(" dBm)");
      Serial.println((WiFi.encryptionType(i) == WIFI_AUTH_OPEN) ? " [Open]" : " [Secured]");
      delay(10);  // Short delay for stable serial output
    }
  }
}

void loop() {
  // Nothing to do in loop
  delay(1000);
}

Шаг 5 — Проверка монитора последовательного порта

После загрузки скетча откройте монитор последовательного порта (Serial Monitor) и убедитесь, что скорость передачи данных установлена на 115200. Затем нажмите кнопку EN (сброс) на вашем ESP32. Теперь вы должны увидеть список всех Wi-Fi сетей, которые ваш ESP32 может обнаружить, вместе с такими деталями, как уровень сигнала и информация о том, открыта ли сеть или защищена паролем.

ESP32 список всех найденных сетей