Страница 1 из 2

GyverLamp+LCD+метеодатчики на Blynk

Добавлено: 02.02.2020{, 13:09}
Mozgoklui
Привет всем.
Загорелся собрать два ночника в спальню на базе проекта Гайвера. Только решил добавить туда датчики (CO2 MH-Z19B, температура и влажность GY21), отображать часы и показания датчиков на дисплее LCD 0.96 с отправкой данных на Blynk. Ну и управление лампой тоже через Blynk. Еще планируется сенсорная кнопка сверху, но пока без нее. В основании лампы кроме экрана предусмотрены два порта USB для зарядки телефонов.
Основание лампы и верхняя крышка - печать на 3d принтере, вот концепт:
СпойлерПоказать
_2020-Feb-02_09-17-58AM-000_CustomizedView11382509921.jpg
_2020-Feb-02_09-13-28AM-000_CustomizedView30875145962.jpg
_2020-Feb-02_08-43-04AM-000_CustomizedView18928698144.png

Схема подключения всего барахла:
СпойлерПоказать
Буфер обмена01.jpg
Создал проект в flprog, очень помогли в этом блоки матрицы от edyapd и блоки по работе с дисплеем aidar_i, за что им огромное спасибо.
Flprog версия 6.2.2 по ссылке Эдуарда, IDE 1.8.10
Проблема заключается в том, что если я загружаю проект только по работе с матрицей (на библиотеке FastLED), то матрица работает, blynk тоже без проблем, вот проект:
n_matrix.flp
(388.32 КБ) 79 скачиваний
если загружаю проект по работе с LCD и датчиками (без матрицы), то тоже все работает, данные датчиков отображаются на дисплее и всё подключено к blynk, вот проект:
n_lcd_gy21_mhz19b.flp
(534.42 КБ) 74 скачивания
Но если я хочу совместить эти два проекта в один, то микроконтроллер виснет и не работает, дисплей молчит, blynk показывает циклический connect-disconnect. И не работает прошивка МК через OTA, теперь только по usb.
Вот сборный проект:
n_all.flp
(924.38 КБ) 63 скачивания
Питание обеспечивает хороший БП 20W 5v, специально купил в магазине радиотехники.
В чем может быть причина или что я делаю не так?

GyverLamp+LCD+метеодатчики на Blynk

Добавлено: 02.02.2020{, 14:00}
edyapd
Пока сильно не вникал. Из того, что вижу.
1. Плата на рисунке у вас перевёрнута, но надеюсь подключение вы делали не по этому рисунку.
2. Тянуть землю через плату не стоит не при каких подключения. То есть, GND должна подходить ко всем датчикам, а особенно к Матрице минуя плату.
Но это так, можно сказать придирки.
Далее, скачайте себе вот этот рисунок и прежде чем подключить какой-либо пин как вход, всегда сверяйтесь с ним.
Схема NodeMCUПоказать
NodeMCU-schematic-diagram.jpg
К примеру, я вижу, что у вас считывается с датчика СО2 через D3. Это GPIO0. При рестарте это вход должен находится в определённом состоянии.
По проекту посмотрю позже.

GyverLamp+LCD+метеодатчики на Blynk

Добавлено: 02.02.2020{, 15:25}
Mozgoklui
edyapd писал(а):
02.02.2020{, 14:00}
1. Плата на рисунке у вас перевёрнута, но надеюсь подключение вы делали не по этому рисунку.
точно, картинка перевернута, но не суть, названия пинов правильные.
edyapd писал(а):
02.02.2020{, 14:00}
2. Тянуть землю через плату не стоит не при каких подключения. То есть, GND должна подходить ко всем датчикам, а особенно к Матрице минуя плату.
Согласен, знаю это, тупо нарисовал не так как есть на самом деле, "срезал путь" так сказать. Земля у меня приходит от БП на пин G тот что рядом с VIN, и туда же все "земли" от всех элементов.

Отправлено спустя 1 час 16 минут 26 секунд:
edyapd писал(а):
02.02.2020{, 14:00}
считывается с датчика СО2 через D3. Это GPIO0
переставил на D5 безрезультатно.
картинка для меня довольно сложная, я не очень понимаю что я там должен увидеть. На каком-то форуме взял картинку для гарантированно надежной работы подключенных элементов, вот стараюсь по ней подключать
СпойлерПоказать
NodeMCU_GPIO_number_gpio.jpg

GyverLamp+LCD+метеодатчики на Blynk

Добавлено: 02.02.2020{, 17:19}
aidar_i
Для начала сделайте так
СпойлерПоказать
Снимок_2020_02_02_19_27_39_844.png
Второй OR поставлен, чтобы очистка дисплея при компиляции стояла раньше.

GyverLamp+LCD+метеодатчики на Blynk

Добавлено: 02.02.2020{, 17:39}
Mozgoklui
aidar_i писал(а):
02.02.2020{, 17:19}
Для начала сделайте так
готово. На работоспособность не повлияло.

GyverLamp+LCD+метеодатчики на Blynk

Добавлено: 02.02.2020{, 18:09}
aidar_i
Матрица с датчиками без дисплея работает?
И delay(1) попробуйте убрать.

GyverLamp+LCD+метеодатчики на Blynk

Добавлено: 02.02.2020{, 18:31}
edyapd
Mozgoklui писал(а):
02.02.2020{, 16:41}
я не очень понимаю что я там должен увидеть
Там где написано "matters needing attention", указано, какое состояние должно быть на пинах при каждой загрузке, ресет или просыпании. Если эти пины используются как выход и никуда не подтянуты, то это нормально. Если же их использовать как вход, то надо следить, чтобы при ресет там были нужные уровни.

GyverLamp+LCD+метеодатчики на Blynk

Добавлено: 02.02.2020{, 18:46}
aidar_i
Нужно определить , что чему мешает, путем исключения сперва физически, потом с проекта, компонентов.

GyverLamp+LCD+метеодатчики на Blynk

Добавлено: 02.02.2020{, 18:51}
edyapd
Mozgoklui, какую библиотеку вы используете для Blynk? Хочу попытаться закинуть в свою NodeMCU, но нет библиотеки. Дайте ссылку.

GyverLamp+LCD+метеодатчики на Blynk

Добавлено: 02.02.2020{, 19:12}
Mozgoklui
edyapd писал(а):
02.02.2020{, 18:51}
какую библиотеку вы используете для Blynk?
у меня их две
СпойлерПоказать
BlynkESP8266_Lib.zip
(11.59 КБ) 55 скачиваний
Blynk.zip
(518.63 КБ) 58 скачиваний
блоки использую эти:
СпойлерПоказать
Отправка_string_в__Blynk_(CODE).ubi
(9.77 КБ) 46 скачиваний
Отправка_integer_в_Blunk_(CODE).ubi
(15.86 КБ) 48 скачиваний
Отправка_float_в__Blynk_(CODE).ubi
(10.4 КБ) 49 скачиваний
Из_Blynk_Integer_(CODE).ubi
(11 КБ) 46 скачиваний
Из_Blynk_boolean_(CODE).ubi
(11 КБ) 51 скачивание
OTA_Blynk_(CODE).ubi
(38.1 КБ) 45 скачиваний
Blynk_ESP_BASE_(CODE).ubi
(9.82 КБ) 50 скачиваний
aidar_i, я ошибся. Внес изменения как вы сказали и кое-как заработало. Просто в первый раз не настроен был главный блок blynk. Но управление матрицей страшно тормозит и ошибается (например при изменении яркости она меняется хаотично с тормозами). При этом любое действие с кнопками или ползунками Blynk вызывает моргание и дисплея. А если сильно часто понажимать, то все зависло и никакой ресет не помог, пока не залил прошивку заново. Но уже что-то.

GyverLamp+LCD+метеодатчики на Blynk

Добавлено: 02.02.2020{, 19:25}
aidar_i
Попробуйте отключить в программе вход С матрицы. Остальное как работает?
Мне кажется матрица конфликтует со скоростным счетчиком.

GyverLamp+LCD+метеодатчики на Blynk

Добавлено: 02.02.2020{, 20:17}
Mozgoklui
aidar_i писал(а):
02.02.2020{, 19:25}
Попробуйте отключить в программе вход С матрицы.
Не очень понял, это какой вход?

GyverLamp+LCD+метеодатчики на Blynk

Добавлено: 02.02.2020{, 20:28}
aidar_i
Вход С блока FastLed faire1.

GyverLamp+LCD+метеодатчики на Blynk

Добавлено: 02.02.2020{, 20:33}
edyapd
Mozgoklui, глянул проект. По хорошему надо всё переделывать заново.
Вот например два места из проекта, которые я бы точно сделал по другому:

ИзображениеИзображение

У вас при каждом изменении идёт запись в EEPROM. А на втором рисунке в каждом цикле считывается EEPROM в переменную.
Как сделал бы я. При старте программы проверил, что EEPROM инициализирована. Если да, то считал из неё данные в переменные. После этого вся работа только с этими переменными. При выключении сохранение этих переменных в EEPROM. В крайнем случаи можно сделать сохранение через определённое время после последнего изменения. Скажем изменили какую-то переменную, которая должна быть сохранена в EEPROM, поставили таймер на 30-60 секунд. Если за это время никаких изменений не было, то сохраняем переменную, если были изменения, то срабатывание таймера отодвигается снова на заданное время.
Если EEPROM не инициализирована, то произвёл запись в переменные по умолчанию.
Далее, я вижу что вы выводите значения на дисплей тоже в каждом цикле. Возможно стоит сделать так, чтобы значения выводились только после очистки. Так как дисплей вполне сохраняет введённые данные без обновления.
Скоростной счётчик, тоже работает у вас без остановки. Навряд ли у вас меняется содержание СО2 каждую секунду. По моему вполне можно сделать один замер в 2 сек.
Вот по Blynk рекомендаций дать не могу. Нет его у меня. Но тоже помнится с ним были какие-то тормоза, даже когда просто пытались сделать виртуальную кнопку.

GyverLamp+LCD+метеодатчики на Blynk

Добавлено: 02.02.2020{, 22:07}
Mozgoklui
edyapd писал(а):
02.02.2020{, 20:33}
При старте программы проверил, что EEPROM инициализирована.
хорошо, менять так менять. А что есть инициализация EEPROM? Я думал пиши или читай с нее, больше и блоков нет в flprog. По сути устройство предполагается быть включенным круглосуточно, возможно и вообще обойдусь без сохранения настроек в еепром. Просто пока отладка идет, надоело после каждого рестарта клацать все эти ползунки пока не сработает матрица

GyverLamp+LCD+метеодатчики на Blynk

Добавлено: 02.02.2020{, 22:07}
aidar_i
Посмотрел скомпилированный FLProg код, ПБ блинка нужно подправить. Блоки созданы так, что они при компиляции неправильно располагают некоторые строки кода.

Отправлено спустя 31 минуту 42 секунды:
Попробуйте загрузить
pr8.ino
(24.04 КБ) 42 скачивания
Не забудьте свои данные поставить в блинк сюда
char auth_91371725_1[] = "";
char ssid_91371725_1[] = "";
char pass_91371725_1[] = "";

GyverLamp+LCD+метеодатчики на Blynk

Добавлено: 03.02.2020{, 06:23}
edyapd
Mozgoklui писал(а):
02.02.2020{, 22:07}
А что есть инициализация EEPROM?
Примерно так.
Init_EEPROM.flp
(160.71 КБ) 64 скачивания

GyverLamp+LCD+метеодатчики на Blynk

Добавлено: 03.02.2020{, 17:22}
Mozgoklui
aidar_i, уже намного лучше, но все равно при активном юзании настроек огня МК перезапускается. Однако лучше. Что конкретно было не в правильном порядке?
И кстати, как оптимальнее всего создать паузу считывания данных температуры и влажности? Уж больно бойкий этот датчик, явно прослеживаются рывки в момент прихода данных с него и отправки в экран/blynk. Какими блоками лучше настроить частоту обновления?

Отправлено спустя 1 час 30 минут 7 секунд:
edyapd, спасибо, очень круто, понял как работает, буду применять. Сейчас для исключения проблемы вообще уберу eeprom из проекта.

GyverLamp+LCD+метеодатчики на Blynk

Добавлено: 03.02.2020{, 19:17}
aidar_i
В сетап , скомпилируй и сравни с моим, должен увидеть.
Я в скетче delay(1) не убирал, убери только его, остальные не трогай.
Обрати внимание на эти строки, они должны быть в декларации и не включать в себя строки из сетап.

Код: Выделить всё

BLYNK_WRITE(V0) // запрос данных с датчика
{
 out_105346681_2 = param.asInt();
}
BLYNK_WRITE(V1) // запрос данных с датчика
{
 out_252228968_4 = param.asInt();
}
BLYNK_WRITE(V3) // запрос данных с датчика
{
 out_252228968_1 = param.asInt();
}
BLYNK_WRITE(V2) // запрос данных с датчика
{
 out_252228968_5 = param.asInt();
}
BLYNK_WRITE(V4) // запрос данных с датчика
{
 out_252228968_3 = param.asInt();
}
Отправлено спустя 19 минут 7 секунд:
Убрал сам делау
pr8.zip
(6.5 КБ) 40 скачиваний
Отправлено спустя 2 минуты 16 секунд:
Mozgoklui писал(а):
03.02.2020{, 18:52}
как оптимальнее всего создать паузу считывания данных температуры и влажности?
Определись как часто нужно это! я думаю секунды это мало, нужно от 1 до 5 минут или больше. У нас температуру смотреть каждую секунду нет необходимости.

GyverLamp+LCD+метеодатчики на Blynk

Добавлено: 03.02.2020{, 21:33}
Mozgoklui
aidar_i, а вы прямо в IDE правили или сами блоки blynka поправили? Просто я в IDE ноль без палочки, отличия-то я нашел, но вот каждый раз копипастить при загрузке в МК это то еще удовольствие.. А отлаживать еще долго предстоит. Хотелось бы в flprog бы, уж простите за назойливость :smile469: