13.4. Biblioteca OpenMV Arduino RPC

La biblioteca openmv-arduino-rpc es la contraparte del lado de Arduino del módulo rpc de la cámara. La cámara registra invocables de Python; el Arduino los llama como si fueran funciones locales, a través de UART, SPI, I2C o CAN. No hay ningún PC en medio.

Una placa Arduino a la izquierda y una OpenMV cam a la derecha, conectadas por cuatro líneas de transporte etiquetadas -- UART (dos cables), SPI (cuatro cables), I2C (dos cables) y CAN (dos cables) -- que muestran las correspondencias a nivel de cable que la biblioteca RPC de Arduino puede manejar.

El patrón es simétrico. El sketch de Arduino elige la clase de transporte que coincide con el cableado, llama a una función de la cámara por su nombre y recibe de vuelta el valor de retorno. El lado de la cámara lo refleja: registra invocables de Python, ejecuta el bucle de sondeo de la biblioteca. El tramado, la fragmentación y los reintentos en un bus ruidoso se gestionan por debajo en ambos lados, de modo que el código de la aplicación solo ve «llamar a una función en la otra placa, recibir un resultado de vuelta».

Los ejemplos del repositorio cubren las dos formas que la mayoría de los proyectos necesitan: llamadas cortas de control remoto (leer un sensor, accionar un pin, ejecutar un detector y leer el resultado de vuelta) y la transmisión de imágenes JPEG desde la cámara al Arduino para reenviarlas más adelante. Los scripts emparejados del lado de la cámara vienen incluidos en el árbol de openmv en 08-RPC-Library/.

El README del repositorio cubre el cableado de cada transporte; la referencia rpc — biblioteca rpc cubre por completo la API del lado de la cámara.