• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Не работает точка доступа в режиме WIFI_AP_STA если нет подключения к роутеру

mishgan

Member
Есть простенький код подключает ESP8266 к роутеру(режим STA) и одновременно поднимает свою wifi сеть (режим AP).
Код:
#include <ESP8266WiFi.h>
 
#define WIFI_SSID "YOUR WIFI NETWORK SSID"
#define WIFI_PASS "YOUR WIFI PASSWORD"
 

#define AP_SSID "ESP8266"
#define AP_PASS "magicword"
 
void setup()
{

  Serial.begin(115200);
  Serial.println();
 
  WiFi.mode(WIFI_AP_STA);
  WiFi.softAP(AP_SSID, AP_PASS);
 
  WiFi.begin(WIFI_SSID, WIFI_PASS);
  delay (15000);
  // Connecting to WiFi...
  Serial.print("Connecting to ");
  Serial.print(WIFI_SSID);

  Serial.println();
  Serial.println("Connected!");
  Serial.print("IP address for network ");
  Serial.print(WIFI_SSID);
  Serial.print(" : ");
  Serial.println(WiFi.localIP());
  Serial.print("IP address for network ");
  Serial.print(AP_SSID);
  Serial.print(" : ");
  Serial.print(WiFi.softAPIP());
 
}
 
void loop() {

 
}
Но если например задать неправильно ssid и пароль от роутера, то и esp8266 не работает в режиме AP. Как это можно исправить?
Нужно мне это для первоначальной настройки esp8266. Т.е. пользователь подключается к модулю как к точке доступа (AP). Задает ssid и пароль от роутера. Если эти данные верные то есп конектится к роутеру без проблем и все работает как надо. Но вот если он задаст их неверно и передаст в есп, то она не только не подключится к роутеру но и перестает работать как точка доступа.
 

mishgan

Member
Напишите код, если не подключилась к роутеру, запустить точку доступа.
Смотрите примеры в ардуиноиде.
при старте скетча выполнил
Код:
  WiFi.mode(WIFI_AP_STA);
  WiFi.softAP(AP_SSID, AP_PASS);
К роутеру не подключаемся. Пользователь передает неверные параметры роутера. Выполняется команды

Код:
WiFi.begin(WIFI_SSID, WIFI_PASS);
while (WiFi.status() != WL_CONNECTED)   delay(100);
В итоге и к роутеру не подключились и AP отключилась...
 

CodeNameHawk

Moderator
Команда форума
В итоге и к роутеру не подключились и AP отключилась..
А голова вам зачем.
Если, нп. через минуту все ещё нет подключения к роутеру,
попробуйте снова
WiFi.mode(WIFI_AP_STA); WiFi.softAP(AP_SSID, AP_PASS);
Или даже так
WiFi.mode(WIFI_AP);
WiFi.softAP(AP_SSID, AP_PASS);
А разве точка доступа пропадает?
Может она просто на введенный пароль перешла?
 

mishgan

Member
А разве точка доступа пропадает?
Может она просто на введенный пароль перешла?
т.е. если я вызываю команду WiFi.begin(WIFI_SSID, WIFI_PASS); то она меняет пароли и у AP заданные командой WiFi.softAP(AP_SSID, AP_PASS); .... както не сходится.... Если я задаю правильные ssid и пароль от роутера смена пароля у точки доступа не происходит....
 

CodeNameHawk

Moderator
Команда форума
Ваш код, из первого поста, работает:
Untitled.png
Можете включить отладку и посмотреть, что выдает https://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/readme.html?highlight=sta ap#who-is-who
Проверьте подключилась ли https://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/soft-access-point-examples.html
Поинтересуйтесь Persistent, может она мешает. https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html?highlight=persistent
https://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/generic-class.html?highlight=persistent
 
Последнее редактирование:

mishgan

Member
Код он рабочий в том случае когда параметры STA заданы верно и есп без проблем подключается к роутеру. Вся проблема начинается когда роутер выключен или ssid и пароль от него задан неверно. Почитал вчера соседние форумы. На них пишут что есп начинает бесконечно искать сеть с такими параметрами и это приводит к тому что AP перестает работать как надо.
В файле esp_softap.h написано
Код:
The ESP8266 is limited to only one channel, so when in the soft-AP+station mode,
  *               the soft-AP will adjust its channel automatically to be the same as
  *               the channel of the ESP8266 station.
Я так понимаю когда мы выполняем WiFi.begin(WIFI_SSID, WIFI_PASS);, то есп начинает искать сеть и перебирать каналы, а так как он у нас один то и режим AP отваливается.
 
Сверху Снизу