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