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

Нужна помощь nodemcu v3 esp8266 rst cause:4 от пониженной температуры

BlueBeard

Member
имеем nodemcu v3 esp8266, скетч устойчиво (сутками) работающий при комнатной температуре начинает дурить когда девайс выставляю на улицу примерно(10градусов).
Сначала грешил на свои ручки -> ошибке в скетче, что нибудь ни туда припаял. в конце концов взял новый девайс залил туда простейший скетч вывесил USB на проводе за окно, тоже самое.

То есть данные падения у меня происходят с любой nodemcu (пробовал 4 разных), на разных скетчах опрос датчиков в цикле или на разрабатываемом (там вся работа происходит по таймерам) , три варианта питания девайса (два блока питания и порт компа), с конденсаторами по питанию и без.

Как проявляется, лежит девайс на столе (22-24) нормально работает, выношу не отключая на балкон(+10), через минуту максимум уходит в цикл работаем wdt reset, заношу обратно, через минуту отогревается и опять нормально работает.

Честно говоря руки опускаются наделал датчиков для всего дома, плюс блок управления насосами отопления, думал в эти выходные ставить на альфа испытание, а тут выясняется что вся автоматика замерзнет вместе с домом.

лог на порту
Код:
Humidity: 72.90 %    Temperature: 6.90 *C
Humidity: 73.00 %    Temperature: 6.90 *C
Humidity: 73.00 %    Temperature: 6.90 *C

ets Jan  8 2013,rst cause:4, boot mode:(3,6)

wdt reset
load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
v09f0c112
~ld
?start
Humidity: 72.90 %    Temperature: 6.90 *C
Humidity: 72.90 %    Temperature: 6.90 *C
Humidity: 73.50 %    Temperature: 6.90 *C
и далее по кругу работаем 10сек-пару минут и wdt reset

пример кода на котором девайс падает
Код:
#include "DHT.h"

#define DHTPIN 2     // вывод, к которому подключается датчик
#define DHTTYPE DHT22   // DHT 22  (AM2302)

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(115200);
  delay(100);
  dht.begin();
  Serial.println("start");
}



void loop() {
  delay(1250);

  // считывание температуры или влажности занимает примерно 250 мс!
  // считанные показания могут отличаться от актуальных примерно на 2 секунды (это очень медленный датчик)
  float h = dht.readHumidity();
  // Считывание температуры в цельсиях
  float t = dht.readTemperature();

  // проверяем, были ли ошибки при считывании и, если были, начинаем заново
  if (isnan(h) || isnan(t)) {
    Serial.println("Failed to read from DHT sensor!");
    yield();
    return;
  }

  //выводим информацию в Монитор последовательного порта
  Serial.print("Humidity: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Temperature: ");
  Serial.print(t);
  Serial.println(" *C ");

  yield();
}
 

BlueBeard

Member
delay v loop не кошерно, используйте millis
вечером переделаю скрипт и протестирую

хотя в основных девайсах delay нет код написан на основе GitHub - kmaximv/Wi-Fi-Sensor

loop основных девайсах
Код:
/*
** основной цикл
*/
void loop() {

  blink_mode = 0B00000001; //Короткая вспышка

  #ifdef USE_WEBSERVER
    WebServer.handleClient();  // handle web server
  #endif // USE_WEBSERVER


  timer.run();

  if (WiFi.status() == WL_CONNECTED && atoi(JConf.mqtt_enable) == 1) {
    if (mqtt.connected()){
      mqtt.processPackets(100);
    }
  }

  #ifdef UART_ON
    Uart.serialEvent();
  #endif

  #ifdef NTP_ON
    if ( atoi(JConf.ntp_enable) == 1 && millis() - ntpLastUpdateTime < NTP_ERROR_TIME ) {
      if (timeClient.update()) ntpLastUpdateTime = millis();
      timer.restartTimer(ntpTimer);
    }
  #endif

  yield();
}
правильно я понимаю что на nodemcu v3 все ножки уже подтянуты куда надо

я правда еще дополнительно на готовых добавляю
D3 10k GPIO0 -> +3.3v
D4 10k GPIO2 -> +3.3v
D8 10k GPIO15 -> GROUND

да еще на nodemcu подаю 5v то есть esp кормятся через встроенный стабилизатор
 

nikolz

Well-known member
попробуйте найти причину.
Можно сделать так:
1) измерить изменение напряжения питания на модуле при понижении температуры.
2) взять лед в полиэтилен и по очереди положить мешок на все чипы на плате . Найти что перестает работать.
 

BlueBeard

Member
попробуйте найти причину.
1) измерить изменение напряжения питания на модуле при понижении температуры.
искал до трех ночи, пока в процессе, напряжения на модулях, если верить монитору самого esp 2.6-2,7v тотального изменения при воздействии уличным холодим замечено не было.

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

остальные либо собраны в последнюю неделю либо исполнительный блок проходит (наверно с месяц) тестирование на столе зажигая лампочку (имитируется включение контура отопления) и поддерживая температуру.
Вчера куря перенес один из датчиков на подоконник отрытого окна и обнаружил что датчик явно дурит на холоде, дальнейшие опыты с остальными девайсами показало тоже, новая плата вскрытая и прошитая дала аналогичные результаты.
 

nikolz

Well-known member
искал до трех ночи, пока в процессе, напряжения на модулях, если верить монитору самого esp 2.6-2,7v тотального изменения при воздействии уличным холодим замечено не было.

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

остальные либо собраны в последнюю неделю либо исполнительный блок проходит (наверно с месяц) тестирование на столе зажигая лампочку (имитируется включение контура отопления) и поддерживая температуру.
Вчера куря перенес один из датчиков на подоконник отрытого окна и обнаружил что датчик явно дурит на холоде, дальнейшие опыты с остальными девайсами показало тоже, новая плата вскрытая и прошитая дала аналогичные результаты.
вообще-то 2.6 на внутренне это мало.
Возможно слабый источник
На холоде возникает просадка питания при связи и в результате ошибка.
 

kab

New member
попробуйте найти причину.
Можно сделать так:
1) измерить изменение напряжения питания на модуле при понижении температуры.
2) взять лед в полиэтилен и по очереди положить мешок на все чипы на плате . Найти что перестает работать.
Забыли добавить - если это действительно проявление температуры, а не какого-либо другого "балконного" эффекта. Может, у соседа на балконе какое-то устройство работает - напр., радиолюбительская антенна на передачу :)
 

BlueBeard

Member
Забыли добавить - если это действительно проявление температуры, а не какого-либо другого "балконного" эффекта. Может, у соседа на балконе какое-то устройство работает - напр., радиолюбительская антенна на передачу :)
Вы скорее всего оказались правы огромное спасибо, один девас с кубиком льда на спине полет нормальный 10 минут, второй это же время живет в холодильнике.
а туда куда я их выносил на за(на) окно в 140 метрах в прямой видимости сотовый телефонный столб типа такого


Всем еще раз спасибо
 

nikolz

Well-known member
У меня 2.6 показывает при питании от батарейки через Dc/Dc с суперкондером.
От USB с 1117 а также nodemcu показывает 3.0-3.1.
 

BlueBeard

Member
Девайс в холодильнике отпахал 2 часа, другой растворил кубик до воды. Ура
 

Юрий Ботов

Moderator
Команда форума
Фантазирую: может проблема не в температуре а например во влажности на улице - конденсат куда нибудь выпадает...
 

Glott

New member
Получилось разобраться в проблеме с "wdt reset cause 4" ???

Такая же самая фигня начала преследовать и меня на платках NodeMCU.
причем возникает на пустом месте, с заведомо рабочим скетчем.
Кратковременно лечится заливанием blank.bin с адреса 0x3FE000 и будет работать до тех пор пока не нажмешь Reset на платке...
 

enjoynering

Well-known member
Где то в вашем коде есть бесконечный цикл, вот поэтому reset номер 4 . Второй вариант - плохое питание.
 
Сверху Снизу