|
Object Recognition and Pulse Width Modulation (PWM) in Zephyr RTOS.
Напомню, что
программа Object Detector распознает объекты,
передает их имена посредством протокола CoAP (через сервер CoAP) в Zephyr RTOS.
Клиент CoAP в Zephyr RTOS принимает имена объектов.
В этой статье предлагается новая функция, включенная в состав CoAP клиента.
Эта функция формирует каналы широтно-импульсной модуляции (PWM) в соответстветствии с именами принятых объектов.
Работа программы проверена на плате nRF7002-DK.
При разработке программы использованы статьи из
nRF Connect SDK Intermediate.
Как это выглядит на практике?
Предположим, что CoAP клиент получил от сервера имя объекта "person" или "tvmonitor".
В этом случае программа сфомирует последовательность импульсов с определенным периодом и
коэффициентом заполнения и отправит эту последовательность (по каналу, соотвествующему имени объкта) на определенные контакты GPIO.
На терминал в Visual Studio Code функцией LOG_INF() будет выведена инфомация о работе канала PWM.
Загорится один из светодиодов Led0 или Led1.
Взгляните на рисунок 1, там показан результат работы клиента CoAP с PWM.
Предполагается, что к выводам GPIO можно подключать оконечное оборудование, например, сервомоторы.
Но выходное напряжение на контактах GPIO платы nRF7002-DK составляет всего лишь 1.8 (3.3) вольта, а величина тока крайне мала.
Другими словами, для практической работы требуется подключение усилителя мощности между контактами GPIO и конечным оборудованием.
На рынке такие устройства предлагают.
Мы же воспользуемся имеющимся на плате светодиодами Led0 и Led1, подключив их к выводам GPIO.
Загорание того или иного светодиода будет свидетельствовать о работе соответствующего канала PWM.
Реализация PWM в Zephyr RTOS требует довольно много настроек, которые содержатся в файлах конфигурации проекта.
На рисунке 2 показан файл prj.conf.
На рисунке 3 показан файл nrf7002dk_nrf5340_cpuapp_ns.conf.
Обратите так же внимание на файлы nrf7002dk_nrf5340_cpuapp_ns.overlay, sample.yaml и pwm-servo.yaml.
Эти файлы описывают аппаратные средства и привязки (yaml).
Исходный код проекта находится в файле main.c.
Перечисленные файлы входят в состав проекта.
Отмечу, что реализация протокола CoAP принадлежит вот этому автору.
В опубликованный им исходный код добавлена новая функция
static void decoding_object (const uint8_t *payload), есть и другие небольшие изменения.
1. Результат работы программы.
Рисунок 1.
2. Файлы конфигурации проекта.
Файл конфигурации prj.conf.
Рисунок 2.
Файл конфигурации nrf7002dk_nrf5340_cpuapp_ns.conf.
Рисунок 3.
Проект разработан, скомпилирован и загружен на плату nRF7002-DK в операционной системе macOS Tahoe 26.3.
Проект можно загрузить.
Консультации через e-mail: veresov@jdesign.ru или телефон: +7 921-215-45-70.
|
