Сканер Wi-Fi
Ищем сети вокруг и показываем самые сильные.
ESP32-C3 работает с Wi-Fi 2,4 ГГц. Этот скетч раз в 5 секунд ищет сети, показывает на экране три самых сильных, а полный список печатает в монитор порта.
#include <U8g2lib.h>
#include <Wire.h>
// Встроенный экран 0.42": контроллер SSD1306, видимая область 72×40.
// Аргументы: поворот, вывод сброса (нет), SCL = GPIO6, SDA = GPIO5.
U8G2_SSD1306_72X40_ER_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE, 6, 5);
#include <WiFi.h>
void setup() {
Serial.begin(115200);
u8g2.begin();
WiFi.mode(WIFI_STA);
WiFi.disconnect();
}
void loop() {
u8g2.clearBuffer();
u8g2.setFont(u8g2_font_5x8_tf);
u8g2.drawStr(0, 8, "Scanning...");
u8g2.sendBuffer();
int n = WiFi.scanNetworks(); // сети уже отсортированы по силе сигнала
u8g2.clearBuffer();
u8g2.setCursor(0, 8);
u8g2.print("Networks: ");
u8g2.print(n);
for (int i = 0; i < n && i < 3; i++) {
String name = WiFi.SSID(i).substring(0, 9);
u8g2.setCursor(0, 18 + i * 10);
u8g2.print(name);
u8g2.setCursor(52, 18 + i * 10);
u8g2.print(WiFi.RSSI(i));
}
u8g2.sendBuffer();
for (int i = 0; i < n; i++) {
Serial.printf("%2d %4d dBm %s\n", i + 1, WiFi.RSSI(i), WiFi.SSID(i).c_str());
}
Serial.println();
WiFi.scanDelete();
delay(5000);
}RSSI — сила сигнала в дБм. Чем ближе к нулю, тем лучше: −50 — отлично, −70 — нормально, −85 — на грани.
Шрифт 5x8 латинский: русские названия сетей на экране отобразятся неправильно. В мониторе порта они видны нормально.