M5Stack UnitV2は、2021年5月に発売された親指大のサイズでありながら高度な認識機能を持った、Linuxで動くAIカメラモジュールです。 パソコンやスマートフォンのブラウザを使って様々な認識機能をすぐに試すことができる、とてもおもしろいデバイスなのですが、M5Stack社のESP32製品と組み合わせて使用しようとすると、UARTの有線接続で認識結果のテキストデータを取得するくらいしか公式情報がなく、映像データは扱うことができません。
ですがブラウザで一通りの機能を使えるということは、TCP/IP通信さえできれば映像を含めたデータにアクセスできるはずです。 この作品では、WireSharkを使ってブラウザが通信している内容を解析した結果を踏まえて、一部UnitV2側のソフトウェアの改造も行いながら、リッチなブラウザを持たないM5Stack Core2単体でM5Stack UnitV2の全13種の機能を操作し、映像データを含めた認識結果を取得・表示することを実現しています。
In this work, all 13 types of functions of M5Stack UnitV2 are available from M5Stack Core2. The connection is a wireless connection using WiFi, no computer or smartphone is required.
WireSharkを使用してブラウザがUnitV2とどのような通信をしているか調べます。 エンドポイントによってPOSTを受け取るものとGETを受け取るもの、データを返すものと返さないものがあります。
M5Core2からアクセスしやすいように、Python + Flaskのスクリプトを改造して、1フレーム分の映像データや認識結果を取得できるエンドポイントを追加します。 M5Core2側の構成をシンプルにするために、認識ソフトウェアを改造して何も認識されなかったフレームも認識結果を返すようにします。
動画内である程度説明しています。