Страница 1 из 2
GyverLamp+LCD+метеодатчики на Blynk
Добавлено: 02.02.2020{, 13:09}
Mozgoklui
Привет всем.
Загорелся собрать два ночника в спальню на базе проекта Гайвера. Только решил добавить туда датчики (CO2 MH-Z19B, температура и влажность GY21), отображать часы и показания датчиков на дисплее LCD 0.96 с отправкой данных на Blynk. Ну и управление лампой тоже через Blynk. Еще планируется сенсорная кнопка сверху, но пока без нее. В основании лампы кроме экрана предусмотрены два порта USB для зарядки телефонов.
Основание лампы и верхняя крышка - печать на 3d принтере, вот концепт:
Схема подключения всего барахла:
Создал проект в flprog, очень помогли в этом блоки матрицы от
edyapd и блоки по работе с дисплеем
aidar_i, за что им огромное спасибо.
Flprog версия 6.2.2 по ссылке Эдуарда, IDE 1.8.10
Проблема заключается в том, что если я загружаю проект только по работе с матрицей (на библиотеке FastLED), то матрица работает, blynk тоже без проблем, вот проект:
если загружаю проект по работе с LCD и датчиками (без матрицы), то тоже все работает, данные датчиков отображаются на дисплее и всё подключено к blynk, вот проект:
Но если я хочу совместить эти два проекта в один, то микроконтроллер виснет и
не работает, дисплей молчит, blynk показывает циклический connect-disconnect. И не работает прошивка МК через OTA, теперь только по usb.
Вот сборный проект:
Питание обеспечивает хороший БП 20W 5v, специально купил в магазине радиотехники.
В чем может быть причина или что я делаю не так?
GyverLamp+LCD+метеодатчики на Blynk
Добавлено: 02.02.2020{, 14:00}
edyapd
Пока сильно не вникал. Из того, что вижу.
1. Плата на рисунке у вас перевёрнута, но надеюсь подключение вы делали не по этому рисунку.
2. Тянуть землю через плату не стоит не при каких подключения. То есть, GND должна подходить ко всем датчикам, а особенно к Матрице минуя плату.
Но это так, можно сказать придирки.
Далее, скачайте себе вот этот рисунок и прежде чем подключить какой-либо пин как вход, всегда сверяйтесь с ним.
К примеру, я вижу, что у вас считывается с датчика СО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 безрезультатно.
картинка для меня довольно сложная, я не очень понимаю что я там должен увидеть. На каком-то форуме взял картинку для гарантированно надежной работы подключенных элементов, вот стараюсь по ней подключать
GyverLamp+LCD+метеодатчики на Blynk
Добавлено: 02.02.2020{, 17:19}
aidar_i
Для начала сделайте так
Второй 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?
у меня их две
блоки использую эти:
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 секунды:
Попробуйте загрузить
Не забудьте свои данные поставить в блинк сюда
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?
Примерно так.
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 секунд:
Убрал сам делау
Отправлено спустя 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 бы, уж простите за назойливость