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

WeMosD1R1 зависает в неопределенный момент.

Народ, всем привет.
Есть WeMosD1R1, на ней часы реального времени на DS1307, датчик BMP\BME280, два датчика AHT10 и модуль для SD-карты. Вот такой. Все устройства на I2C кроме модуля SD-карты. Так вот, все вроде бы хорошо. Но как-то в неопределенный момент все зависает. Для отвисания иногда достаточно перезагрузки кнопкой на WeMos, иногда это не помогает, надо вынуть из USB(пока пишу скетч, от USB порта компа питается), иногда это не помогает. Но тогда если SD-карту пошерудить в гнезде модуля вынув из USB, а потом воткнув, запускается. Я по началу думал, чтьо памяти не хватает. Почистил все строковые переменные, стало значительно реже зависать (вроде бы). Да и еще, если после зависания открыть монитор порта, то видно, что не находятся устройства на i2c. В общем пока грешу на AHT10 (может библиотека кривая, уже 2 попробовал, да и сдохло 2 модуля, после чего я перевел их на 3,3 вольта, хотя брал на Али под 5 вольт модули) и на модуль SD-карты. Если решения не найду, попробую другой модуль подключить, у меня есть для полноценной SD-карты, а не для мини как этот.
Народ, может еще на что посоветуете обратить внимание. Скетч большой, в нескольких файлах, пока не решаюсь его выкладывать.
 
Да иногда она не виснет, но датчики начинаю казать чушь и часы показывают 165:165:85. Т.е. Web интерфейс работает, данные на карту тоже вроде пишутся, а вот все что на i2c просто в ауте!
 

enjoynering

Well-known member
Увеличте stretch interval или уменьшите скорость. В мой библиотеке для esp8266 это можно сделать при вызове begin.

aht10.begin(100, 1000); //100KHz, 1000usec by default

Если у вас несколько разных датчиков, то вызываем aht10.begin ПОСЛЕДНИМ (после begin остальных датчиков)
 
Спасибо конечно. Но я пользуюсь Arduino IDE и не знаю как подсунуть вашу библиотеку. Ну во всяком случае никогда этого не делал.
 

enjoynering

Well-known member
Это старая. Там огромными буквами написано, что она больше поддерживается и есть сылка новую. Ну как так?

В старой нет функции установление скорости и растяжки CLK сигнала. Новая тут - https://github.com/enjoyneering/AHTxx
 

enjoynering

Well-known member
Я там ошибся, скорость надо в герцах

aht10.begin(100000, 1000); //100KHz, 1000usec by default
 
А я вот подумал, может я не ту плату выбираю? Я выбрал Wemos D1R1. Куплена у меня вот такая. Сейчас попробовал поставить LOLIN(WEMOS) D1 R2 & mini. При прошивке все ОК, как и со старым вариантом.
 
Да, с этим у меня проблема. Где-то год назад я настраивал NodeMCU 1.0 и где-то взял все настройки. Возможно и в этом ошибка. Можете тогда пояснить? Указать размер памяти это FlashSize? Я ставлю: 4MB (FS:1MB OTA:~1019kb). Наименование используемых GPIO я понимаю. Я так понимаю, если бы я их неправильно указывал, то показания вообще не снимались бы, а если бы SCL и SDA неверно указал, то и устройство не определялось бы.
 

Сергей_Ф

Moderator
Команда форума
Для отвисания иногда достаточно перезагрузки кнопкой на WeMos, иногда это не помогает, надо вынуть из USB(пока пишу скетч, от USB порта компа питается), иногда это не помогает. Но тогда если SD-карту пошерудить в гнезде модуля вынув из USB, а потом воткнув, запускается.
Вот эти симптомы очень странные и наводят на мысли о недостаточном питании.
 
Когда программирую, соответственно запитываю от USB компьютера. Но там 3 датчика, DS1307 и собственно сама ESP.
Но специально купил 40ватт блок питания для питания этого устройства вместе с матрицами (их будет 16 штук). Так же виснет и с ним.(при этом матрицы еще не подключены и программная часть в скетч не вставлена)
Уточню. Оно само не виснет. WEB сервер работает, WebSoket работает, порт данные выдает. Не работает I2C. Часы кажут лажу и датчики тоже. На счет сброса кнопкой... в последниее время не сбрасывается. Ну точнее сбрасывается, но при загрузке сразу пишет, что ни одного устройства Wire не находит. После отключения питания или отключения от USB (если питается с компа), снова начинает загружатся и видит все устройства.
Так а что по поводу памяти из предыдущего сообщения?
Сейчас попробовал оставить один датчик AHT10 на 0Х38 порту. Инициализацию второго отключил и все щаги с ним связанные в скетче закомментировал. Посмотрю что будет.
 
Да, еще хочу добавить. Я пробовал в программе отключить оба AHT10 датчика, они не инициировались, библиотека не была подключена, данные с них не снимались, но на плату они припаяны были, Wire их видел. ВОт в таком состоянии зависаний не происходит.
Если датчики подключены, но данные с них снимаются раз в 10 минут, когда происходит запись данных в базу, так же зависаний нет. Виснет если снимать данные раз в секунду, для вывода на WEB страницу через WebSoket. При чем зависание происходит не сразу, а через 1-2-3 часа.
 
Снова завис. Ну чтож, буду искать интервал, при котором перестанет виснуть. Но если это поможет, то скорее всего не буду эти датчики использовать.
 
Сверху Снизу