Фильтр по тематике

Автономное применение интеллектуальных дисплейных модулей от 4D Systems. Часть 2

В первой части статьи были изложены сведения об архитектуре графических процессоров дисплейных модулей 4D Systems и встроенных функциях графического языка программирования 4DGL. Во второй части описан процесс создания и отладки приложения, реализующего цифровой милливольтметр на базе модуля μOLED-128-G2.

15.05.2017 440 0
Автономное применение интеллектуальных дисплейных модулей от 4D Systems. Часть 2

Концепция типового приложения

Исходя из имеющегося набора ресурсов и поддерживаемых функций процессора GOLDELOX, типовыми приложениями для дисплейного модуля µOLED-128-G2 с этим процессором могут стать, например, мини-терминал для обмена данными с внешними устройствами через UART, музыкальный звонок с возможностью выбора мелодий, встраиваемый измеритель электрических величин. Созданию такого измерителя, а именно – милливольтметра постоянного тока, посвящена данная статья. Помимо измерения и индикации, разрабатываемый прибор будет оснащён функцией сигнализации при превышении измеряемым напряжением заданного порога. По умолчанию базовый диапазон входного напряжения составит от 0 В до опорного напряжения АЦП, равного напряжению питания модуля +3,3 В. Расширить этот диапазон можно либо аппаратно – применением внешних резистивных делителей, либо программно – заданием требуемых коэффициентов преобразования АЦП. Для максимально полного использования возможностей платформы значение измеряемого напряжения будет отображаться на дисплее в текстовом виде (подгружаемым с карты памяти шрифтом) и на графической шкале, а также передаваться через порт COM0 на внешние устройства. Сигнализация выхода измеряемого напряжения за заданные пределы будет реализована посредством подачи звуковых сигналов, отображения на дисплее соответствующей графической индикации и посылки через порт COM0 соответствующих символов-признаков. Значение порога срабатывания сигнализации будет считываться программой из ОЗУ. После включения или сброса программа загрузит некоторую заданную по умолчанию величину в соответствующую ячейку памяти. Значение этой переменной в ОЗУ может быть изменено пользователем путём передачи в устройство соответствующих команд через порт COM0. О факте приёма корректной команды устройство будет оповещать пользователя звуковым музыкальным сигналом. На подключаемой к устройству карте памяти будут храниться используемые при отображении данных графические (изображения графической шкалы, символа «светодиода») и текстовые объекты (шрифты). Указанные медийные объекты будут созданы и записаны на карту памяти в ходе разработки проекта.

Принципиальная схема встраиваемого милливольтметра на базе дисплейного модуля µOLED-128-G2 изображена на рисунке 4 (исходный текст программы см. в дополнительных материалах к статье на сайте www.soel.ru).

Входное измеряемое напряжение через фильтр низких частот на элементах R1, C1 поступает на линию IO1, программно сконфигурированную как аналоговый вход 10-разрядного АЦП. Линия IO2 сконфигурирована как цифровой выход ШИМ для генерации звука. Сигналы с неё поступают на вход усилителя звуковой частоты на транзисторах VT1, VT2, нагруженного на электромагнитный звуковой излучатель BA1. Порт COM0 модуля (линии RX, TX, неподключённая линия GND) используется для программирования флеш-памяти графического процессора на этапе разработки приложения и для обмена данными с внешними устройствами. Тип оконечного интерфейса для порта COM0 при эксплуатации (UART, RS-232 или USB) определяется конкретными условиями его применения.

Блок-схема алгоритма встроенной управляющей программы показана на рисунке 5. Как можно видеть из рисунка, ввиду отсутствия в системе прерываний, все функциональные возможности устройства реализуются в основном цикле алгоритма. Основной цикл разделён на три секции:

  • секция 1 – считывание данных АЦП, их преобразование и отображение на дисплее вместе с действующим значением порога превышения;
  • секция 2 – передача результата АЦП и признака превышения порога через UART во внешнее устройство;
  • секция 3 – приём значения порога превышения от внешнего устройства через UART.

Периодичность передачи управления внутрь первых двух секций задаётся таймерами 0 и 1. Третья секция выполняется асинхронно, по факту поступления данных от внешнего устройства.

Разработка управляющей программы

Для написания встроенной управляющей программы графического процессора необходимо в Workshop4 IDE создать ViSi-проект, предварительно подключив дисплейный модуль к USB-порту компьютера через адаптер µUSB-PA5. После обнаружения ОС Windows USB-подключения требуется уточнить номер созданного в системе виртуального COM-порта.

Для создания ViSi-проекта в главном окне Workshop4 IDE следует выбрать Create a new Project, после чего задать целевой дисплейный модуль (в нашем случае – µOLED-128-G2), как показано на рисунке 6, и нажать кнопку Next. Затем в открывшемся окне выбора вида проекта нажать кнопку со стрелкой около иконки ViSi, как показано на рисунке 7.

В окне редактора в центре располагается созданный по умолчанию шаблон исходного кода программы (Program Skeleton) на языке 4DGL, справа сверху – поле дисплея выбранного модуля, справа снизу – область диспетчера объектов проекта (см. рис. 8). Созданный ViSi-проект рекомендуется сразу же сохранить в отдельном каталоге.


Номер COM-порта выбирается из выпадающего списка в меню Comms (см. рис. 9). При установлении соединения между компьютером и модулем кружок в поле Comms сменит цвет с красного сначала на жёлтый, а затем – на синий. Здесь же появится информация о подключённом модуле и карте памяти (при наличии последней). Однако вставлять карту памяти в модуль на данном этапе не следует, так как на неё будет производиться первоначальная запись медийных объектов. Если планируется использовать в приложении медийные функции, осуществлять вывод на дисплей сложных графических объектов, изображений, воспроизводить видео, отображать текстовую информацию пользовательским шрифтом, то их следует предварительно записать на µSD-карту, воспользовавшись, например, кардридером. На этом подготовку аппаратной части к созданию встраиваемого приложения можно считать завершённой.

Как можно видеть из рисунка 8, в шаблоне исходного кода имеется закомментированный программный блок, осуществляющий начальную инициализацию карты памяти. В случае использования карты его необходимо раскомментировать. В данном варианте программы в этот блок, наряду с командами вывода на дисплей текстовых сообщений, добавлены команды генерации звука (см. рис. 5). Звуком высокого тона пользователь оповещается об успешной инициализации µSD-карты и передаче управления в следующий блок программы, низкого – об ошибке инициализации или отсутствии карты в слоте модуля, после чего следует новая попытка инициализации.

Блоку инициализации карты памяти в программе предшествует блок инициализации UART и линий GPIO: IO1 сконфигурирован как аналоговый вход, а IO2 – как выход звука.

Основная функция программы, располагается в шаблоне между командами func main() и endfunc. Заполнить шаблон программным кодом разработчику предстоит вручную, за исключением блоков описания медийных объектов, которые создаются Workshop4 IDE автоматически. Медийных объектов в нашем приложении будет три: шрифт, графическая шкала и символ «светодиода». Начнём их создание со шрифта.

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

Затем в главном меню следует выбрать пункт Widgets и далее – вкладку Labels, из которой при помощи мыши перетащить иконку String на область дисплея, после чего выбрать в перечне параметров диспетчера объектов для объекта Strings1 строку позиции Strings, как показано на рисунке 10. В столбце Value, щёлкнув на кнопке выпадающего меню, открыть редактор шрифтов Strings Editor (см. рис. 11).

В поле Font открывшегося редактора необходимо выбрать из выпадающего списка нужный шрифт. Для выбора доступны все шрифты Windows. В поле Size задаётся размер шрифта. Выбранный шрифт в дальнейшем будет сохранён в памяти µSD-карты только с заданным размером. После нажатия на кнопку Paste Code диспетчера объектов в заданном месте области редактора появится блок кода примерно такого вида, как в листинге 1.

Из этого блока нужно убрать строки с функциями gfx_MoveTo(…), print(…), которые в приложении не потребуются. Цвет шрифта можно задать в диспетчере объектов или же непосредственно в исходном тексте, как аргумент функции txt_FGcolour(…). После задания шрифта вывод на дисплей текстовых данных с помощью функций putnum(…), putstr(…), print(…) и т.п. будет осуществляться именно этим шрифтом.

Теперь создадим объект «графическая шкала». Блок кода, который будет автоматически вставлен в программу, однократно выводит на дисплей изображение шкалы с количеством засвеченных штрихов, соответствующим значению входной переменной. По этой причине указанный блок следует разместить внутри основного цикла и передавать на него управление с требуемой частотой обновления показаний шкалы.

В окне редактора открытого файла исходного текста выбираем в главном меню пункт Widgets, затем – вкладку Gauges, из которой перетаскиваем мышью на область дисплея модуля иконку шкалы Gauge (см. рис. 12). При помощи мыши можно скорректировать размеры изображения шкалы и расположить его на дисплее нужным образом. Затем в диспетчере объектов можно изменить различные параметры объекта Gauge1 (цвет и т.д.). Как можно видеть, по умолчанию шкала имеет три области, каждой из которых задано по два цвета, соответствующие засвеченному и не засвеченному состояниям. Информация о цветах располагается в папках Palette1–Palette3. В нашем варианте во всех трёх папках используется одинаковая пара цветов, поэтому на дисплее шкала будет выглядеть однородной. Здесь же при необходимости можно скорректировать параметры Minvalue и Maxvalue, определяющие диапазон входной переменой шкалы.

По завершении редактирования и нажатии на кнопку Paste Code диспетчера объектов в области редактора появится код, приведённый в листинге 2.

Пользовательское редактирование этого фрагмента состоит в указании входной переменной вместо заданной по умолчанию переменной numx. Значения констант iGauge1H, iGauge1L, определяющих местоположение объекта в памяти носителя, генерируются автоматически в заголовочном файле констант проекта. Созданная по умолчанию в шаблоне ссылка на заголовочный файл выглядит как #inherit "Voltmeter_1Const.inc". В этом файле ранее была сгенерирована константа Strings1FontStartL, определяющая местоположение заданного ранее шрифта. Нажав правой кнопкой мыши на ссылку, при необходимости можно командой Open file at Cursor открыть этот файл для просмотра и редактирования.

Для создания объекта «светодиод» в шаблоне исходного кода нужно поместить курсор в соответствующее место в программе. Блок кода, который будет туда автоматически вставлен, выводит на дисплей изображение светодиодного индикатора. В зависимости от значения входной переменной (0 или 1) индикатор будет погашен или зажжён. Управление должно передаваться в этот блок только тогда, когда требуется зажечь или погасить «светодиод».

В окне редактора следует выбрать в главном меню пункт Widgets, затем – вкладку Digits, из которой перетащить мышью на область дисплея модуля иконку прямоугольного светодиода User Led (см. рис. 13). Позже можно изменить размеры и местоположение изображения.

По завершении редактирования нажатием на кнопку Paste Code диспетчера объектов в программу добавится код, показанный в листинге 3.

В добавленном коде необходимо указать входную переменную вместо установленной по умолчанию переменной numx.

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

Часть графических объектов, например, табло семисегментных индикаторов Led Digits, Custom Digits с вкладки Digits, для корректной компиляции требуют наличия в программе ссылки #inherit "LEDDIGITSDISPLAYGOLDELOX.INC". Если в приложении эти объекты используются, а в ходе проектирования указанная ссылка не создалась автоматически, её следует создать вручную.

Литература

  1. www.4dsystems.com.au/product/4D_Workshop_4_IDE.
  2. 4DGL Programmers Reference Manual and Language Specifications© 2009 4D Labs.
  3. 4D Systems Goldelox 4DGL Internal Functions.
  4. 4D Systems Goldelox Serial Environment Command Set. Part of the Workshop 4 IDE.

Скачать

20175054.rar / RAR, 73 КБ

Если вам понравился материал, кликните значок — вы поможете нам узнать, каким статьям и новостям следует отдавать предпочтение. Если вы хотите обсудить материал —не стесняйтесь оставлять свои комментарии : возможно, они будут полезны другим нашим читателям!

15.05.2017 440 0
Комментарии
Рекомендуем

ООО «ИнСАТ» ИНН 7734682230 erid = 2SDnjd8zAXZ
ООО «ИнСАТ» ИНН 7734682230 erid = 2SDnjeDFeN3
  Подписывайтесь на наш канал в Telegram и читайте новости раньше всех! Подписаться