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

Не запускается ESP32 Doit Devkit V1 от 3,3В.

Хотя на 8266 не подключится моя матрица. Контактов не хватит. Так что придется с ESP32 разбираться.
 
Со всеми этими нехватками напряжения и тока разобрался. Дело было в макетке. Стоило все распаять, как минимум всё питание сразу все заработало.
Разбираемя дальше. Новая проблема. От сети работает как хотелось. Теперь переключаемся на аккумулятор. Собственно приработе от аккумулятора он пока должен записать об на флешку:
Код:
void setup() {

  pinMode(MOVE, INPUT);
  pinMode(POWER_EXIST, INPUT);

//Если есть 220В-------------------------------------------------------------------------------------------
  //Инициируем SD-карту
if (digitalRead(POWER_EXIST) == 1)
{
//тут идет setup для работы от 220В (ну там БП само собой)
}
else //если нет питания от сети
{
  //Запускаем SD карту
  if (SD.begin(CS_PIN_SDC))
  {
    hasSD = true;
  }

  //Стартуем библиотеку Wire.h
  Wire_init();

  //Считываем данные времени
  timeS = GetTime();

  String st = "Starting on battary - " + timeS;
  addToLogNO220(st);
}
}

void loop(){
if (digitalRead(POWER_EXIST) == 1) {
ArduinoOTA.handle();
HTTP.handleClient(); 
webSocket.loop();
....................
//Ну тут тоже всё для работы от сети
}
И вроде один раз оно сработало. Еще тогда когда я с макеткой боролся.
А сейчас не работает.
Я подключил по серийному порту к компу и вот что выдает:
Rebooting...
Guru Meditation Error: Core 1 panic'ed (LoadProhibited). Exception was unhandled.

Core 1 register dump:
PC : 0x4008b6f5 PS : 0x00060730 A0 : 0x800f553b A1 : 0x3ffb2130
A2 : 0x00ffff00 A3 : 0x00fffefc A4 : 0x000000ff A5 : 0x0000ff00
A6 : 0x00ff0000 A7 : 0xff000000 A8 : 0x00000000 A9 : 0x3ffb2100
A10 : 0x3ffc4086 A11 : 0x0000000e A12 : 0x0000000f A13 : 0x00000001
A14 : 0x00000000 A15 : 0x3ffc4078 SAR : 0x00000008 EXCCAUSE: 0x0000001c
EXCVADDR: 0x00ffff00 LBEG : 0x4008b6f5 LEND : 0x4008b705 LCOUNT : 0xffffffff

Backtrace: 0x4008b6f2:0x3ffb2130 0x400f5538:0x3ffb2140 0x400d9df5:0x3ffb2160 0x400da5ed:0x3ffb2200 0x400f9b87:0x3ffb2270 0x4008f0b6:0x3ffb2290

ELF file SHA256: 41fdd2978
Я почитал в инете, пишут мол переполнение памяти. Но откуда?
Ну и если все-таки так, то как бы мне декларацию библиотек сделать так же выборочной?
Может конечно кто-то еще какую причину назовет.
 
Нашел на чем затык происходит. Вот функция считывания времени с микросхемы PCF85163T
Код:
// функция считывания времени и даты из PCF8563
void readPCF8563(byte *second, byte *minute, byte *hour, byte *dayOfMonth, byte *month, byte *year)
{
Wire.beginTransmission(PCF8563address);
Wire.write(0x02);
Wire.endTransmission();
Wire.requestFrom(PCF8563address, 7);
*second   = bcdToDec(Wire.read() & B01111111); // удаление ненужных бит из данных
*minute   = bcdToDec(Wire.read() & B01111111);
*hour    = bcdToDec(Wire.read() & B00111111);
*dayOfMonth = bcdToDec(Wire.read() & B00111111);
bcdToDec(Wire.read() & B00000111); //day of week
*month   = bcdToDec(Wire.read() & B00011111);
*year    = bcdToDec(Wire.read());
}
Опять чтоль в писании этой микросхемы дело? От 220В все работает, а от аккума такая хрень происходит. При чем я говорю она один или два раза нормально от аккума загрузилась. При чем даже если только первую строчку оставляем в функции ошибка та же.
 
Ага. Ситуация прояснилась. Короче у меня используется ESP32 Doit Devkit V1 и Attiny85. Приходится тиньку использовать, портов на ESP не хватает. Матрица уж очень много контактов использует. Аж 13 штук. Так вот, при питании от аккума тинька получается висит без питания, а она подключена к ESP32 по I2C. Так вот когда она подключена, происходит циклический ребут и ни одног устройство на I2C не находится. Точнее сначала устройства сканирую и не нахожу, а потом когда идет обращение к микросхеме RTC, сброс и происходит. Но стоит мне отключить контакты I2C от тиньки, сразу все начинает работать.
Так вот вопрос как быть? Можно конечно тиньку запитывать от аккума, но это в крайнем случае вариант решения. Можно вторую релюху поставить и коммутировать контакты I2C на тиньку. Когда есть 220В они подключены, когда нет, отключены. Как еще можно? Может к плюсу подтянуть прям у самой тиньки сигналы I2C?
 
Подтяжка не помогла. А запитка от 3,3В вместе со всеми датчиками и ESP-шкой помогло. Если никаких других вариантов нет, придется оставить. В принципе у меня почти такой же девайс на даче за месяц не разряжается почти, раз в 3 часа датчики опрашивает и на SD пишет. Правда как усыпить ESP я знаю, а вот тинька будет без сна работать. Жрет она правда немного, но лучше бы как-то обойти. Может вторая релюха будет решением.
 

pvvx

Активный участник сообщества
Или же все же возвращаться к TSP8266. Как-то ESP32 все пишут мол лучше, я пока только с минусами столкнулся. И ошибок в библиотеках больше и вот не запускается с диодами, с которыми 8266 работало на ура.
ESP32 разные. Есть ESP32-C3 и т.д.
Самая дурная - это первая ESP32 - это жрун как утюг, а толку мало - все стандарты связи у ESP32 полностью устаревшие, производительность не отличается от ESP8266, т.к. программа считывается и кэшируется с SPI-Flash с той-же скоростью.
А "ошибок" типа больше от большего выбора и вариантов...
 

pvvx

Активный участник сообщества

pvvx

Активный участник сообщества
Ну почему не годится? Работает же. И в datasheet у него написано питание 3,3В.
Собственно этот вопрос давно пройден.
В datasheet на модуль?
Вопрос пройден с помощью кучи реле и прочей обвязки... и чипа USB-COM вечно жрущего лишнее питание.
Если всё сделано правильно, то во время сна ESP ток от АКБ должен быть менее 20 мкА.
Подтяжка не помогла. А запитка от 3,3В вместе со всеми датчиками и ESP-шкой помогло. Если никаких других вариантов нет, придется оставить. В принципе у меня почти такой же девайс на даче за месяц не разряжается почти, раз в 3 часа датчики опрашивает и на SD пишет. Правда как усыпить ESP я знаю, а вот тинька будет без сна работать. Жрет она правда немного, но лучше бы как-то обойти. Может вторая релюха будет решением.
А при чем тут состояние на I2C при старте?
Датчики можно отключать, когда ESP спит, если они не вызывают пробуждение по некоторым событиям.

И что за автоматизация, которая опрашивает датчики раз в 3 часа? Типа сломанных стрелочных часов, показывающих правильное время 2 раза в сутки?
Даже датчик любой аварийной сигнализации желательно опрашивать раз в пару минут, чтобы знать что он не висит и активен. А уж типовые датчики температуры, влажности, давления, состава, освещенности, направления/скорости ветра, уровня осадков, напряжения, тока, и т.д. имеют актуальность при опросе не реже раз в десяток секунд. Некоторые можно усреднять за больший период для отложенной передачи.
И какой смысл в использовании WiFi, предназначенным для потоков в мегабайт в секунду?
Вы делаете игрушку, для сдачи какого экзамена по программированию или рабочее устройство?

В итоге у вас выходит куча дополнительного хлама только ради использования ESP.
 

pvvx

Активный участник сообщества
Простой анализ скорости изменения температуры на улице показывает, что изменение температуры воздуха на 1.0 С очень часто происходит за период быстрее чем 20 минут. Иногда и быстрее…

Что будет показывать датчик температуры, опрашиваемый 1 раз в 3 часа? Среднюю температуру по больнице у программиста?
 

pvvx

Активный участник сообщества
Сигнализация: среднее время возгорания практически полного дома от начала пожара составляет несколько минут.

Опрос температуры помещения:

Время изменения температуры воздуха на несколько градусов при открытии двери/окна составляет несколько секунд.

Время изменения температуры воздуха помещения на 1 градус С с использованием электрических нагревателей в среднем доходит до пары минут.

Время изменения температуры воздуха помещения с использованием кондиционера на 1 градус С в зоне его действия при нормальной работе составляет десяток секунд.
1739816233758.png
 

pvvx

Активный участник сообщества
Сравнение с Zigbee датчиком, который передает значения по изменению, но имеет опрос датчика с большим интервалом:
1739816503099.png
Т.е. даже с него уже получим не верную температуру, если будем округлять все замеры за некий период.
 

pvvx

Активный участник сообщества
Из этого следует, что к ESP необходимо припаять внешний малопотребляющий MCU, производящий постоянный опрос датчиков с периодом не более 1 секунды и усредняющий значения, а при переходе заданных значений пробуждающий ESP для передачи наработки измерений.

И такой MCU с датчиками обычно кушает не более чем включенный у вас чип USB-COM.

Иначе выйдет игрушка, созданная только ради игры и публикаций в блогах :)
 
Вопрос пройден с помощью кучи реле и прочей обвязки...
Нет. Я же написал, что проблема была в макетке. Знаете такие с шинами питания и отверстиями куда элементы вставляются. Собственно давно знал, что там с контактами беда, только мигание светодиода проверять. Но другого пути нет. Пропаял проводами всё питание и наиболее важные цепи (I2C например), и все нормально заработало. Вчера даже спящий режим отработал. Осталось только решить с последним вопросом, что я задавал.
 
А при чем тут состояние на I2C при старте?
Я же написал при чем. Если на тиньке нет питания и I2C подключено к ней, то ни одно устройство на шине I2C не определяется и при обращении к неопределенной микросхеме RTC происходит сброс. Если же сигналы I2C отключить от тиньки или записать тиньку от аккумулятора, то все работает как часы.
 
И что за автоматизация, которая опрашивает датчики раз в 3 часа?
У меня не промышленное устройство, у меня метеостанция и знать температуру на даче это чисто из любопытсва. Можно сделать каждый час, собственно и так приходится просыпаться каждый час, т.к. невозможно задать время сна больше 72 минут, и отсчитывать количество просыпаний, что бы раз в 3 часа собирать. Можно конечно каждые 2 часа собирать. Ну вот решил раз в 3 часа и сделал.
 
А уж типовые датчики температуры, влажности, давления, состава, освещенности, направления/скорости ветра, уровня осадков, напряжения, тока, и т.д. имеют актуальность при опросе не реже раз в десяток секунд. Некоторые можно усреднять за больший период для отложенной передачи.
А типовые датчики сколько стоят? У меня любительское устройство. Мне интересно самому все собрать и написать код. Это называется хобби. :) Ну к стати можно сделать опрос и рас в десяток секунд. Только какой смысл знать на сколько десятых изменилась температура в комнате или на улице или влажность и давление??? Да смысл тогда вообще в спящий режим загонять???
 
Что будет показывать датчик температуры, опрашиваемый 1 раз в 3 часа?
То же, что показывает скажем прогноз погоды на Гисметео. там тоже данные каждые 3 часа.
Еще раз хочу заметить, что по показаниям моих датчиком не стартуют баллистические ракеты. Я всего лишь приезжая в выхи на дачу, смотрю, если вдруг станет любопытно, сколько максимально была температура, что бы сказать жене: Ух ты гляди, а в подмосковье аж -15 было, а снега нет, как бы яблони не померзли!
 
Сигнализация: среднее время возгорания практически полного дома от начала пожара составляет несколько минут.
Нееее. Это вы загнули. Какая сигнализация? кому оно будет сигнализировать и как, когда нет ни электричества, а соответственно и никакой связи. Это я о возгорании скорее узнаю от сторожа, который если протрезвеет и найдет мой номер телефона, позвонит мне.
В общем черезчур вы серьезные задачи для мрего градусника ставите! :)
 
Сверху Снизу