13.4. OpenMV Arduino RPC ライブラリ

openmv-arduino-rpc ライブラリは、カメラの rpc モジュールに対応する Arduino 側のものです。カメラ側が Python の呼び出し可能オブジェクトを登録し、Arduino はそれらをローカル関数であるかのように、UART、SPI、I2C、または CAN 経由で呼び出します。間に PC は介在しません。

An Arduino board on the left and an OpenMV cam on the right, connected by four labelled transport lines -- UART (two wires), SPI (four wires), I2C (two wires), and CAN (two wires) -- showing the wire-level pairings the Arduino RPC library can drive.

このパターンは対称的です。Arduino スケッチは配線に合うトランスポートクラスを選び、カメラ上の関数を名前で呼び出し、戻り値を受け取ります。カメラ側はそれを鏡映しにします。Python の呼び出し可能オブジェクトを登録し、ライブラリのポーリングループを実行します。フレーミング、フラグメンテーション、そしてノイズの多いバス上での再送は両側が内部で処理するため、アプリケーションコードからは単に「もう一方のボードの関数を呼び出して、結果を受け取る」だけに見えます。

リポジトリの examples は、ほとんどのプロジェクトが必要とする2つの形をカバーしています。短いリモートコントロール呼び出し(センサーの読み取り、ピンの駆動、検出器を実行して結果を読み戻す)と、カメラから Arduino への JPEG 画像ストリーミング(その先へ転送するため)です。対になるカメラ側のスクリプトは、openmv ツリーの 08-RPC-Library/ の下に同梱されています。

リポジトリの README はトランスポートごとの配線をカバーし、rpc --- rpc ライブラリ のリファレンスはカメラ側の API を完全にカバーしています。