Библиотека для управления Wi-Fi на микроконтроллере ESP32 в среде Arduino IDE. Позволяет легко настраивать режимы работы, сканировать эфир, контролировать состояние соединения, автоматически переподключаться при обрыве связи и поднимать собственную точку доступа.
- 4 режима работы Wi-Fi:
- Выключено (
GS32_WIFI_OFF) — полное отключение модуля для экономии энергии. - Режим подключения (
GS32_WIFI_STA) — работа в качестве клиента (подключение к существующему роутеру). - Точка доступа (
GS32_WIFI_AP) — создание собственной Wi-Fi сети для настройки или управления. - Совмещенный (
GS32_WIFI_AP_STA) — одновременная работа в режиме клиента и точки доступа.
- Выключено (
- Сканирование сетей: Возвращает вектор строк (
std::vector<String>) с именами доступных сетей и уровнем сигнала (RSSI). - Автоматический реконнект: Фоновое отслеживание обрыва соединения и автоматические попытки восстановления связи без блокировки основного цикла.
- Диагностика и статус: Получение IP-адресов (STA и AP), уровня сигнала, количества подключенных клиентов и подробного текстового отчета.
Поместите файлы в папку библиотек Arduino (например, Documents/Arduino/libraries/GS32WIFI/):
void begin(GS32WifiMode mode, const char* staSsid = "", const char* staPass = "", const char* apSsid = "", const char* apPass = "")
Инициализация Wi-Fi. Вызывается один раз внутри функцииsetup().void handle()
Фоновый обработчик. Должен вызываться на каждом цикле вloop()для работы автоподключения.void setAutoReconnect(bool enable)
Включение (true) или отключение (false) автоматического переподключения при потере связи с роутером.void disconnect()
Принудительное отключение от текущей сети.
bool isConnected() const
Возвращаетtrue, если ESP32 успешно подключена к внешней сети (в режимах STA или AP+STA).GS32WifiMode getMode() const
Возвращает текущий активный режим работы.String getModeString() const
Возвращает текстовое описание текущего режима.int getRSSI() const
Возвращает уровень сигнала (RSSI) текущего подключения в dBm.int getRSSIPercentage() const
Возвращает уровень сигнала (RSSI) текущего подключения в процентах.std::vector<String> scanAvailableNetworks()
Сканирует эфир и возвращает список найденных сетей (например:["Home_Net", "Guest_WiFi"]).
String getSTAIP() const
Возвращает IP-адрес, полученный от роутера (в режиме STA).String getAPIP() const
Возвращает IP-адрес созданной ESP32 точки доступа (по умолчанию192.168.4.1).int getConnectedClientsCount() const
Возвращает количество устройств, подключенных к точке доступа ESP32 (в режимах AP и AP+STA).
#include <Arduino.h>
#include "GS32WIFI.h"
GS32WIFI myWifi;
// Конфигурация для подключения к роутеру (STA)
const char* target_ssid = "Avangart";
const char* target_pass = "12345678";
// Конфигурация для нашей точки доступа (AP)
const char* ap_ssid = "GS32WiFiAP";
const char* ap_pass = "ConfigPassword123"; // Не менее 8 символов!
unsigned long lastPrintTime = 0;
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println("\n--- Старт программы ---");
GS32WifiMode selectedMode = GS32_WIFI_AP_STA;
myWifi.begin(selectedMode, target_ssid, target_pass, ap_ssid, ap_pass);
}
void loop() {
// Вызов handle() обязателен для работы фонового автоподключения
myWifi.handle();
// Каждые 7 секунд выводим информацию о текущем состоянии сети в Serial
if (millis() - lastPrintTime > 7000) {
lastPrintTime = millis();
// Простой пример проверки: подключены ли мы к внешней сети?
if (myWifi.isConnected()) {
Serial.printf("[INFO] Соединение с интернетом/роутером активно. IP: %s\n", myWifi.getSTAIP().c_str());
} else {
if (myWifi.getMode() == GS32_WIFI_STA || myWifi.getMode() == GS32_WIFI_AP_STA) {
Serial.println("[INFO] Ожидание подключения к роутеру...");
}
}
}
}- Безопасность AP: Стандарт WPA2 на ESP32 требует пароль длиной не менее 8 символов. Если передать более короткий пароль, библиотека автоматически создаст открытую (незащищенную) точку доступа во избежание сбоев инициализации.
- Управление памятью: При вызове функции
scanAvailableNetworks()результаты сканирования кэшируются во временной памяти ESP32 и сразу после считывания принудительно очищаются методомWiFi.scanDelete(), предотвращая утечки памяти.
Этот проект распространяется под лицензией MIT. Вы можете свободно использовать и модифицировать его в своих проектах.