13.4. Библиотека OpenMV Arduino RPC

Библиотека openmv-arduino-rpc – это аналог модуля rpc камеры на стороне Arduino. Камера регистрирует вызываемые объекты Python; Arduino вызывает их как локальные функции через UART, SPI, I2C или CAN. ПК в середине не участвует.

Плата Arduino слева и камера OpenMV справа, соединённые четырьмя помеченными линиями передачи -- UART (два провода), SPI (четыре провода), I2C (два провода) и CAN (два провода) -- показывающими соединения на уровне проводов, которыми может управлять библиотека Arduino RPC.

Паттерн симметричен. Скетч Arduino выбирает класс передачи, соответствующий проводам, вызывает функцию на камере по имени и получает обратно возвращаемое значение. Сторона камеры зеркально повторяет это: регистрирует вызываемые объекты Python, запускает цикл опроса библиотеки. Кадрирование, фрагментация и повторные попытки на зашумлённой шине обрабатываются обеими сторонами под капотом, поэтому прикладной код видит просто «вызови функцию на другой плате, получи результат обратно».

Примеры в репозитории охватывают две формы, нужные большинству проектов: короткие вызовы удалённого управления (прочитать датчик, управлять выводом, запустить детектор и прочитать результат обратно) и потоковую передачу JPEG-изображений с камеры на Arduino для дальнейшей пересылки. Парные скрипты для стороны камеры поставляются в дереве openmv в 08-RPC-Library/.

README репозитория охватывает подключение проводов для каждого вида передачи; справочник rpc — библиотека rpc полностью охватывает API на стороне камеры.