Featured image of post Arduino Uno Q メディアキャリアボードでカメラを接続する

Arduino Uno Q メディアキャリアボードでカメラを接続する

はじめに

前回はArduino Uno Qに接続した慣性センサデバイスのデータをMCUで取得し、WebUIで慣性センサの3Dデータをリアルタイムに表示しました。

次のステップとしてカメラを接続してAI認識を行ってみます。

Arduino Uno QにPD電源対応のUSBハブを接続し、USBカメラを接続する方法もあり、こちらは手軽に試すことができますが、設備が大掛かりになってしまい、構想している小型ロボットを制御することには向いていません。

USBハブで各種USBデバイスを接続する

Raspberry Piではカメラやディスプレイを接続できるコネクタが装備されていますが、Arduino Uno Qではそのような用途のためにメディアキャリアボードが用意されています。今回はこれを使用してみることにしました。

メディアキャリアボードの概要

購入したメディアキャリアボードです。

メディアキャリアボード本体と外箱

写真のようにMIPI-CSIカメラが2台、組み込み用ディスプレイが1台、スピーカー、マイク、イヤホンが接続できます。他にもカラーLEDが4個搭載されていてシステムの状態を知らせることもできます。

Arduino Uno Qとは2つの小型コネクタで接続し重ね合わせる構造です。

Uno Q(左側)とメディアキャリアボード(右側)のコネクタ

Arduino Uno Qのメスコネクタにメディアキャリアボードのオスコネクタを差し込んで重ねて使用します。ピン間隔も狭くピン数も多いので取り付けの際は十分注意してください。

カメラの取り付け

Arduino Uno Qのカメラ用CSIコネクタは22ピンでRaspberry Pi 5やZeroと同じ仕様です。手元にあるカメラは15ピンタイプなので、15ピン-22ピンの変換FPCケーブルを使用して接続します。

様々なカメラを接続して確認中

最初に3rdParty製のカメラArduCam B0390を接続したところ認識してくれませんでした。3rdParty製なので何等かの追加設定が必要かもしれないので、他の用途で使用していた純正品のRaspberry Pi カメラモジュール V2やRaspberry Pi カメラモジュール V1も接続してみましたが、なぜかこれらも認識できませんでした。

カメラを認識しない原因

どうしてもカメラを認識しないのでカメラの動作確認用にRaspberry Pi 4を引っ張り出してきました。Raspberry Pi ImagerでmicroSDに最新のRaspberry Pi OSを書き込んでカメラを接続しました。3rdParty製のカメラなので少しconfigファイルの設定が必要ですが、問題なく動作しました。もちろん、Raspberry Pi カメラモジュール V2とV1も正常に動作しました。

Raspberry Pi 4でカメラの動作確認

同じようにRaspberry Pi 5でも確認し、15ピン-22ピンのFPCケーブルにも問題がないことを確認しました。

そういえば昔のRaspberry Pi OSではカメラを接続するときに、設定する画面があったなと思いだし、もしかしてUno Qでも同じような設定がないかと、ボードの設定画面をみてみました。すると、Enable external carriers connected to your Arduino UNO Qという設定を見つけました。

キャリアボード有効化スイッチ

ここにキャリアボードを有効化するかのスイッチがありました。早速スイッチをONにしようとしたところ、次の画面が表示されました。

アップデート要求画面

OSが古いので使えないとのことです。早速最新のOSに更新しましょう。

Uno QのOSアップデート

現在のOSバージョンを確認したところ20251210-442でした。

現在のOSのバージョン

この画面のFlash boardのボタンをクリックしたところ、最新のOSバージョン20260528-558が表示されました。

最新のOSバージョンが判明

Latestバージョンに書き換えるために指示通りにアップデートを進めます。

OSダウンロード中の画面

ダウンロードが終わると次の画面が表示され、一度電源を切ってジャンパーを接続せよとのことです。

ジャンパー接続の指示画面

指示通りにジャンパーを接続して、再度USB-Cに接続しました。

ジャンパーを取り付けてFlashアップデート中

Arduino Uno QのLEDマトリクスにはUSBのようなマークが表示され、書き込みモードになってはいるようです。しかし、Waiting for the board...のまま画面上は何も変化が無く先に進んでいないように見えます。しかし、正常に書き込み中の可能性もあるので、しばらくこのまま見守ります。

これまでの作業はUbuntu版のArduino App Labで行っていますが、Windows版で行うべきだったかと不安になってきました。

Windows版でOSアップデート

やはりアップデートが進んでいないようなので、Arduino App LabをUbuntu版からWindows版に変更して再度OSアップデートを行ったところ、Flashの書き込みが始まりました。

Flashアップデート中

次々とファームウェアが書き込まれて完了しました。

Flashアップデート完了

引き続きソフトウェアアップデートも行われこちらも無事完了しました。

ソフトウェアアップデート完了

OSのビルド番号を確認したところ、Latestのバージョンに書き換わっています。

更新されたOSのバージョン確認

キャリアボードの有効化設定

これでキャリアボードの有効化設定ができるはずです。設定画面からスイッチをONにしてみました。

キャリアボードの有効化

何を接続しているかの選択画面になりましたので、今回はカメラ0を設定しました。

AI物体認識の実験

これでカメラが使えるようになりました。Arduino App Labのインスピレーションにあるサンプルプログラム Detect Objects on Camera を動かしてみます。

Detect Objects on Camera

無事にカメラの画像が表示され、物体認識までできています。

物体認識の結果

結構素早く認識ができているように思われます。 最終的な動作確認結果は以下のようになります。

Detect Objects on Cameraでの各カメラの動作確認結果

カメラセンサレーン動作確認結果
Camera Module V2IMX219 / 8MPCSI-2 2-lane
Arducam B0390IMX219 / 8MPCSI-2 2-lane
Camera Module V1OV5647 / 5MPCSI-2 2-lane×

IMX219を使用したCamera Module V2とArducam B0390では問題なく動作しましたが、少し旧型のCamera Module v1では動作しませんでした。手持ちのカメラでは4レーンに対応したものは無いため、Camera Module v3等での動作確認はできていません。

まとめ

最近はローカルLLMを使っていることもあり、大部分の作業をGPU搭載のUbuntuデスクトップで行っています。

今回のトラブルの原因はArduino Uno QのOSが古くメディアキャリアボードに対応していなかったためですが、Arduino Uno Qの購入時からUbuntu版のArduino App Labを使用していたので、本来であれば最初に起動したとき自動更新されるべきものが更新できていなかったのではと考えられます。

これまでもそうでしたが、ファームウェアのアップデートなどハードウェアに強く依存した処理についてはWindows版で行うのが良さそうです。

Hugo で構築されています。
テーマ StackJimmy によって設計されています。