GyverLamp+LCD+метеодатчики на Blynk
GyverLamp+LCD+метеодатчики на Blynk
Привет всем.
Загорелся собрать два ночника в спальню на базе проекта Гайвера. Только решил добавить туда датчики (CO2 MH-Z19B, температура и влажность GY21), отображать часы и показания датчиков на дисплее LCD 0.96 с отправкой данных на Blynk. Ну и управление лампой тоже через Blynk. Еще планируется сенсорная кнопка сверху, но пока без нее. В основании лампы кроме экрана предусмотрены два порта USB для зарядки телефонов.
Основание лампы и верхняя крышка - печать на 3d принтере, вот концепт:
[spoiler] [/spoiler]
Схема подключения всего барахла: [spoiler] [/spoiler]
Создал проект в flprog, очень помогли в этом блоки матрицы от [ref]edyapd[/ref] и блоки по работе с дисплеем [ref]aidar_i[/ref], за что им огромное спасибо.
Flprog версия 6.2.2 по ссылке Эдуарда, IDE 1.8.10
Проблема заключается в том, что если я загружаю проект только по работе с матрицей (на библиотеке FastLED), то матрица работает, blynk тоже без проблем, вот проект: если загружаю проект по работе с LCD и датчиками (без матрицы), то тоже все работает, данные датчиков отображаются на дисплее и всё подключено к blynk, вот проект: Но если я хочу совместить эти два проекта в один, то микроконтроллер виснет и не работает, дисплей молчит, blynk показывает циклический connect-disconnect. И не работает прошивка МК через OTA, теперь только по usb.
Вот сборный проект: Питание обеспечивает хороший БП 20W 5v, специально купил в магазине радиотехники.
В чем может быть причина или что я делаю не так?
Загорелся собрать два ночника в спальню на базе проекта Гайвера. Только решил добавить туда датчики (CO2 MH-Z19B, температура и влажность GY21), отображать часы и показания датчиков на дисплее LCD 0.96 с отправкой данных на Blynk. Ну и управление лампой тоже через Blynk. Еще планируется сенсорная кнопка сверху, но пока без нее. В основании лампы кроме экрана предусмотрены два порта USB для зарядки телефонов.
Основание лампы и верхняя крышка - печать на 3d принтере, вот концепт:
[spoiler] [/spoiler]
Схема подключения всего барахла: [spoiler] [/spoiler]
Создал проект в flprog, очень помогли в этом блоки матрицы от [ref]edyapd[/ref] и блоки по работе с дисплеем [ref]aidar_i[/ref], за что им огромное спасибо.
Flprog версия 6.2.2 по ссылке Эдуарда, IDE 1.8.10
Проблема заключается в том, что если я загружаю проект только по работе с матрицей (на библиотеке FastLED), то матрица работает, blynk тоже без проблем, вот проект: если загружаю проект по работе с LCD и датчиками (без матрицы), то тоже все работает, данные датчиков отображаются на дисплее и всё подключено к blynk, вот проект: Но если я хочу совместить эти два проекта в один, то микроконтроллер виснет и не работает, дисплей молчит, blynk показывает циклический connect-disconnect. И не работает прошивка МК через OTA, теперь только по usb.
Вот сборный проект: Питание обеспечивает хороший БП 20W 5v, специально купил в магазине радиотехники.
В чем может быть причина или что я делаю не так?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
GyverLamp+LCD+метеодатчики на Blynk
Пока сильно не вникал. Из того, что вижу.
1. Плата на рисунке у вас перевёрнута, но надеюсь подключение вы делали не по этому рисунку.
2. Тянуть землю через плату не стоит не при каких подключения. То есть, GND должна подходить ко всем датчикам, а особенно к Матрице минуя плату.
Но это так, можно сказать придирки.
Далее, скачайте себе вот этот рисунок и прежде чем подключить какой-либо пин как вход, всегда сверяйтесь с ним.
[spoiler=Схема NodeMCU] [/spoiler]
К примеру, я вижу, что у вас считывается с датчика СО2 через D3. Это GPIO0. При рестарте это вход должен находится в определённом состоянии.
По проекту посмотрю позже.
1. Плата на рисунке у вас перевёрнута, но надеюсь подключение вы делали не по этому рисунку.
2. Тянуть землю через плату не стоит не при каких подключения. То есть, GND должна подходить ко всем датчикам, а особенно к Матрице минуя плату.
Но это так, можно сказать придирки.
Далее, скачайте себе вот этот рисунок и прежде чем подключить какой-либо пин как вход, всегда сверяйтесь с ним.
[spoiler=Схема NodeMCU] [/spoiler]
К примеру, я вижу, что у вас считывается с датчика СО2 через D3. Это GPIO0. При рестарте это вход должен находится в определённом состоянии.
По проекту посмотрю позже.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
GyverLamp+LCD+метеодатчики на Blynk
точно, картинка перевернута, но не суть, названия пинов правильные.edyapd писал(а): 02 фев 2020, 14:00 1. Плата на рисунке у вас перевёрнута, но надеюсь подключение вы делали не по этому рисунку.
Согласен, знаю это, тупо нарисовал не так как есть на самом деле, "срезал путь" так сказать. Земля у меня приходит от БП на пин G тот что рядом с VIN, и туда же все "земли" от всех элементов.edyapd писал(а): 02 фев 2020, 14:00 2. Тянуть землю через плату не стоит не при каких подключения. То есть, GND должна подходить ко всем датчикам, а особенно к Матрице минуя плату.
Отправлено спустя 1 час 16 минут 26 секунд:
переставил на D5 безрезультатно.
картинка для меня довольно сложная, я не очень понимаю что я там должен увидеть. На каком-то форуме взял картинку для гарантированно надежной работы подключенных элементов, вот стараюсь по ней подключать
[spoiler] [/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Полковник
- Сообщения: 3360
- Зарегистрирован: 24 дек 2016, 16:55
- Откуда: Уфа
- Имя: Айдар
- Благодарил (а): 14 раз
- Поблагодарили: 100 раз
- Контактная информация:
GyverLamp+LCD+метеодатчики на Blynk
Для начала сделайте так[spoiler]
Второй OR поставлен, чтобы очистка дисплея при компиляции стояла раньше.
[/spoiler]Второй OR поставлен, чтобы очистка дисплея при компиляции стояла раньше.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось aidar_i 02 фев 2020, 18:00, всего редактировалось 1 раз.
-
- Полковник
- Сообщения: 3360
- Зарегистрирован: 24 дек 2016, 16:55
- Откуда: Уфа
- Имя: Айдар
- Благодарил (а): 14 раз
- Поблагодарили: 100 раз
- Контактная информация:
GyverLamp+LCD+метеодатчики на Blynk
Матрица с датчиками без дисплея работает?
И delay(1) попробуйте убрать.
И delay(1) попробуйте убрать.
GyverLamp+LCD+метеодатчики на Blynk
Там где написано "matters needing attention", указано, какое состояние должно быть на пинах при каждой загрузке, ресет или просыпании. Если эти пины используются как выход и никуда не подтянуты, то это нормально. Если же их использовать как вход, то надо следить, чтобы при ресет там были нужные уровни.
-
- Полковник
- Сообщения: 3360
- Зарегистрирован: 24 дек 2016, 16:55
- Откуда: Уфа
- Имя: Айдар
- Благодарил (а): 14 раз
- Поблагодарили: 100 раз
- Контактная информация:
GyverLamp+LCD+метеодатчики на Blynk
Нужно определить , что чему мешает, путем исключения сперва физически, потом с проекта, компонентов.
GyverLamp+LCD+метеодатчики на Blynk
[ref]Mozgoklui[/ref], какую библиотеку вы используете для Blynk? Хочу попытаться закинуть в свою NodeMCU, но нет библиотеки. Дайте ссылку.
GyverLamp+LCD+метеодатчики на Blynk
у меня их две
[spoiler] [/spoiler]
блоки использую эти:
[spoiler] [/spoiler]
[ref]aidar_i[/ref], я ошибся. Внес изменения как вы сказали и кое-как заработало. Просто в первый раз не настроен был главный блок blynk. Но управление матрицей страшно тормозит и ошибается (например при изменении яркости она меняется хаотично с тормозами). При этом любое действие с кнопками или ползунками Blynk вызывает моргание и дисплея. А если сильно часто понажимать, то все зависло и никакой ресет не помог, пока не залил прошивку заново. Но уже что-то.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Полковник
- Сообщения: 3360
- Зарегистрирован: 24 дек 2016, 16:55
- Откуда: Уфа
- Имя: Айдар
- Благодарил (а): 14 раз
- Поблагодарили: 100 раз
- Контактная информация:
GyverLamp+LCD+метеодатчики на Blynk
Попробуйте отключить в программе вход С матрицы. Остальное как работает?
Мне кажется матрица конфликтует со скоростным счетчиком.
Мне кажется матрица конфликтует со скоростным счетчиком.
GyverLamp+LCD+метеодатчики на Blynk
[ref]Mozgoklui[/ref], глянул проект. По хорошему надо всё переделывать заново.
Вот например два места из проекта, которые я бы точно сделал по другому:


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


У вас при каждом изменении идёт запись в EEPROM. А на втором рисунке в каждом цикле считывается EEPROM в переменную.
Как сделал бы я. При старте программы проверил, что EEPROM инициализирована. Если да, то считал из неё данные в переменные. После этого вся работа только с этими переменными. При выключении сохранение этих переменных в EEPROM. В крайнем случаи можно сделать сохранение через определённое время после последнего изменения. Скажем изменили какую-то переменную, которая должна быть сохранена в EEPROM, поставили таймер на 30-60 секунд. Если за это время никаких изменений не было, то сохраняем переменную, если были изменения, то срабатывание таймера отодвигается снова на заданное время.
Если EEPROM не инициализирована, то произвёл запись в переменные по умолчанию.
Далее, я вижу что вы выводите значения на дисплей тоже в каждом цикле. Возможно стоит сделать так, чтобы значения выводились только после очистки. Так как дисплей вполне сохраняет введённые данные без обновления.
Скоростной счётчик, тоже работает у вас без остановки. Навряд ли у вас меняется содержание СО2 каждую секунду. По моему вполне можно сделать один замер в 2 сек.
Вот по Blynk рекомендаций дать не могу. Нет его у меня. Но тоже помнится с ним были какие-то тормоза, даже когда просто пытались сделать виртуальную кнопку.
GyverLamp+LCD+метеодатчики на Blynk
хорошо, менять так менять. А что есть инициализация EEPROM? Я думал пиши или читай с нее, больше и блоков нет в flprog. По сути устройство предполагается быть включенным круглосуточно, возможно и вообще обойдусь без сохранения настроек в еепром. Просто пока отладка идет, надоело после каждого рестарта клацать все эти ползунки пока не сработает матрица
Последний раз редактировалось Mozgoklui 02 фев 2020, 22:08, всего редактировалось 1 раз.
-
- Полковник
- Сообщения: 3360
- Зарегистрирован: 24 дек 2016, 16:55
- Откуда: Уфа
- Имя: Айдар
- Благодарил (а): 14 раз
- Поблагодарили: 100 раз
- Контактная информация:
GyverLamp+LCD+метеодатчики на Blynk
Посмотрел скомпилированный FLProg код, ПБ блинка нужно подправить. Блоки созданы так, что они при компиляции неправильно располагают некоторые строки кода.
Отправлено спустя 31 минуту 42 секунды:
Попробуйте загрузить Не забудьте свои данные поставить в блинк сюда
char auth_91371725_1[] = "";
char ssid_91371725_1[] = "";
char pass_91371725_1[] = "";
Отправлено спустя 31 минуту 42 секунды:
Попробуйте загрузить Не забудьте свои данные поставить в блинк сюда
char auth_91371725_1[] = "";
char ssid_91371725_1[] = "";
char pass_91371725_1[] = "";
У вас нет необходимых прав для просмотра вложений в этом сообщении.
GyverLamp+LCD+метеодатчики на Blynk
Примерно так.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
GyverLamp+LCD+метеодатчики на Blynk
[ref]aidar_i[/ref], уже намного лучше, но все равно при активном юзании настроек огня МК перезапускается. Однако лучше. Что конкретно было не в правильном порядке?
И кстати, как оптимальнее всего создать паузу считывания данных температуры и влажности? Уж больно бойкий этот датчик, явно прослеживаются рывки в момент прихода данных с него и отправки в экран/blynk. Какими блоками лучше настроить частоту обновления?
Отправлено спустя 1 час 30 минут 7 секунд:
[ref]edyapd[/ref], спасибо, очень круто, понял как работает, буду применять. Сейчас для исключения проблемы вообще уберу eeprom из проекта.
И кстати, как оптимальнее всего создать паузу считывания данных температуры и влажности? Уж больно бойкий этот датчик, явно прослеживаются рывки в момент прихода данных с него и отправки в экран/blynk. Какими блоками лучше настроить частоту обновления?
Отправлено спустя 1 час 30 минут 7 секунд:
[ref]edyapd[/ref], спасибо, очень круто, понял как работает, буду применять. Сейчас для исключения проблемы вообще уберу eeprom из проекта.
-
- Полковник
- Сообщения: 3360
- Зарегистрирован: 24 дек 2016, 16:55
- Откуда: Уфа
- Имя: Айдар
- Благодарил (а): 14 раз
- Поблагодарили: 100 раз
- Контактная информация:
GyverLamp+LCD+метеодатчики на Blynk
В сетап , скомпилируй и сравни с моим, должен увидеть.
Я в скетче delay(1) не убирал, убери только его, остальные не трогай.
Обрати внимание на эти строки, они должны быть в декларации и не включать в себя строки из сетап.
Отправлено спустя 19 минут 7 секунд:
Убрал сам делау Отправлено спустя 2 минуты 16 секунд:
Я в скетче 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();
}
Убрал сам делау Отправлено спустя 2 минуты 16 секунд:
Определись как часто нужно это! я думаю секунды это мало, нужно от 1 до 5 минут или больше. У нас температуру смотреть каждую секунду нет необходимости.Mozgoklui писал(а): 03 фев 2020, 18:52 как оптимальнее всего создать паузу считывания данных температуры и влажности?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
GyverLamp+LCD+метеодатчики на Blynk
[ref]aidar_i[/ref], а вы прямо в IDE правили или сами блоки blynka поправили? Просто я в IDE ноль без палочки, отличия-то я нашел, но вот каждый раз копипастить при загрузке в МК это то еще удовольствие.. А отлаживать еще долго предстоит. Хотелось бы в flprog бы, уж простите за назойливость 

Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя