13.4. OpenMV Arduino RPC-bibliotheek

De openmv-arduino-rpc-bibliotheek is de Arduino-zijde tegenhanger van de rpc-module van de cam. De cam registreert aanroepbare Python-objecten; de Arduino roept ze aan alsof het lokale functies zijn, via UART, SPI, I2C of CAN. Er zit geen pc tussenin.

Een Arduino-board aan de linkerkant en een OpenMV-cam aan de rechterkant, verbonden door vier gelabelde transportlijnen -- UART (twee draden), SPI (vier draden), I2C (twee draden) en CAN (twee draden) -- die de koppelingen op draadniveau tonen die de Arduino- RPC-bibliotheek kan aansturen.

Het patroon is symmetrisch. De Arduino-sketch kiest de transportklasse die bij de draad past, roept een functie op de cam aan via de naam ervan, en krijgt de retourwaarde terug. De cam-zijde spiegelt dit: registreer aanroepbare Python-objecten, draai de polling-lus van de bibliotheek. Framing, fragmentatie en herpogingen op een ruisende bus worden onder de motorkap door beide zijden afgehandeld, zodat de applicatiecode slechts “roep een functie op het andere board aan, krijg een resultaat terug” ziet.

De examples van de repo dekken de twee vormen die de meeste projecten nodig hebben: korte afstandsbedieningsaanroepen (een sensor uitlezen, een pin aansturen, een detector draaien en het resultaat teruglezen) en het streamen van JPEG-afbeeldingen van de cam naar de Arduino om die door te sturen. Bijbehorende scripts aan de cam-zijde worden geleverd in de openmv-boom onder 08-RPC-Library/.

De README van de repo behandelt de bedrading per transport; de rpc — rpc-bibliotheek-naslag behandelt de API aan de cam-zijde volledig.