Возникало ли у вас желание собрать проект с использованием дисплея без пайки и программирования? Просто взять дисплей, который у вас есть, установить его на плату, подключить к ПК и с помощью программы сделать интерфейс, который не только отправляет и получает данные по UART, но и по UDP и MQTT.
Отличная новость: моя новая плата DCM-AT001 - Display controller mini поможет вам в реализации вашей идеи. Я протестировал плату на совместимость с семью дисплеями разного размера, с резистивным сенсором и без. Но обо всем по порядку. И сразу отвечу на вопрос, который точно зададут одним из первых: «Зачем нужна плата, если в Китае есть куча готовых решений?». Да, в Китае много чего можно купить. Но аналогов моему программно-аппаратному решению на ESP32 нет ни в Китае, ни в мире! И, скорее всего, в ближайшие 2-5 лет не появится.
Для совместимости EasyHMI с дисплеями, с DCM-AT001 - Display controller mini, а также с дисплеями от 4,3 до 7 дюймов, я переписал приложение. В приложении появилось меню выбора типа устройства для обновления прошивки. Актуальная версия — EasyHMI 0.1.4.1b.
В предыдущей версии я добавил возможность добавления иконок в проект с ограничением. Для снятия ограничений и устранения багов пришлось переписать 60% приложения для ПК и 40% кода для дисплея. Протокол обмена данными между дисплеем и ПК был полностью переписан.
Внимание! Начиная с данной версии, протокол обмена данными дисплея с программой изменён и несовместим с предыдущими версиями. Не забывайте обновить прошивку на дисплее!
Внимание! Начиная с данной версии, приложение не будет работать на Windows XP.
EasyHMI с версии 0.1.3b поддерживает работу по протоколу MQTT «из коробки», без необходимости писать код. В данном уроке рассмотрим, как настроить работу с MQTT-брокером. Получим данные от дисплея в онлайн-брокере wqtt.ru, а также передадим данные на дисплей по MQTT.
Отступление от урока: Я не специалист по работе с MQTT-брокером и настроил работу с данным протоколом, как понимаю на данный момент. Если у вас есть предложения по улучшению и оптимизации работы, пишите мне в личные сообщения в ВК или ТГ.
Какие дисплеи поддерживают работу по MQTT.
Начиная с версии EasyHMI 0.1.3b, появилась возможность добавлять иконки в виджет и проект. Но для добавления иконки в проект требуется изображения преобразовать и сжать, что накладывает некоторые ограничения. На данный момент я протестировал загрузку иконок до 128х128 px, но для загрузки сделал ограничение 50х50 px. Также не все иконки данного размера можно загрузить: всё зависит от исходного изображения и от того, получается ли упаковать его нормально. О чём вас предупредит программа. В более новых версиях EasyHMI данное ограничение я уберу.
Сегодня в уроке рассмотрим создание фигур, иногда я их называю плашками. Если в тексте урока встретится слово «плашки», знайте, что я имею в виду инструмент «Фигуры» в меню элементов в разделе «Виджеты».
Несмотря на то, что фигуры являются пассивным элементом, то есть не выполняют никаких действий при нажатии на сенсор в отличие от кнопок, они являются одним из основных элементов. Фигуры можно использовать в крайне неочевидном ключе. Например, для того чтобы скрыть часть интерфейса или сделать всплывающее окно. Да даже просто сделать декор для кнопки, но тут есть свои ограничения, о чем расскажу в данном уроке.
Инструмент "Фигуры" в Easy HMI.
По многочисленным просьбам в программу была добавлена возможность добавлять иконки и использовать их при создании виджетов и проектов. Также реализована работа по Wi-Fi и возможность «из коробки» организовать работу по MQTT. И это, как всегда, без написания кода и настройки дополнительных конфигурационных файлов.
Внимание! Важная рекомендация по данной версии прошивки: отключайте беспроводную связь при создании интерфейса. Включайте её, когда интерфейс будет готов. В противном случае интерфейс может загружаться не полностью, а обновления на дисплее будут происходить долго, так как дисплей подключается к сети и получает подтверждения, что занимает 3–5 сек.
Вы уже, наверное, в курсе, что Easy HMI получил поддержку беспроводной связи по UDP. Если нет, то ознакомьтесь с новыми возможностями тут. А так как есть беспроводной интерфейс, неплохо было бы сделать удаленное управление реле. Что, в свою очередь, позволит управлять светом, вытяжкой, вентилятором, чайником, кофемашиной, обогревателем и другими устройствами и приборами. Для реализации данной идеи можно использовать готовые модули на базе ESP32 и/или ESP8266. Я уже рассказывал про модуль ESP12F Relay X4 (LC-Relay-ESP12-4R-MV – по даташиту). Сегодня напишем код для управления данным модулем и также посмотрим, как можно управлять по UDP 2, 3, 5, 10 и даже 12 группами реле с одного сенсорного дисплея. Думаете, это невозможно реализовать? Давайте разберемся!
Создаем интерфейс управления реле по UDP в среде разработки Easy HMI.
Ранее я уже создавал проекты по управлению реле с использованием сенсорных дисплеев DWIN и Nextion. Реализация этих проектов не представляет большой сложности. Для этого требуется отрисовывать графику, правильно её нарезать и предварительно изучить недружелюбную документацию, в случае DWIN. С помощью программы Easy HMI это можно сделать гораздо быстрее. Создать проект можно минут за 20–30. Также для данного проекта я написал максимально простой код с минимумом массивов и циклов, что позволит новичку изменять и расширять проект. Также я написал второй, более сложный вариант кода с управлением двумя группами реле. Все настройки вынес в начало кода. Но обо всем по порядку.
Создаем интерфейс управления реле для дисплея в среде разработки Easy HMI.
Работа по беспроводной сети планировалась при старте разработки Easy HMI и дисплеев AT HMI. В первых версиях также была заложена работа по беспроводной сети с использованием собственного протокола. Однако обучение новому протоколу оказалось гораздо сложнее, чем предоставление возможности работать с уже знакомым протоколом передачи данных. Поэтому было принято решение сделать реализацию общения по протоколу UDP. Также в новой версии программы добавлены некоторые настройки для дисплеев, что расширяет возможности и спектр их применения в различных проектах, начиная от простых панелей для управления светом или подсветкой и заканчивая интеграцией в систему умного дома.
Поддержка UDP в Easy HMI.
В предыдущем уроке мы познакомились с созданием виджета «Кнопка» и добавили кнопки в проект. Кроме функций, которые были рассмотрены в прошлом уроке, у кнопок есть дополнительные функции, которые можно изменить и настроить при создании или редактировании проекта. В этом уроке мы настроим переходы между страницами интерфейса и управление выводами GPIO с помощью кнопок.
Дополнительные возможности кнопки в Easy HMI.
Давайте откроем предыдущий созданный проект. Выделим любую кнопку, и в свойствах увидим, что у кнопки есть такие параметры как: