Зависания ESP8266

Тема в разделе "Проводная и беспроводная связь", создана пользователем VladM, 25 фев 2016.

  1. VladM

    VladM Нуб

    Добрый день!

    Удалось написать код, который поднимает сервер на ESP8266, читает полученные данные и выполняет полезную работу.

    Если оставить модуль надолго включенным, то сервер часто подвисает и некоторое время не отвечает на запросы. Потом отвисает, и работает какое-то время.

    Написал простенький скрипт, который снаружи дергает порт ESP раз в полторы минуты и сразу отключает соединение.
    Выявил странный эффект: время, когда сервер модуля недоступен почти всегда кратно часу (минус несколько минут). Чаще - недоступен около часа. Иногда два-три часа. Потом опять доступен и выполняет команды.

    Пробовал между чтениями

    if (ESPport.available() >0)
    {
    // читаем данные из порта ESP
    ESPport.readBytesUntil(....);
    }

    в цикле давать команду AT+CIPSTATUS. Но при таком подходе я получаю только ответы от CIPSTATUS, а данные команд для сервера, пришедшие по WiFi становятся не видны.


    1. Странным кажется время недоступности - оно как правило примерно кратно часу. Что это может быть?
    2. Кто-нибудь сталкивался с похожей проблемой?
    3. Как лучше всего побороть данную проблему c подвисаниями ESP?
     
  2. Mestniy

    Mestniy Гуру

    На чем работаете? Arduino или UART?
     
  3. VladM

    VladM Нуб

    ESP8266 подключен к ArduinoUNO
     
  4. ИгорьК

    ИгорьК Гуру

    Ищем пути? :) См. сюда. Товарищ Пушной Звер врать не будет:
     
  5. AlexVS

    AlexVS Гик

    Вы ждете отчислений от форумчан? ;) Добровольных пожертвований, так сказать :)
     
    NE_XT нравится это.
  6. ИгорьК

    ИгорьК Гуру

    Я сменил подпись, поскольку тов. NE_XT меня сильно критиковал за прошлую.
    И, кстати, в этой - все чистая правда :) Хотя и в прошлой тоже.
     
  7. VladM

    VladM Нуб

    В конце темы... если кого-нибудь (ну вдруг) тоже заинтересует заданный мной вопрос в начале темы :)
    то сообщаю, что после некоторых раздумий было принято решение перепрошить ESP8266 на NodeMCU и попробовать его использовать как отдельный контроллер (без Arduino) или перейти к NodeMCU (http://amperka.ru/product/node-mcu)
    Знающие люди говорят, что после этого моя проблема должна решиться. Спасибо!
     
  8. ИгорьК

    ИгорьК Гуру

    Она заменится на другую, если Вы не знаете Lua :)
     
  9. NE_XT

    NE_XT Гик

    Из огня, да в полымя :)
    От прошлого тупого слогана , к попрошайничеству. Так и до рэкета дойдете ;) ,если не сопьётесь дармовым пивасиком от добрых форумчан.
     
  10. ИгорьК

    ИгорьК Гуру

    :( Не угодить никак доброму человеку NE_XT(у)...
    И указателями поворота пользовался... И в глаза встречным противотуманками не светил... И уж, совсем, стою тихо - денежку прошу (попрошаю)... А этот великий человек все не доволен! Как жить, NE_XT?
    Покажите!
    Примером, желательно. Потому как ...ь - не мешки ворочать. Налейте, а? А я - похвастаюсь! :) Славу Вам пропою. Помолюсь за Вас!
     
  11. NE_XT

    NE_XT Гик

    Лучше уж никак, чем как-нибудь :)
    С пятницей вас !
    Да, и чем бы не была прошита ESP8266, периодически виснет. Причины не нашел.
     
  12. Mestniy

    Mestniy Гуру

    НА GPIO кнопку выводили или обычным проводом?
     
  13. ИгорьК

    ИгорьК Гуру

    Ни заработать коппеечку, ни совет дельный получить...
    Конечно не нашел - надо же время моим воспитанием заниматься...
    А у меня, вот, не виснет...
     
    Последнее редактирование: 26 фев 2016
    alp69, Mestniy и Securbond нравится это.
  14. Roon Booh

    Roon Booh Нерд

    Здраствуйте.
    Если пользуетесь AT командами, то не опрашивайте чаще чем в 1.5 сек. иначе перегрев до зависания.
    Я подключил ESP8266 как модем по юарту, рулю с STM32f446ret6, опрос каждые 500 мс, при зависании програмно дергаю у ESP8266 RST.
    Статистика по работе за два дня, каждую секунду перезапуск.
    Реализованно следующим образом: Опрос я вызываю в потоке( для ардуинщиков наверное достаточно будет в функции) При каждом финише сохраняю текущее время работы контролера, раз в секунду проверяю по этому тайм штампу когда был последний запрос, Если давно то перегружаю ESP
     
  15. ИгорьК

    ИгорьК Гуру

    Думаю, или модуль неисправен или вы что-то не то делаете.
    Ясный пень, стоит доки почитать - что в них говорится на предмет частоты запросов.
    Насколько мне известно, не рекомендуется дёргать модуль чаще 15 мс, но... сам документацию не проверял.
     
  16. Roon Booh

    Roon Booh Нерд

    Почитайте.
    Ночью тестил на разных скоростях сериала, скорость тоже влияет. И действительно более стабильно он работает на 9600бод. С этой скоростью чаще чем в 600мс опрос по http не сделать. Плюс время простоя для выполнения других задач, и того раз в секунду почти что, для систем реального времени не подходит.
    Делаю ли я что то не так? Не уверен что так: все необязательные подтяжки через 10кОм, все обязательные через 4,7кОм. В разрыв линии TX, RX, резистор 100ом.

    Я вам скажу как строить системы реального времни на esp8266, с ат командами: или писать свою прошивку, что делать как то не хочется так как модуль должен работать из коробки. Или использовать два три модуля, потоки, очереди...
    Но бот тогда и смотришь на это все и понимаешь, зря потерял время, esp не рассчитана даже на опрос каждую секунду.
    И про почитать, я то почитал уже... Тестил на разных режимах, вывод: для реальных систем надо брать нормальный реалтек
     
  17. ИгорьК

    ИгорьК Гуру

    Так и что там написано про "дергать"?
     
  18. Roon Booh

    Roon Booh Нерд

    Если вы про запрос, то пауза на остальные задачи достаточна.
    Если вы про перезагрузку, то как я сказал она по статистике рас в минуту.
    Если вы нашли где то в даташе на микросхему место где написанно нельзя спамить, то там такого нет.
    А если нет то :