Как хост взаимодействует со SmartDisplay через CAN-шину (управление светодиодом и индикатором с помощью физических и виртуальных переключателей)
Предисловие
Как известно, для управления Smart Display требуется системный интерфейс и протокол связи. Продукты Smart-Display интегрируются в систему для полноценного управления. В этом контексте, Arduino также может использоваться с позиции хост-управления. В данной статье предоставлен пример управления продуктами Smart-Display с точки зрения клиента и хоста, чтобы понять, как хост отправляет команду на изменение цвета индикатора с LED на Smart-Display.
Давайте создадим демонстрационный сценарий: на экране разместим сенсорную кнопку и применим физическую кнопку. Нажатие как физической, так и сенсорной кнопки изменит цвет индикатора на экране и включит или выключит внешний светодиод.
Введение
Это приложение предназначено для использования с 3,5-дюймовым стандартным умным дисплеем. В этом файле приложения будет объяснено, как модифицировать программу для добавления управления физическими кнопками, сенсорными кнопками и индикаторами на экране, а также светодиодом на плате. Будет рассмотрено также, как принимаются команды от хост-контроллера. Хостом является плата Arduino Mega 2560 с CAN Bus-шлюзом.
Структура приложения разработана в соответствии с нижеприведенной схемой.
Схема блока системы
Для демо нам потребуются следующие компоненты:
- 5” Smart Display.
- ARDUINO Mega 2560.
- Щит CAN шины для ARDUINO Mega 2560.
- Донгл CAN шины.
- Сенсорная физическая кнопка.
- Светодиод (LED).
- Программное обеспечение GUI-Builder версии 0.4.2 или выше.
Демонстрация будет поделена на три этапа:
- Проектровка дизайна в GUI Builder.
- Сборка и загрузка проекта.
- Программирование хоста Arduino.
Проектировка дизайна в GUI Builder
Для начала нужно запустить программу для создания графического интерфейса GUI Builder, чтобы создать новый проект и ввести имя проекта. Затем выбрать модель подключаемого дисплея. Далее требуется выбрать протокол и ориентацию отображения (по-умолчанию ландшафтный). После чего выбрать «Blank» в шаблоне пользовательского интерфейса и, нажать иконку «Create», чтобы создать новый проект, как показано на рис. ниже:
После нажатия на «create» должен открыться интерфейс GUI Builder
Согласно демо сценарию, вам нужно добавить кнопку и индикатор из раздела “Control”. Выберите иконку кнопки из раздела “Button”, иконку индикации из раздела “Indicator”, и перетащите их в область макета страницы.
Создание и загрузка проекта
Когда все предыдущие шаги выполнены, и создан дизайн макета, пришло время создать проект. Перейдите в раздел “Device” и выберите “Device Property”. Затем выберите настройки по умолчанию для скорости передачи данных (baud rate) или выберите их в соответствии с вашими требованиями. Рекомендуется установить одинаковое значение скорости передачи данных (baud rate) как в вашем коде Arduino, так и в средстве для создания графического интерфейса (GUI builder). Далее нажмите кнопку “Upload” для загрузки проекта, как показано на рисунке ниже:
По окончании процесса загрузки, нажмите кнопку «ОК»:
По завершении процесса загрузки должен появиться стартовый экран:
После стартового экрана произойдет переход на страницу с загруженным дизайном. Теперь процесс создания и загрузки завершен через средство для создания графического интерфейса (GUI builder), как показано на рисунке ниже:
Программирование хоста Arduino
Интегрированная среда разработки Arduino версии "IDE v2.0.4" используется для написания кода на Arduino. Для обмена данными по протоколу CAN bus использована библиотека mcp2515_can.h, а также несколько других вспомогательных библиотек. Для получения более подробной информации, пожалуйста, обратитесь к коду Arduino. Важно учесть адреса для подключения хоста к Smart Display. Если вы хотите узнать больше о том, как осуществляется обмен данными между хостом и умным дисплеем с помощью CAN bus Shield, обратитесь к журналу коммуникации GUI builder. Здесь в коде Arduino IDE определены все необходимые адреса регистров, как показано на рисунке ниже:
Индекс стиля кнопки соответствует 0 (0x2000), а индекс стиля индикатора соответствует 1 (0x2001) и определены в структуре CAN open. Важно учесть индекс объекта. Состояние объекта можно изменить при программировании на хосте Arduino, если известен его индекс, как показано в таблице журнала симуляции на рисунке ниже:
Здесь определен тип данных объекта. Если пользователь хочет добавить больше элементов, то им необходимо также определить тип данных для них здесь.
Код ниже показывает, как вызывается "ObjectFunCallback" для получения значения от каждого объекта. Пользователи могут изменять или добавлять больше элементов ниже этого кода.
Когда хост Arduino получает изменение значения от физической кнопки-сенсора, он будет отправлять определенные значения на Smart Display через протоколы CAN-шины. Пожалуйста, обратитесь к следующей программе для ключевых моментов "идентификаторов структуры команд и суб-индексов". Целью этой программы является обновление значения индикатора (индекс объекта 2) в соответствии с изменением значения от физической кнопки-сенсора.
Задайте адреса регистров для всех объектов, режимы пинов и настройки для внешних аксессуаров, таких как физические кнопки и пины светодиода как вход или выход. Также установите скорость передачи данных (baud rate), как показано на рисунке ниже:
В заключение, здесь определена задача в цикле (loop) для выполнения выбранного сценария. При нажатии на физическую кнопку или сенсорную кнопку будет изменяться цвет индикатора на экране и включаться или выключаться внешний светодиод.
Appendix:Set Up the Project
После успешной проверки и загрузки программы через Arduino IDE, можно начать демонстрацию. Нажимая на физические кнопки или сенсорные кнопки, можно включить светодиод и изменить цвет индикатора на зеленый. Когда индикатор отображает красный цвет и светодиод выключен, это означает, что ни физическая кнопка, ни сенсорная кнопка не нажаты. Как показано на рисунке ниже:
Чтобы скачать вышеуказанную программу и получить больше подробностей о данном демо-проекте, пожалуйста перейдите по ссылке на GitHub(https://bit.ly/3oT0o5M)
Congratulations, the design and demo of the Smart Display is completed with a physical button and LED to change the Inductor color while pressing the physical button or touch button.
Заключение
Целью данной статьи является продвижение работы и применения средства для создания графического интерфейса (GUI builder). Таким образом, пользователи могут понять, как разрабатывать собственные контроллеры со стороны хоста через различные протоколы связи. Пользователь также может понять, как осуществлять прием и отправку команд через хост. Они могут получить полный контроль над Умным Дисплеем и использовать его различными способами.