banner
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), есть и другие небольшие изменения.
Это тридцать четвертая статья из цикла "Real-Time Object Recognition". Первые тридцать три опубликованы здесь: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 и 33

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.
Евгений Вересов.
05.08.2026 года.