ESP32: выбрать сеть посильнее

Плата сканирует эфир, находит самую сильную открытую сеть и подключается именно к ней — как это делает телефон.

Средний уровень ESP32 DevKit V1 C++
Схема подключения: ESP32: выбрать сеть посильнее
Схема в симуляторе. Нажмите «Открыть в симуляторе», чтобы запустить её и поменять.

Что понадобится

Скетч

#include <WiFi.h>

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

  int n = WiFi.scanNetworks();
  Serial.print("сетей в эфире: ");
  Serial.println(n);

  // Ищем самую сильную ОТКРЫТУЮ сеть. RSSI отрицательный,
  // поэтому «сильнее» — значит БОЛЬШЕ: -45 сильнее, чем -80.
  int best = -1;
  for (int i = 0; i < n; i++) {
    if (WiFi.encryptionType(i) != WIFI_AUTH_OPEN) continue;
    if (best < 0 || WiFi.RSSI(i) > WiFi.RSSI(best)) best = i;
  }

  if (best < 0) {
    Serial.println("открытых сетей нет");
    return;
  }

  Serial.print("выбрана: ");
  Serial.print(WiFi.SSID(best));
  Serial.print("  ");
  Serial.print(WiFi.RSSI(best));
  Serial.println(" дБм");

  WiFi.begin(WiFi.SSID(best), "");
  while (WiFi.status() != WL_CONNECTED) {
    delay(100);
  }
  Serial.print("подключено, адрес ");
  Serial.println(WiFi.localIP());
}

void loop() {
  delay(1000);
}

Как это работает

Уровень сигнала зависит от расстояния до точки на схеме. Поменяйте точки местами и запустите снова — плата выберет другую сеть, ничего не меняя в коде.

Коротко о детали: ESP32 DevKit V1

Плата на модуле ESP32-WROOM-32: два ядра на 240 МГц, Wi-Fi и Bluetooth, логика 3,3 В. Выводов больше, чем у Uno, и почти любой из них можно назначить входом АЦП или выходом ШИМ. Беспроводная связь в симуляторе не моделируется — WiFi.begin() честно пишет об этом в монитор порта.

Распиновка и все примеры →

Ещё примеры с деталью «ESP32 DevKit V1»

Попробуйте сами

Симулятор работает прямо в браузере: схему можно менять, код — править, а результат видно сразу. Бесплатно, без установки и регистрации.

Открыть «ESP32: выбрать сеть посильнее» в симуляторе