
Сканирование Wi-Fi сетей с помощью ESP32
Одна из самых мощных возможностей ESP32 — это способность сканировать и оценивать качество ближайших Wi-Fi сетей. Это крайне важно для широкого круга применений. Например, ESP32 может использовать эту информацию для автоматического подключения к самой сильной доступной сети, обеспечивая надёжное соединение для вашего проекта. Или, анализируя уровень сигнала различных сетей, ESP32 может оценивать своё местоположение внутри здания или территории — метод, который широко используется в системах позиционирования внутри помещений.
В этом руководстве мы покажем вам, как запрограммировать ESP32 для получения списка всех Wi-Fi сетей в зоне его действия, а также важных сведений о каждой сети, таких как имя (SSID), уровень сигнала (RSSI), тип защиты и канал.
Шаг 1 — Настройка Arduino IDE
Мы будем использовать Arduino IDE для программирования ESP32, поэтому убедитесь, что у вас установлено дополнение ESP32, прежде чем продолжить:
Микроконтроллер ESP32 быстро стал одной из самых популярных плат среди любителей, инженеров и людей, интересующихся Интернетом вещей (IoT)…
Шаг 2 — Подключение ESP32 к компьютеру
Теперь подключите вашу плату ESP32 к компьютеру с помощью USB-кабеля.
Шаг 3 — Выбор платы и порта
Откройте Arduino IDE и нажмите на «Select other board and port…» в верхнем выпадающем меню.
Появится новое окно. Найдите конкретный тип вашей платы ESP32 (в нашем случае это DOIT ESP32 DEVKIT V1). Если вы не уверены, какая у вас плата, выбор ESP32 Dev Module часто является безопасным вариантом.
Далее выберите порт, соответствующий вашей плате ESP32. Обычно он обозначается как «/dev/ttyUSB0» (в Linux или macOS) или «COM6» (в Windows).
Шаг 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 может обнаружить, вместе с такими деталями, как уровень сигнала и информация о том, открыта ли сеть или защищена паролем.