Skip to content
GS32BiosPublic

About

Библиотека для управления Wi-Fi на микроконтроллере ESP32 в среде Arduino IDE. Позволяет легко настраивать режимы работы, сканировать эфир, контролировать состояние соединения, автоматически переподключаться при обрыве связи и поднимать собственную точку доступа.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

4 Commits

Folders and files

Repository files navigation

GS32WIFI

Библиотека для управления 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/):

Описание методов API

Инициализация и управление

  • 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"]).

IP-адреса и клиенты

  • 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. Вы можете свободно использовать и модифицировать его в своих проектах.

About

Библиотека для управления Wi-Fi на микроконтроллере ESP32 в среде Arduino IDE. Позволяет легко настраивать режимы работы, сканировать эфир, контролировать состояние соединения, автоматически переподключаться при обрыве связи и поднимать собственную точку доступа.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages