цифровая электроника
вычислительная техника
встраиваемые системы

 
» » » Быстро и просто меняем режим ESP32 с точки доступа на режим станции и обратно



Быстро и просто меняем режим ESP32 с точки доступа на режим станции и обратно

Автор: Mike(admin) от 1-11-2023, 03:55

Возможны разные подходы к подключению Wi-Fi в ESP32. Например, у вас дома есть роутер, к которому вы можете подключиться. Но при кочевом использовании дело обстоит иначе, и для ESP может потребоваться смена режима. Тогда необходима возможность настройки ESP32 в режиме «Точка доступа».


Быстро и просто меняем режим ESP32 с точки доступа на режим станции и обратно

В каждом скетче вам приходится перенастраивать раздел, касающийся подключения к Wi-Fi. Это непрактично и чревато ошибками. Но можно использовать представленный здесь небольшой модуль. Он позволяет вам настроить все параметры в небольшом файле «wifi_cfg.h», который можно предварительно заполнить. Все, что вам нужно сделать, это изменить режим работы и, возможно, IP-адрес, чтобы иметь функциональное соединение Wi-Fi.


Только этот файл необходимо отредактировать, чтобы изменить что-либо в конфигурации Wi-Fi. Этот файл может содержать предварительно заполненные настройки вашей конфигурации Wi-Fi. Имя хоста тоже можно задать. Обратите внимание, что есть также учетные данные для подключения к вашей сети Wi-Fi в «режиме станции» и учетные данные (ssid и пароль) точки доступа, которую вы можете создать. Так что будьте осторожны с этим файлом, если передадите его кому-нибудь.


Выбор режима станции осуществляется путем комментирования «#define AP». Если «#define AP» не закомментировано, ESP32 будет работать как точка доступа. Используются параметры IP, определенные в разделе «//Параметры IP для точки доступа». Если «#define STATIC_IP» закомментирован, используется DHCP. Если «#define STATIC_IP» не закомментирован, используются статический IP с параметрами, определенными в разделе «//Параметры IP для режима станции с фиксированным IP».


Поместите файлы «wifi_cfg.h» и «ESP32_WiFi.h» в тот же каталог, что и ваш скетч. Отредактируйте «wifi_cfg.h» в своих настройках. В объявлении вашего скетча добавьте строку: #include "ESP32_WiFi.h" и в настройке вызовем процедуру: WiFi_setup().


Файл ESP32_WiFi.h.



#include <WiFi.h>
#include "wifi_cfg.h"

void WiFi_setup() {
  String ssid, password;

#if defined(AP)
  ssid = SSID_AP;
  password = PWD_AP;
  WiFi.mode(WIFI_AP);
  WiFi.softAP(ssid, password);
  WiFi.softAPConfig(AP_IP, AP_GW, AP_SUB, AP_DHCP);
  Serial.print("[+] AP Created with SSID: ");
  Serial.print(ssid);
  Serial.print("   IP: ");
  Serial.println(WiFi.softAPIP());

#elif defined(STATIC_IP)
  ssid = SSID_STA;
  password = PWD_STA;
  WiFi.mode(WIFI_STA);
  WiFi.setHostname(hostname.c_str());
  IPAddress staticIP(STA_IP);
  IPAddress gateway(STA_GW);
  IPAddress subnet(STA_SUB);
  IPAddress primaryDNS(STA_DNS1);
  IPAddress secondaryDNS(STA_DNS2);
  if (WiFi.config(staticIP, gateway, subnet, primaryDNS, secondaryDNS) == false) {
    Serial.println("Configuration failed.");
  }
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.print(".");
  }
  Serial.print("Static IP mode --- ");
  Serial.print("Connected to network with IP address: ");
  Serial.println(WiFi.localIP());

#else
  ssid = SSID_STA;
  password = PWD_STA;
  WiFi.mode(WIFI_STA);
  WiFi.setHostname(hostname.c_str());
  WiFi.begin(ssid, password);
  Serial.println("Establishing connection to WiFi with SSID: " + String(ssid));
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.print(".");
  }
  Serial.print("DHCP mode --- ");
  Serial.print("Connected to network with IP address: ");
  Serial.println(WiFi.localIP());
#endif
}

Файл wifi_cfg.h.


String hostname = "ESP32_WiFi_CFG";
#define AP
#define STATIC_IP

#define SSID_AP "My_ESP32"
#define PWD_AP "12345678"


// Параметры IP для точки доступа (измените в соответствии с вашими потребностями)
IPAddress AP_IP = IPAddress(192, 168, 22, 22);
IPAddress AP_GW = IPAddress(192, 168, 22, 22);
IPAddress AP_SUB = IPAddress(255, 255, 255, 0);
IPAddress AP_DHCP = IPAddress(192, 168, 22, 30);

//SSID и пароль вашего роутера для «Режима станции» (используется для DHCP и фиксированного IP)
#define SSID_STA "MY_SSID"
#define PWD_STA "MY_PASSWORD"

// Параметры IP в случае «Режима станции с фиксированным IP»
IPAddress STA_IP(192, 168, 0, 121);
IPAddress STA_GW(192, 168, 0, 1);
IPAddress STA_SUB(255, 255, 255, 0);
IPAddress STA_DNS1(192, 168, 0, 1);
IPAddress STA_DNS2(192, 168, 0, 1);



© digitrode.ru


Теги: ESP32




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий