13.4. OpenMV Arduino RPC ライブラリ

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

左側に Arduino ボード、右側に OpenMV カメラがあり、ラベル付きの4本のトランスポート線 -- UART(2本の配線)、SPI(4本の配線)、I2C(2本の配線)、CAN(2本の配線)-- で接続されており、Arduino RPC ライブラリが駆動できる配線レベルの組み合わせを示しています。

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

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

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