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

ESP8266 в постоянной перезагрузке.

Vypra

Member
Есть детективная история. Работали у меня весы для улья пол года. Теперь начали жить своей жизнью.
Предистория. Решил я заменить модуль стабилизатора питания 4,4В-3,3В (стоял до NODE MCU от литиевого аккумулятора) на 2 последовательных диода. Модули стабилизаторов 3.3В плохие, при просадке аккумулятора начинал пищать (порог к модуля 250мА). Все работало месяц на диодах.
Потом сгорел один из двух DS18B20. Ну думаю плохой датчик. Заменил. Через 2 недели еще один горит. Не знаю на том самом пине или нет. При этом вся система работает. Это уже не совпадение. Чего им гореть, они от 3 до 5 вольт, по питанию не могло. Один сгоревший датчик на другой рабочей плате показывает 0, другой сгоревший показывает -127. Оставил без датчика. Наблюдаю.
Еще через пару дней не приходят СМС. Снимаю весы, смотрю. NODE MCU работает, потом входит в сон и не выходит. Думал RTC. Заменил. Но нет, на новых часах та же история. Смотрю на осциллографе, при сработке будильника на пине RST падает напряжение как и должно (RTC3231 посылает через конденсатор лог.0 на RST) , но после сброса на RST напряжение не поднимается до лог.1. На RST половина напряжения. Поменял сопротивление подтяжки RST к плюсу с 10К на 4,7К. Завелось. Напомню на 10К все работало пол года.
Теперь NODE MCU работает неадекватно. Программа начинает работать и на каком-то моменте циклично перезагружается с ошибкой

ets Jan 8 2013,rst cause:2, boot mode:(3,6)
load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
v8b899c12

Думал ошибка в коде. Выбросил с кода блок на котором перезагрузка, начало перезагружаться дальше в другом месте кода. Такое чувство, что перезагрузка после некоторого времени работы, а не от ошибки в коде.
Взял абсолютно такие же весы (благо не одни), распайка деталей такая же, прошивка такая же, все работает. Дело не в коде.
Еще одно наблюдение. Когда в циклическую перезагрузку входит мигает диод, нажимаю и отпускаю кнопку flash на плате, диод не мигает. Нажимаю кнопку RST на плате опять в цикл, диод мигает. На других весах нажатие flash не влияет на выполнение программы. На этих типа пин какой-то «подвисает».
Помогает полное отключение питания. В том числе вынуть батарейку с часов. А бывает код выполняется нормально, запустится, поработает пару часов и снова глючит.
Arduino IDE 1.8.12, Версия ядра ESP8266 2.6.3. Пробовал на 2.5.2 с ESP8266-I2C-Driver (чтоб исключить зависание I2C) – та же история.
С питанием нормально. Подключал питание от USB кабеля в разъем Node MCU, 3,3 В после стабилизатора на плате, питание стабильное. Но глюки есть.
Ну вот что может быть? Описал все действия и историю. Причину не могу установить уже пару дней.
 

enjoynering

Well-known member
Похоже что flash приказала долго жить.

Сделать erase с помощью Flash Download Tools или с помощью скетча - https://github.com/kentaylor/EraseEsp8266Flash или в Arduino IDE Erase All

а потом изучать функцию WiFi.persistent(false) и искать что вы такое пишите во флеш что она у вас до дыр за полгода.
 

nikolz

Well-known member
Есть детективная история. Работали у меня весы для улья пол года. Теперь начали жить своей жизнью.
Предистория. Решил я заменить модуль стабилизатора питания 4,4В-3,3В (стоял до NODE MCU от литиевого аккумулятора) на 2 последовательных диода. Модули стабилизаторов 3.3В плохие, при просадке аккумулятора начинал пищать (порог к модуля 250мА). Все работало месяц на диодах.
Потом сгорел один из двух DS18B20. Ну думаю плохой датчик. Заменил. Через 2 недели еще один горит. Не знаю на том самом пине или нет. При этом вся система работает. Это уже не совпадение. Чего им гореть, они от 3 до 5 вольт, по питанию не могло. Один сгоревший датчик на другой рабочей плате показывает 0, другой сгоревший показывает -127. Оставил без датчика. Наблюдаю.
Еще через пару дней не приходят СМС. Снимаю весы, смотрю. NODE MCU работает, потом входит в сон и не выходит. Думал RTC. Заменил. Но нет, на новых часах та же история. Смотрю на осциллографе, при сработке будильника на пине RST падает напряжение как и должно (RTC3231 посылает через конденсатор лог.0 на RST) , но после сброса на RST напряжение не поднимается до лог.1. На RST половина напряжения. Поменял сопротивление подтяжки RST к плюсу с 10К на 4,7К. Завелось. Напомню на 10К все работало пол года.
Теперь NODE MCU работает неадекватно. Программа начинает работать и на каком-то моменте циклично перезагружается с ошибкой

ets Jan 8 2013,rst cause:2, boot mode:(3,6)
load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
v8b899c12

Думал ошибка в коде. Выбросил с кода блок на котором перезагрузка, начало перезагружаться дальше в другом месте кода. Такое чувство, что перезагрузка после некоторого времени работы, а не от ошибки в коде.
Взял абсолютно такие же весы (благо не одни), распайка деталей такая же, прошивка такая же, все работает. Дело не в коде.
Еще одно наблюдение. Когда в циклическую перезагрузку входит мигает диод, нажимаю и отпускаю кнопку flash на плате, диод не мигает. Нажимаю кнопку RST на плате опять в цикл, диод мигает. На других весах нажатие flash не влияет на выполнение программы. На этих типа пин какой-то «подвисает».
Помогает полное отключение питания. В том числе вынуть батарейку с часов. А бывает код выполняется нормально, запустится, поработает пару часов и снова глючит.
Arduino IDE 1.8.12, Версия ядра ESP8266 2.6.3. Пробовал на 2.5.2 с ESP8266-I2C-Driver (чтоб исключить зависание I2C) – та же история.
С питанием нормально. Подключал питание от USB кабеля в разъем Node MCU, 3,3 В после стабилизатора на плате, питание стабильное. Но глюки есть.
Ну вот что может быть? Описал все действия и историю. Причину не могу установить уже пару дней.
Начните с того места, где произошло первое изменение после длительной успешной работы (что там сгорело, чем заменили и т д)
Что-то сделали не так, но решили что и так сойдет.
после этого все дальнейшие тыки были не там и не в то место.
 

Vypra

Member
Похоже что flash приказала долго жить.
Сделать erase с помощью Flash Download Tools или с помощью скетча - https://github.com/kentaylor/EraseEsp8266Flash или в Arduino IDE Erase All
а потом изучать функцию WiFi.persistent(false) и искать что вы такое пишите во флеш что она у вас до дыр за полгода.
Да, похоже Вы правы. Я изменил размер SPIFFS при прошивке, что думаю сместило разметку памяти. Пока работает.
В скетче есть один параметр - следующий будильник. При отправке данных каждый час он перезаписывается. Похоже пора подумать как обойти этот момент ))) не подумал я, когда писал скетч. но за пол года не должно было затереть. 24 часа * 365 дней = 8760 раз. За год должно было выжить. Другие параметры просто раз записываются и дальше только считываются.

Датчики допускаю могли погореть по причине того, что зимой батарея проседала до 2,5В до отключения контроллером, потому что солнца не было для подзарядки, DS18B20 работает от 3 до 5 В. Может ему плохо стало потому что низкое напряжение было? Других причин не вижу.
 

enjoynering

Well-known member
может также оказаться что флешка живая. Просто у ESP8266 нет brown out detection (BOD). Батарея опускается ниже 3В и ESP, flash начинает работать не корректно - портит своими действиями ячейки. Костыль - поставить ионистор на пару фарад.
 

Vypra

Member
может также оказаться что флешка живая.
Память все же склоняюсь живая. Перепрошился, работало. Но опять поймал глюк.
Понаблюдав, есть некая непостоянная зависимость: если понажимать на кнопку flash, иногда прилетает зависание. И не пропадает без полного отключения питания. На сколько я помню, кнопка flash на пине D3 (GPIO 0) замыкает на минус для перехода в режим записи. На этом же пине висел один из двух DS18B20, который возможно и сгорел на этом же пине. К сожалению точно не помню с этого ли пина датчик снял. GPIO 0 в свою очередь подтянут к плюсу резистором 4,7К для питания DS18B20.
Т.е. еще одна теория, GPIO 0 подгорел?
 

CodeNameHawk

Moderator
Команда форума
если понажимать на кнопку flash, иногда прилетает зависание.
Если все правильно сконфигурировано, то такого не должно быть.
Переход в режим программирования, при нажатой кнопке flash, или после сброса или при подаче питания.

Т.е. еще одна теория, GPIO 0 подгорел?
У меня было, что вывод как бы постоянно подключился к плюсу питания, программная установка нуля на нем не меняла его состояния. Вылечилось заливкой АТ прошивки и новой загрузки скетча.

Что бы все надежно работало, питание должно быть стабильным и желательно, чтобы не падало ниже 3,3В.
 

enjoynering

Well-known member
Так ардуино вроде каждый раз перепрошивает бутлоадер и прошивку сама. Или я что-то путаю?
 

CodeNameHawk

Moderator
Команда форума
Дело было в более ранней версии ардуино.
Но что стирается в версии 2,6,3 тоже надо разбираться.
Ожидал, что Erase WiFi settings, вернутся в исходное состояние, но AutoConnect и AutoReconect остались без изменений, хотя может так и должно быть.
 

Vypra

Member
Я установил flash_download_tools_v3.6.8. чтоб почистить.
Когда подключаю глючную ESP8266
DETECTED INFO:
flash vendor:
20h : N/A
flash devID:
4016h
QUAD;32Mbit
crystal:
26 Mhz

Когда подключаю рабочую ESP8266
DETECTED INFO:
flash vendor:
68h : N/A
flash devID:
4016h
QUAD;32Mbit
crystal:
26 Mhz

Разница 20h и 68h. Что это?
 
Сверху Снизу