ПАК для управления светодиодными панелями

Комплекс, состоящий из аппаратной части, матричного дисплея и программного обеспечения, будет использоваться в качестве электронного дорожного знака.
Интеллектуальная транспортная система помогает управлять дорожным движением. Система информирует пользователей, следит за дорожной ситуацией, побуждает водителей соблюдать скоростной режим и помогает устранять пробки, обеспечивая более эффективное и безопасное вождение.

В рамках системы приложения взаимодействуют и обмениваются информацией. Информация, собранная из нескольких источников – камер автоматического распознавания номерных знаков, знаков с переменными сообщениями, парковок, станций мониторинга качества воздуха – доступна в единой базе данных.

Имея своевременную информацию, власти могут эффективно решать сразу несколько проблем – предотвращать дорожные пробки, обеспечивать безопасность на дорогах и сокращать вредные выбросы в атмосферу.

Запрос

Компания-заказчик занимается разработкой и производством светодиодных дисплеев и устройств для определения скорости транспортных средств.

Компания обратилась к нам с просьбой разработать программно-аппаратный комплекс для управления светодиодными панелями, используемыми в качестве информационных табло на дорогах общего пользования.

Решение

Устройство, представляющее собой светодиодный дисплей с одноплатным компьютером, служит электронным дорожным знаком с изменяющимися сообщениями.

Его можно подключить к Интеллектуальной транспортной системе с помощью веб-портала, протоколов MQTT и UTMC.
LED панель, используемая в качестве информационного табло на дорогах
Программируемый LED знак с изменяющимися сообщениями
Заказчик сам выбрал одноплатный компьютер и светодиодные панели для проекта. Мы отвечали за разработку программно-аппаратного комплекса.

Система состоит из четырех частей:

  • Светодиодные панели, управляемые микросхемами TLC5924, TLC5958 и TLC59581.

Панели имеют 512 монохромных или RGB-светодиодов, расположенных в сетке 16x32. Они могут быть последовательно соединены в большой дисплей с разрешением до 256x256 светодиодов (128 панелей). Выход одной панели соединяется со входом следующей.

  • Контроллер светодиодной панели на базе системы на кристалле Zynq 7020.

В задачи контроллера входит следующее:

  • Управление микросхемами TLC5924, TLC5958, TLC59581 через ПЛИС (PLD) компоненту
  • Поддержка сервиса, предоставляющего внешний пользовательский интерфейс по протоколам MQTT, UTMC и веб-портал (пользовательский интерфейс).

Мы разработали плату расширения, чтобы обеспечить правильную работу микрокомпьютера с LED панелями.

Функции платы расширения:

  1. Согласование уровней напряжения входных и выходных сигналов между управляющей системой (ПЛИС) и панелями.
  2. Защита всех линий от перенапряжения, вызываемого статическими разрядами (ESD protection).
  3. Прием дифференциального высокоскоростного сигнала синхронизации и его преобразование в пригодный для ПЛИС однополярный сигнал.
  4. Питание:
a) Устройство может запитываться от двух независимых внешних источников 5 В с автоматическим переключением между ними.
b) Система контроля питания:

  • следит за уровнем напряжения 12/24 В (переключается на плате) для контроля внешних источников или батарей ИБП.
  • следит за наличием напряжения сети переменного тока (120/240 В).
  • при проблемах с вышеприведенными источниками формирует сигнал "Power_fail" для ПЛИС.

Батарея CR1220 обеспечивает питание системы контроля питания в случае отключения внешнего источника.
Плата расширения для программно-аппаратного комплекса
Разработанная нами плата расширения
К светодиодной панели подключен микрокомпьютер под управлением Linux.

Мы разработали системный сервис, который мониторит работу устройства и управляет им. Доступ к управлению можно получить через веб-страницу.

Прошивка

Нам нужно было выполнить ПЛИС часть, написать конфигурацию и в итоге получить битстрим. Битстрим должен выводить на светодиодную панель данные, полученные от процессора.

Прошивка ПЛИС реализована на языке Verilog.

При разработке прошивки мы сделали две основные итерации – с монохромной панелью и с панелью RGB.

При разработке прошивки мы добавили в базовую версию готовое IP-ядро Xilinx CDMA (Central Direct Memory Access) для чтения и передачи данных памяти без участия процессора. Также мы написали модуль для чтения DNA регистра.

Наши инженеры использовали программную платформу Vitis для тестирования битстрима перед передачей его команде разработчиков ПО. Vitis предоставляет SDK и BSP библиотеку для удобной работы с прямым доступом к памяти.

С помощью Vitis мы создали FSBL (загрузчик первого этапа) для Zynq 7020. Загрузчик загружает битовый поток, затем загружает прошивку и запускает ее.

Мы проводили тесты прошивок с написанием тест бенчей на Verilog. Наши разработчики также написали и запустили микропрограммы на языке C для тестирования функциональности системы.
Дизайн печатной платы
Процесс проектирования печатной платы
Программное обеспечение

Приложение имеет три интерфейса, которые в совокупности обеспечивают следующие операции:

  • Отправка текста и изображений для отображения на панели.
  • Определение очередности отображения текста и картинок.
  • Калибровка сигнала, передаваемого на светодиодную панель, для нивелирования эффекта постепенного выгорания некоторых светодиодов.
  • Получение информации о светодиодах, вышедших из строя.
  • Получение данных телеметрии (влажность, освещенность, температура).
Данные о состоянии устройства необходимы, в том числе, для автоматического включения устройств нагрева и охлаждения.

C++ использовался для разработки сервиса внешнего взаимодействия, а JavaScript и HTML для создания веб портала.

Приложение поддерживает каналы доступа MQTT, UTMC и веб-интерфейс пользователя, каждый из которых имеет свой метод аутентификации по логину и паролю.

Сложности проекта и их решение

Перед нами стояла задача интегрировать светодиодные панели, ПЛИС, веб-интерфейс и программное обеспечение в единую систему.

При создании прошивки основная сложность заключалась в поиске и устранении ошибок во время тестирования.

Внутренняя схема может генерироваться не так, как ожидалось. Какие-то сигналы могут быть неверными, из-за чего нарушается общая функциональность. Причину таких ошибок трудно обнаружить и устранить.

Мы использовали специальные инструменты, такие как IP-ядро интегрированного логического анализатора Xilinx (ILA), для мониторинга внутренних сигналов ПЛИС.

Также мы столкнулись с необходимостью отладки шины AXI из-за ошибки записи в регистры. Для проверки правильности обработки сигнала мы использовали специальный анализатор, предоставленный Xilinx. Анализатор позволяет нам валидировать шину AXI, проверять ее состояние и обнаруживать ошибки.
Выполненные работы

  • Разработка и тестирование прошивки
  • Разработка печатной платы
  • Разработка ПО
                Использованные технологии
                • Программное обеспечение написано на C++. Использованы С++ библиотеки BOOST.
                • Использовали JavaScript и HTML для создания веб-интерфейса пользователя.
                • Мы использовали операционную систему Debian на основе Linux в качестве базиса для разработки ПО.
                • Altium Designer применен для создания принципиальной схемы и разработки печатной платы.
                • Использовали библиотеки MQTT and UTMC для организации обмена сообщениями по данным протоколам связи.
                • База данных SQLite отвечает за постоянное хранение данных приложения.
                • Мы использовали IP-ядро ILA, IP-ядро CDMA, программную платформу Vitis и другие инструменты Xilinx для разработки прошивки.
                • Прошивка ПЛИС написана на Verilog.

                                  Итоги

                                  Мы разработали прошивку и программное обеспечение для устройства, которое будет использоваться в качестве светодиодного дорожного знака с изменяющимися сообщениями.

                                  Разработчики ПО и аппаратной части, объединив свои усилия, добились слаженной работы светодиодной матрицы, ПЛИС, веб-интерфейса и программного обеспечения в единой системе.

                                  Развитие проекта продолжается. Команде предстоит разработка драйвера RGB для цветных панелей.
                                  Частота обновления монохромной светодиодной матрицы:
                                  500 Hz
                                  Размер LED панели в пикселях:
                                  16x32
                                  Максимально возможный размер LED дисплея в пикселях:
                                  256x256
                                  Поддерживает:
                                  Протоколы MQTT и UTMC