Wi-Fi соединение в цикле
Что я пытаюсь сделать, так это при локальном подключении к esp8266 и дать ему ssid и пароль, сохранить их в глобальной переменной и использовать их для запуска соединения внутри функции цикла с флагом, чтобы это произошло только один раз и пусть программа запускается, пока я проверяю, когда соединение установлено. Предвидите ли вы какие-либо проблемы с этим приложением?:
setup(){
wifi.mode(WIFI_AP_STA);
setup softAP
server.on("/",handleroot)
server.begin()
}
loop(){
server.handleClient()
if(credential_submited){
Wifi.begin(credentials);
flag_connection_started =true;
credential_submited = false;
flag_for_internet_server=true;
}
if(WiFi.status()==WL_CONNECTED && flag_for_internet_server==true){
server.on("/",handleroot)
server.begin()
flag_for_internet_server=false;
}
Я знаю, что есть также WifiManager, но я пытаюсь сделать это самостоятельно. Дело в том, что некоторые сети Wi-Fi требуют много времени для подключения. Точнее подключаются но потом esp не получает ip и отключается. Спасибо за ваше время
2 ответа
Лучший ответ:
WiFi.begin() в библиотеке ESP8266WiFi не дожидается завершения соединения, а немедленно возвращается.
Вы можете проверить, установлено ли соединение с сетью WiFi, используя WiFi.status(), как показано в большинстве примеров. И не обязательно ждать подключения в setup().
Кстати: вы можете использовать отдельный скетч для установки SSID и пароля в esp8266, а затем во всех других скетчах не использовать WiFi.begin(), а только дождаться завершения подключения к сети WiFi.
Не могли бы вы подробнее остановиться на отдельной части скетча. Вы имеете в виду, что я могу загрузить два скетча на eps и запустить один за раз, а когда один будет готов, запустить вторую программу?, @Panagiotis Nomikos
нет. вы запускаете скетч конфигурации, и esp8266 запоминает ssid и пароль. любой другой скетч, загруженный после этого, будет использовать эти настройки. esp8266 автоматически подключится, даже если вы загрузите Blink, @Juraj
Это не имеет большого значения...
Вы можете легко изменить это, самый простой способ - использовать EEPROM для достижения этого..
Просто передайте SSID и ПАРОЛЬ новой сети в ESP8266 и сохраните их в EEPROM, а также создайте новую переменную в eeprom, в которой будет храниться статус ввода новых сетевых учетных данных, проверка в цикле, а затем извлечение новых сетевых учетных данных. из EEPROM и попробуйте подключиться к нему...
Вы также можете проверить и подключиться к нужной сети из петли...
В качестве альтернативы вы можете использовать библиотеку, которая поможет вам в этом [WiFiManager]: https://github.com/tzapu/WiFiManager.
ESP8266 не имеет EEPROM, но автоматически сохраняет SSID и пароль во флэш-памяти, если вы не отключите эту функцию. это то, что использует WiFiManager, @Juraj
- ESP8266 не подключается к Wi-Fi
- Как подключить Wi-Fi Shield ESP-12E-ESP8266-UART-WIFI-Wireless-Shield к Arduino
- Можно ли отключить WiFi на ESP8266?
- Как отключить или остановить точку доступа в ESP8266?
- ESP8266 — действительно ли у него по умолчанию плохой радиус действия Wi-Fi?
- Как подключить ESP8266 с помощью адаптера ESP-01 к Arduino Uno?
- ESP8266 на Wi-Fi без пароля, возможно?
- ESP8266 Аналоговое чтение мешает Wi-Fi?
ESP в точке доступа или в режиме станции? Вероятно, это возможно, но я не очень понимаю сценарий. Вы могли бы сделать это более понятным, по крайней мере, предоставив некоторый псевдокод, @Sim Son
Не вижу проблем там, так как это несколько стандартно. Вы пробовали что-нибудь?, @chrisl
Взгляните на https://github.com/tzapu/WiFiManager, он делает именно то, что вы хотите., @Dougie
@Dougie Я пытаюсь создать его самостоятельно, чтобы в основном учиться., @Panagiotis Nomikos