• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

WEMOS D1 pro mini перезагружается через 50 часов

Lehins

New member
WEMOS D1 pro mini примерно через 50 часов работы самостоятельно перезагружается и впадает в кому (скорее всего ждет загрузки бутлоадера). Есть у кого-нибуль идеи почему такое может происходить? Как можно это дело грамотно диагностровать?
 

CodeNameHawk

Moderator
Команда форума
Проверьте не утекает ли память.

скорее всего ждет загрузки бутлоадера
Не разрешайте ему туда попадать.

Скорее всего питание или внешняя помеха.

Как можно это дело грамотно диагностровать?
В "нужных" местах программы выводить лог, например на Serial.
 
Последнее редактирование:

Lehins

New member
Проверьте не утекает ли память.


Не разрешайте ему туда попадать.

Скорее всего питание или внешняя помеха.

В "нужных" местах программы выводить лог, например на Serial.
Да памяти вроде 4Мб, но проверю, спасибо!
Как не разрешить ему попадать на бутлоадер? На Вемосе все подтягивающие резисторы распаяны, по идее должен нормально перезагружаться, но этого не происходит. Хотя если я вручную запускаю esp.restart(), при отключённом мониторе порта, то модуль стартует нормально. Если он подключён к порту и открыт монитор порта, то так же виснет.

А что может быть с питанием? Я пробовал два нормальных адаптера на 5V - эффект один и тот же. Оба по 1A. Примерно, через 50 часов перезагрузка.

Мониторить Serial 50 часов у меня нет возможности, лог перезагрузки был бы полезен.
 

CodeNameHawk

Moderator
Команда форума
по идее должен нормально перезагружаться, но этого не происходит.
Должен, если не хочет заставьте, какие резисторы стоят? возможно надо уменьшить номинал, модуль должен перегружаться без подвисов.

Мониторить Serial 50 часов у меня нет возможности
Люди придумали компы для рутинной работы, вторая есп(или плата ардуино) заменит комп.

Если люди увидят вашу программу, возможно сразу увидят ошибку или слабое место...
 

Slacky

Member
А плата реально Wemos? Или "по мотивам"?

У меня есть две платки. Одна именно Wemos D1 mini, а вторая - копия, сделанная где-то в Китае (она даже внешне по распайке отличается). Первая и шьется на максимальной скорости, а втораая только не выше 256000.

И еще одна особенность.

По команде ESP.reset();

Wemos ВСЕГДА перегружается. А вот "левая" в 9 случаев из 10 просто подвисает ...
 

Lehins

New member
Проверьте не утекает ли память.


Не разрешайте ему туда попадать.

Скорее всего питание или внешняя помеха.


В "нужных" местах программы выводить лог, например на Serial.
Вы прям как Сократ, задаёте вопросы, которые заставляют шевелить мозгами. Я был уверен, что GPIO 0 и 2 подтянуты к питанию резисторами, а сейчас смотрю на плату и начинаю в этом сомневаться. Хотя по команде она уходит в перезагрузку нормально, а это означает, что порты должны быть подтянуты к 3.3В.

Насчёт мониторинга через другую платку я уже думал. Главное, что бы вместе в одно время не перезагрузились :)
 

Lehins

New member
А плата реально Wemos? Или "по мотивам"?

У меня есть две платки. Одна именно Wemos D1 mini, а вторая - копия, сделанная где-то в Китае (она даже внешне по распайке отличается). Первая и шьется на максимальной скорости, а втораая только не выше 256000.

И еще одна особенность.

По команде ESP.reset();

Wemos ВСЕГДА перегружается. А вот "левая" в 9 случаев из 10 просто подвисает ...
А сама компания Wemos разве не китайская?)
Насчёт того, оригинальные от платки - ничего не могу сказать. Купил на ибее у какого-то китайца. Как это можно узнать?

Шьются на 924к скорости, иногда бывают проблемки, что с первого раза не шьётся. Но со второго всегда нормально.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Я имел ввиду - сделана где-то еще в Китае ...
А на оригинальной Wemos так и написано - Wemos :))
Т.е. надпись там так магически действует, если все компоненты одинаковы? :)
Как не разрешить ему попадать на бутлоадер? На Вемосе все подтягивающие резисторы распаяны, по идее должен нормально перезагружаться, но этого не происходит. Хотя если я вручную запускаю esp.restart(), при отключённом мониторе порта, то модуль стартует нормально. Если он подключён к порту и открыт монитор порта, то так же виснет.
Не переназначайте пины ответственные за выбор загрузчика и не вешайте на них ничего.
Во время перезапуска на пинах RX-TX тоже не должно быть ничего, кроме указанных значений для старта в загрузку с Flash. А там, при подключенном мониторе, могут идти символы, т.е. не "1" на TX при рестарте, как и на других пинах, которые были переназначены и на них выведено значение, отличное от загрузки с flash. Перед выполнением restart поставьте программно все пины в нормальное состояние.
 
Последнее редактирование:

Slacky

Member
@pvvx не знаю, но у меня платы даже на вид разные. Т.е. если не вдаваться в подробности, то да, одинаковые, но если их просто сравнить, то расположение компонентов, печатных проводников - разное. К тому же "левый" модуль не шьется на максимальной скорости порта, а "оригинальный" шьется.

А одинаковый ли обвес, я не сравнивал, мне ни к чему. Но запись на разных скоростях косвенно говорит о "хужести" второй платки ...
 

pvvx

Активный участник сообщества
@pvvx не знаю, но у меня платы даже на вид разные. Т.е. если не вдаваться в подробности, то да, одинаковые, но если их просто сравнить, то расположение компонентов, печатных проводников - разное. К тому же "левый" модуль не шьется на максимальной скорости порта, а "оригинальный" шьется.

А одинаковый ли обвес, я не сравнивал, мне ни к чему. Но запись на разных скоростях косвенно говорит о "хужести" второй платки ...
На скорость при прошивке влияет сам ESP-8266 со своей программной частью автоопределения скорости, а не обвес. Там при старте +- какой шум или заваливание фронтов и скорость определяется неверно, что ведет к дальнейшей нестабильности процесса приема блоков данных для записи (срыв протокола).
И описываемое касается схемотехники всех Wemos и NodeMCU, независимо от сборки мелких различий номиналов резисторов...
Подберите скорость более кратную внутреннему делителю UART ESP и всё станет по другому...
До условия, что платка с магической надписью будет хуже прошиваться :)
 
Последнее редактирование:

Lehins

New member
Т.е. надпись там так магически действует, если все компоненты одинаковы? :)
Не переназначайте пины ответственные за выбор загрузчика и не вешайте на них ничего.
Во время перезапуска на пинах RX-TX тоже не должно быть ничего, кроме указанных значений для старта в загрузку с Flash. А там, при подключенном мониторе, могут идти символы, т.е. не "1" на TX при рестарте, как и на других пинах, которые были переназначены и на них выведено значение, отличное от загрузки с flash. Перед выполнением restart поставьте программно все пины в нормальное состояние.
Да я ее сам не перезагружаю. Это делает Watchdog. Я кроме пинов для i2c шины больше ничего не использую. Все по-сути по умолчанию. Пока что я пытаюсь найти проблему. Уж если не получится, тогда попробую перезагружать ее самомстоятельно раз в 4 дня.
 

pvvx

Активный участник сообщества
нашел на их сайте:
D3 IO, 10k Pull-up GPIO0
D4 IO, 10k Pull-up, BUILTIN_LED GPIO2

То есть все таки пины находятся в правильном состоянии по-умолчанию.
А I2C то на каких пинах?
Чтобы перезагружался без проблем, на ESP8266 всего два более менее свободных пина: GPIO4 и GPIO5. Тогда вы и WDT не заметите... Модуль перезгрузится и будет дальше работать...
 
Последнее редактирование:

Lehins

New member
А I2C то на каких пинах?
Чтобы перезагружался без проблем, на ESP8266 всего два более менее свободных пина: GPIO4 и GPIO5. Тогда вы и WDT не заметите... Модуль перезгрузится и будет дальше работать...
I2C как раз на 4 и 5 пине:
D1 IO, SCL GPIO5
D2 IO, SDA GPIO4

На это штуке у меня есть простенький Веб Сервер и на I2C шине весит дисплей, который помимо всего прочего отображает время, которое ESP получает по NTP. И в тот момент, когда как мне кажется ESP8266 перезагружается, время на дисплее меняется на неправильное и потом перестает вообще обновляться. Веб Сервер так же перестает отвечать. То есть модуль чего-то ждет судя по всему, либо после перезагрузки сразу переходит к loop(), минуя setup(), в которой инициализируется дисплей и веб сервер.
 
Последнее редактирование:

Lehins

New member
Т.е. надпись там так магически действует, если все компоненты одинаковы? :)
Не переназначайте пины ответственные за выбор загрузчика и не вешайте на них ничего.
Во время перезапуска на пинах RX-TX тоже не должно быть ничего, кроме указанных значений для старта в загрузку с Flash. А там, при подключенном мониторе, могут идти символы, т.е. не "1" на TX при рестарте, как и на других пинах, которые были переназначены и на них выведено значение, отличное от загрузки с flash. Перед выполнением restart поставьте программно все пины в нормальное состояние.
Как же тогда дигностировать, если TX должен быть свободен?
Я могу писать на карту результат всех "подозрительных" вычислений и значения переменных, но интересен был бы еще и сам дамп перезагрузки.
 
Сверху Снизу