Найти в Дзене
Shema_Tehnik

ESP32-C3 и OLED сканирование WI-FI сетей

Для платы ESP32-C3 и OLED-дисплея на базе контроллера SSD1306 можно написать программу, которая будет сканировать окружающие Wi-Fi сети, определять уровень сигнала (RSSI) и выводить эту информацию на экран. Чип: Espressif ESP32-C3
Тип процессора: 32-битный RISC-V
Частота CPU: 160 МГц
Количество ядер CPU: 1
SRAM: 400 Кб
RTC SRAM: 8 Кб
Встроенная ПЗУ: 384 Кб
Флэш-память программ: 4 Мб
Поддержка WiFi: 2,4 ГГц, 802.11b/g/n
Поддержка Bluetooth: Bluetooth 5 - Перед использованием убедитесь, что установлены библиотеки Adafruit_SSD1306 и Adafruit_GFX через Менеджер библиотек Arduino IDE. - OLED-дисплей подключается к I2C шине ( SDA — GPIO8, SCL — GPIO9 у ESP32-C3). - Значение RSSI (Received Signal Strength Indicator) обычно варьируется от примерно -25 dBm (максимальный уровень) до -90 dBm (очень слабый сигнал). Ниже приведён пример кода на языке C++ для использования с платформой Arduino. Пример использует библиотеку WiFi.h для работы с Wi-Fi, а также библиотеку Adafruit_SSD1306 для управлени

Для платы ESP32-C3 и OLED-дисплея на базе контроллера SSD1306 можно написать программу, которая будет сканировать окружающие Wi-Fi сети, определять уровень сигнала (RSSI) и выводить эту информацию на экран.

Технические характеристики:

Чип: Espressif ESP32-C3
Тип процессора: 32-битный RISC-V
Частота CPU: 160 МГц
Количество ядер CPU: 1
SRAM: 400 Кб
RTC SRAM: 8 Кб
Встроенная ПЗУ: 384 Кб
Флэш-память программ: 4 Мб
Поддержка WiFi: 2,4 ГГц, 802.11b/g/n
Поддержка Bluetooth: Bluetooth 5

-2
-3

- Перед использованием убедитесь, что установлены библиотеки Adafruit_SSD1306 и Adafruit_GFX через Менеджер библиотек Arduino IDE.

- OLED-дисплей подключается к I2C шине ( SDA — GPIO8, SCL — GPIO9 у ESP32-C3).

- Значение RSSI (Received Signal Strength Indicator) обычно варьируется от примерно -25 dBm (максимальный уровень) до -90 dBm (очень слабый сигнал).

Ниже приведён пример кода на языке C++ для использования с платформой Arduino. Пример использует библиотеку WiFi.h для работы с Wi-Fi, а также библиотеку Adafruit_SSD1306 для управления дисплеем.

#include <WiFi.h> // Для работы с Wi-Fi на ESP32

#include <Adafruit_GFX.h> // Графическая библиотека для дисплея

#include <Adafruit_SSD1306.h> // Управление дисплеем SSD1306

#define SCREEN_WIDTH 128              // Ширина дисплея SSD1306

#define SCREEN_HEIGHT 32              // Высота дисплея

#define OLED_RESET     -1             // Сброс дисплея, -1 если не используется

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

void scanWiFiAndDisplay() {

int n = WiFi.scanNetworks();

display.clearDisplay();

display.setTextSize(1);

display.setTextColor(SSD1306_WHITE);

display.setCursor(0, 0);

display.printf("WiFi Scan: %d networks\n", n);

int y = 10;

for (int i = 0; i < n && i < 6; i++) {  // Ограничим вывод первыми 6 сетями

String ssid = WiFi.SSID(i);

int32_t rssi = WiFi.RSSI(i);

display.setCursor(0, y);

display.printf("%s", ssid.c_str());

y += 10;

display.setCursor(0, y);

display.printf("RSSI: %d dBm", rssi);

y += 12;

}

display.display();

}

void setup() {

Serial.begin(115200);

if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Адрес 0x3C - обычно для SSD1306

Serial.println(F("SSD1306 allocation failed"));

for(;;);

}

display.clearDisplay();

display.setTextSize(2);

display.setTextColor(SSD1306_WHITE);

display.setCursor(0, 10);

display.println("WiFi RSSI");

display.display();

WiFi.mode(WIFI_STA);

WiFi.disconnect();  // Отключаем от текущей сети, чтобы начать сканирование

delay(100);

}

void loop() {

scanWiFiAndDisplay();

delay(10000);       // Обновляем каждые 10 секунд

}

- Функция WiFi.scanNetworks() возвращает количество найденных сетей.

- Метод WiFi.SSID(i) возвращает название сети, WiFi.RSSI(i) — уровень сигнала (в dBm).

- На дисплей выводятся первые 6 доступных сетей с указанием RSSI.

Ниже представлена собранная схема на макетной плате:

-4
-5

Как видим сигнал слабоват, так как роутер находится в дальней спальне дома, в середине дома сигнал показывает в среднем -55 dBm, а возле роутера -25 dBm.

Везде на форумах в интернете пишут что у этой ESP нехватка свободного пространства вокруг антенны и это приводит к плохой радиочастотной работе.

В следующей статье я попробую сделать антенну и посмотрим на результат.

Всем спасибо!