По сути речь пойдет не об автоматике, а о термометре на 3 датчика температуры и тревогой по достижению заданного параметра.
Сделал для себя, когда надоело прыгать вокруг колонны с термометрами-щупами, и захотелось спокойно смотреть телек, пока дело делается.
Cам совсем не программист, для написания софта использовал среду визуального программирования FLProg.
Код получился рабочим, но не без косяков и 100% может быть значительно улучшен.
Сам сейчас перехожу на автоматику, занят сборкой, но и свое творение использую регулярно.
Выкладываю все исходники - возможно кому-то будет полезным.
Элементная база:
Экран Некстион 3,5"
Arduino - в моем случае Мега, просто потому, что была. Нет проблемм сделать на любой другой.
Модуль контроля атмосферного давления BMP180
Светодиод, несколько резисторов и буззер.
Недоавтоматика на Arduino + Nextion
Thorr
Бакалавр
Прибалтика
97 70
03 Апр. 18, 09:30
argon43
Кандидат наук
ст.Динская
330 62
Отв.1 03 Апр. 18, 12:43
А под Экран Некстион 3,2",можете сделать?
Thorr
Бакалавр
Прибалтика
97 70
Отв.2 03 Апр. 18, 13:39, через 57 мин
А под Экран Некстион 3,2",можете сделать?argon43, 03 Апр. 18, 12:43
Сделать могу, но тут вопрос времени, а его нет.
Там все не сложно, сделать ресайз картинок (их всего 4) и перетянуть в нужные места кнопки в редакторе некстиона.
Картинки на другой размер могу сделать, если с фотошопом не дружите, это не долго.
argon43
Кандидат наук
ст.Динская
330 62
Отв.3 03 Апр. 18, 13:44, через 6 мин
Сделать могу, но тут вопрос времениThorr, 03 Апр. 18, 13:39Я подожду ,просто я не дружу с редакторами:(
Thorr
Бакалавр
Прибалтика
97 70
Отв.4 03 Апр. 18, 16:01
Выдалась пара минут - переделал прошивку под некстион 3,2
По интерфейсу появилась проблема - график температур теперь не вмещает шкалу до 100 градусов, цену деления в сетке задал как 20 точек (градусов). В оригинале было 25.
Тоесть просто ресайзом тут не ограничится - либо ввести коррекцию на моменте подсчета температуры, начинать не с 0 а с 20 градусов, это надо в ардуино менять, либо переделывать экран более злобно, а с этим возиться пока не хочется.
И есть подозрения, что числа перестали влезать в отведенные поля.
По интерфейсу появилась проблема - график температур теперь не вмещает шкалу до 100 градусов, цену деления в сетке задал как 20 точек (градусов). В оригинале было 25.
Тоесть просто ресайзом тут не ограничится - либо ввести коррекцию на моменте подсчета температуры, начинать не с 0 а с 20 градусов, это надо в ардуино менять, либо переделывать экран более злобно, а с этим возиться пока не хочется.
И есть подозрения, что числа перестали влезать в отведенные поля.
Tipp
Бакалавр
Уральск
90 5
Отв.5 29 Авг. 18, 14:50
Может кто-нибудь поподробнее чуть расписать? Тоже хочу собрать, на 2-3 датчика.
tanir196
Студент
Балашиха
26 2
Отв.6 26 Нояб. 18, 08:32
Помогите разобраться. Повторил проект, дисплей работает на иконки реагирует. Мега прошита в FLProg без ошибок.
В итоге температура не отображается и соответственно графики не строятся. DS18B20 проверял,на этих пинах работают.
Пробую только с одной термопарой и без датчика давления. Может быть это причиной или нет???
В итоге температура не отображается и соответственно графики не строятся. DS18B20 проверял,на этих пинах работают.
Пробую только с одной термопарой и без датчика давления. Может быть это причиной или нет???
Thorr
Бакалавр
Прибалтика
97 70
Отв.7 26 Нояб. 18, 18:26
Вы в коде ИД своего датчика прописали?
Датчики давления точно не причем, отсутствие других температурных тоже.
Датчики давления точно не причем, отсутствие других температурных тоже.
kon13
Специалист
Гомель
183 74
Отв.8 26 Нояб. 18, 19:15, через 50 мин
ИД своего датчика прописали?Thorr, 26 Нояб. 18, 18:26
Использование блока ScanOneWare решит проблему прописи DS-ок
tanir196
Студент
Балашиха
26 2
Отв.9 26 Нояб. 18, 20:50
Да ID прописан в FLProg шина сканируется. Подключаю только один датчик,другие входа висят в воздухе.
Можно как то в сериал мониторе в ардуино посмотреть что шлет датчик в экран?
В Nextion editor в окне Debug можно увидеть что шлет ардуино?
Можно как то в сериал мониторе в ардуино посмотреть что шлет датчик в экран?
В Nextion editor в окне Debug можно увидеть что шлет ардуино?
Thorr
Бакалавр
Прибалтика
97 70
Отв.10 26 Нояб. 18, 21:40, через 50 мин
Я уже подзабыл что где можно смотреть, но послушать порт 232 можно однозначно.
Там в обмене все просто: некстион получает значения датчиков от ардуино сразу после их изменения, а сам отправляет раз в секунду уставки тревоги.
Все датчики температуры у меня висели на пин2.
Порт 232 на пинах тх - 16, рх - 17 на ардуине.
Подключение тх на ардуине идет на рх на некстионе, здесь думаю не ошиблись.
Датчики подключал по схеме:
По сути, вы можете вместо Некстиона подключить терминалку, подогреть датчик и смотерть идет что-то аль нет.
О! Думаю понял - я на некстионе задал скорость общения 115200 (bauds=115200 в preinitialized events), чтобы график быстрее грузился, а в скетче осталось 9600.
Поправьте строку: Serial2.begin(9600);
Там в обмене все просто: некстион получает значения датчиков от ардуино сразу после их изменения, а сам отправляет раз в секунду уставки тревоги.
Все датчики температуры у меня висели на пин2.
Порт 232 на пинах тх - 16, рх - 17 на ардуине.
Подключение тх на ардуине идет на рх на некстионе, здесь думаю не ошиблись.
Датчики подключал по схеме:
По сути, вы можете вместо Некстиона подключить терминалку, подогреть датчик и смотерть идет что-то аль нет.
О! Думаю понял - я на некстионе задал скорость общения 115200 (bauds=115200 в preinitialized events), чтобы график быстрее грузился, а в скетче осталось 9600.
Поправьте строку: Serial2.begin(9600);
tanir196
Студент
Балашиха
26 2
Отв.11 28 Нояб. 18, 11:37
Ок буду пробовать.
Tomat7
Магистр
Черноморская губинния
236 138
Отв.12 28 Нояб. 18, 13:47
Вы в коде ИД своего датчика прописали?Thorr, 26 Нояб. 18, 18:26Кстати, а зачем? OneWire и не зная ИД всех вроде найдет и проиндексирует.
А если нужно знать какой в какое место колонны воткнуть - то при первом запуске нагревая руками можно определить... ;)
Либо вообще - каждый датчик на свой пин чтобы уж наверняка не запутаться [сообщение #12556687]
8)
tanir196
Студент
Балашиха
26 2
Отв.13 28 Нояб. 18, 19:25
Супер все заработало (поменял скорость) огромное спасибо ,буду вникать,изучать.
Thorr
Бакалавр
Прибалтика
97 70
Отв.14 29 Нояб. 18, 21:32
Кстати, а зачем? OneWire и не зная ИД всех вроде найдет и проиндексирует.Tomat7, 28 Нояб. 18, 13:47
Тут скетч писался не руками. Его писала FLProg - там по умолчанию задаются ид датчиков.
Может и можно по другому как-то, но я такого пути не увидел.
Thorr
Бакалавр
Прибалтика
97 70
Отв.15 29 Нояб. 18, 21:40, через 8 мин
Супер все заработалоtanir196, 28 Нояб. 18, 19:25Ну и отлично.
Насколько помню был баг - нельзя было задавать тревогу по температуре меньше 10 (могу ошибаться).
Связано с тем, что значения температур у меня сравниваются как строки, а не как числа.
Это не совсем корректно, но работает.
Сделано так потому, что Некстион не дружит с дробными числами и температура тревоги передается из него как строка.
tanir196
Студент
Балашиха
26 2
Отв.16 07 Дек. 18, 09:53
А переделать проект на UNO не позволит количество памяти?
Thorr
Бакалавр
Прибалтика
97 70
Отв.17 07 Дек. 18, 20:14
Не вижу препятствий.
tanir196
Студент
Балашиха
26 2
Отв.18 08 Дек. 18, 07:21
Вот так получилось для UNO. Может массив надо уменьшить? Я в этом не спец.
Скетч использует 23492 байт (72%) памяти устройства. Всего доступно 32256 байт.
Глобальные переменные используют 2237 байт (109%) динамической памяти, оставляя -189 байт для локальных переменных. Максимум: 2048 байт.
Скетч использует 23492 байт (72%) памяти устройства. Всего доступно 32256 байт.
Глобальные переменные используют 2237 байт (109%) динамической памяти, оставляя -189 байт для локальных переменных. Максимум: 2048 байт.
Thorr
Бакалавр
Прибалтика
97 70
Отв.19 09 Дек. 18, 10:38
Доберусь до компьютера - подумаю. Подозреваю, что количество глобальных переменных можно сильно сократить.
Уже не помню чего я там нагородил.
Уже не помню чего я там нагородил.