На главную страницу Технологии Smart Display Как отправить команду для переключения страницы на Smart Display через пользовательский CAN протокол

Как отправить команду для переключения страницы на Smart Display через пользовательский CAN протокол

Вступление

Для продвижения продуктов SmartDisplay мы понимаем, что связь по CAN может быть реализована с использованием различных протоколов, включая CANopen и пользовательские протоколы с собственными CAN ID. CANopen - это стандартизированный протокол, который определяет профили обмена данными, профили устройств и модели объектов для разных типов устройств. Он предоставляет стандартизированный способ настройки, мониторинга и управления устройствами на шине CAN.

С другой стороны, пользовательский протокол CAN ID часто используется, когда устройства на шине CAN имеют уникальные характеристики или требования, которые не покрываются существующими стандартными протоколами. Пользовательские протоколы могут предоставлять большую гибкость и эффективность по сравнению со стандартными протоколами.

Введение

Эта статья служит руководством для начинающих и энтузиастов, которые интересуются использованием платы Arduino, щита CAN шины и датчиков для управления устройствами с использованием пользовательского CAN ID. В ней представлен обзор аппаратных компонентов, использованных в проекте, подробно рассмотрены функциональные возможности программы и обсуждается, как переключать страницы Smart Display 7" с помощью пользовательского CAN ID.

Независимо от того, являетесь ли вы начинающим или опытным разработчиком, эта статья является ценным ресурсом, который поможет вам понять основы использования этих компонентов для управления устройствами и процесса смены страниц с помощью пользовательского CAN ID. К концу статьи у вас будет прочное основание для изучения более сложных проектов с использованием платы Arduino, щита CAN шины и пользовательского протокола CAN ID.

Рис. 1 Схема блока системы

Рис. 1 "Схема блока системы"

 

Основными компонентами, используемыми в этом проекте, являются плата Arduino с Arduino IDE v2.0.4 и щит CAN шины. Щит CAN шины - это расширительная плата, которая предоставляет интерфейс шины CAN для платы Arduino. Щит использует CAN-контроллер MCP2515 и CAN-трансивер MCP2551 для обмена данными с другими устройствами, подключенными к шине CAN.

Для демо нам потребуются следующие компоненты :
  • 7”- дюймовый Smart Display.
  • ARDUINO Mega 2560.
  • Щит CAN шины для ARDUINO Mega 2560.
  • Донгл CAN шины.
  • Сенсорная физическая кнопка.
  • Светодиод (LED).
  • Программное обеспечение GUI-Builder версии 0.4.2 или выше.


Демонстрация будет поделена на три этапа :
  • Проектровка дизайна в GUI Builder.
  • Сборка и загрузка проекта.
  • Программирование хоста Arduino.

Проектировка дизайна в GUI Builder

Для начала нужно запустить программу для создания графического интерфейса (GUI builder), создать новый проект и ввести имя проекта. Далее выберите модель подключаемого дисплея и выберите протокол "пользовательский CAN ID". По умолчанию ориентация экрана будет в альбомном режиме. Выберите пустой шаблон пользовательского интерфейса (UI template) и нажмите кнопку "Create" для создания нового проекта, как показано на рис. 2.

Рис. 2

Рис. 2

После нажатия на «create» должен открыться интерфейс GUI Builder

Рис. 3

Рис. 3

Согласно демо-сценарию, требуется добавить еще одну страницу.
Для этого нажмите на «Page», а затем на «+» для создания 2 страницы.

Рис. 4

Рис. 4

Стиль фона можно изменить нажав на «Resource» в верхней части панели, и выбрав подраздел «Background», который находится слевой стороны.

Рис. 5

Рис. 5

Стиль фона также можно изменить в разделе «Page info».

Рис. 6

Рис. 6

Создание и загрузка проекта

Когда все предыдущие шаги выполнены, и создан дизайн макета, пришло время создать проект. Перейдите в раздел “Device” и выберите “Device Property”. Затем выберите настройки по умолчанию для скорости передачи данных (baud rate) или выберите их в соответствии с вашими требованиями. Рекомендуется установить одинаковое значение скорости передачи данных (baud rate) как в вашем коде Arduino, так и в средстве для создания графического интерфейса (GUI builder). Далее нажмите кнопку “Upload” для загрузки проекта, как показано на рисунке ниже:

Рис. 7

Рис. 7

По окончании процесса загрузки, нажмите кнопку «ОК»:

Рис. 8

Рис. 8

По завершении процесса загрузки должен появиться стартовый экран:

Рис. 9

Рис. 9

После стартового экрана произойдет переход на страницу с загруженным дизайном. Теперь процесс создания и загрузки завершен через средство для создания графического интерфейса (GUI builder), как показано на рис. 10:

Рис. 10

Рис. 10

Программирование хоста Arduino

Библиотека "mcp2515_can.h" используется только для реализации пользовательских протоколов CAN ID. Библиотека "SPI.h" используется исключительно для взаимодействия по последовательному периферийному интерфейсу (SPI). Библиотека mcp2515_can.h облегчает взаимодействие с контроллером MCP2515 CAN (Controller Area Network), который является широко используемым контроллером CAN для встроенных систем. Эта библиотека предоставляет функции для инициализации MCP2515, настройки параметров CAN-коммуникации (например, скорости передачи данных, настройки фильтра и маски), передачи и приема сообщений CAN и проверки ошибок. В программе Arduino IDE все необходимые адреса регистров определены, как показано на рисунке 11. Этот сегмент кода инициализирует различные глобальные переменные, константы и массивы с соответствующими типами данных, которые затем используются в коде.

Рис. 11

Рис. 11

Этот сегмент кода представляет собой функцию setup(), которая вызывается один раз при запуске программы. Для последовательной связи с монитором используется инициализация с битовой скоростью 115200 с помощью Serial.begin(). Встроенный светодиод на пине 13 устанавливается как выход с использованием pinMode(). Физический пин кнопки устанавливается как вход с помощью pinMode(). Для инициализации контроллера CAN MCP2515 используется цикл while. Функция CAN.begin() вызывается с аргументом скорости передачи данных CAN_250KBPS.

Рис. 12

Рис. 12

Здесь функция changePageFunction() отправляет команды в MCP2515 для переключения режимов отображения. Для этого она отправляет сообщения с определенными байтами данных в MCP2515. Сначала функция отправляет команду "режим устройства" для перевода MCP2515 в режим конфигурации, затем отправляет команду "изменить страницу" с номером желаемой страницы и, наконец, отправляет еще одну команду "режим устройства" для переключения MCP2515 обратно в режим отображения.

Рис. 13

Рис. 13

Этот сегмент кода представляет собой функцию loop(), которая выполняется повторно после вызова функции setup(). Функция считывает напряжение с физической кнопки с помощью analogRead() и сохраняет его в переменной buttonValue. Если buttonValue больше значения THRESHOLD, это означает, что физическая кнопка нажата. В этом случае функция увеличивает переменную nowPage на 1 и выводит текущее значение nowPage в монитор последовательного порта с использованием sprintf() и Serial.println(). Затем функция вызывает changePageFunction() с текущим значением nowPage для переключения на желаемую страницу отображения. Если значение nowPage не равно 0, встроенный светодиод на пине 13 включается с использованием digitalWrite(). В противном случае светодиод выключается. Переменная lastDebounce обновляется текущим временем с использованием millis(), чтобы отслеживать время последнего нажатия кнопки. Функция ожидает, пока физическая кнопка не будет отпущена, непрерывно считывая buttonValue с использованием analogRead() внутри цикла while. И, наконец, инструкция delay(100) в конце функции вводит задержку в 100 мс перед повторным выполнением функции. Эта задержка обеспечивает разумный интервал между отправкой сообщений по шине CAN.

Рис. 14

Рис. 14

Дополнительные сведения можно найти в коде Arduino. Важно учесть адрес для подключения хоста к смарт-дисплею. Если вы хотите узнать больше о способе взаимодействия между хостом и смарт-дисплеем через CAN-шину, пожалуйста, обратитесь к журналу взаимодействия GUI builder.

Appendix:Set Up the Project

После успешной проверки и загрузки программы через Arduino IDE, можно начать демонстрацию. Нажимая на физические кнопки или сенсорные кнопки, можно включить светодиод и изменить цвет индикатора на зеленый. Когда индикатор отображает красный цвет и светодиод выключен, это означает, что ни физическая кнопка, ни сенсорная кнопка не нажаты. Как показано на рис. 15:

Рис. 15

Рис. 15

Чтобы скачать вышеуказанную программу и получить больше подробностей о данном демо-проекте, пожалуйста перейдите по ссылке на GitHub (https://bit.ly/3oT0o5M)

Рис. 16

Рис. 16

Заключение

В кратком изложении, с использованием платы Arduino и контроллера CAN MCP2515, мы легко можем управлять SmartDisplay с помощью физической кнопки. Этот фрагмент кода демонстрирует, как отправлять команды в MCP2515 для переключения режимов отображения и как считывать напряжение с физической кнопки для активации этих команд. Эту систему можно расширить, добавив другие функции, такие как дополнительные кнопки, датчики или другие периферийные устройства. MCP2515 и плата Arduino предоставляют гибкую и простую в использовании платформу для различных приложений, от автомобильной промышленности до промышленной автоматизации и умного дома.

Вернуться к списку
go top
close