Pi Pico でエッジAI を試してみる(1)カメラ


マイコンで機械学習モデルを使ってみます。TinyML というやつです。

まずは、Raspberry Pi Pico というマイコン上でカメラを使ってみます。

マイコンで物体検出(Detection)などをしようとすればカメラは必要です。

Switchscienceではセットで販売してます。

が、Pico W を使いたい場合はバラで集めます。

全体の取り合わせはこんな感じ。

 

 

 

 

 

 

 

 

 

 

カメラはArducam HM01B0 QVGA Camera Module

スペック:解像度320 x 320ピクセル(QVGAウインドウ対応、モノクロ、最大QVGA @ 60 fps)

開発はArduino IDE とC/C++ の2バージョンでやってみます。


Arduino IDE 

 

●開発環境はArduino IDE

●母艦はラズパイ3Model B

OSイメージは、表示に使うProcessing 用に32-bitのDesktopがいいかもしれません。

●これらを使ってカメラ用のファームウェアを作ってインストール

●その後カメラ画像はシリアル経由でProcessingを通じて表示

という段取りになります。

 

 

 

 

 

 

 

 

 

 

 


ラズパイ3 Model B にArduino IDE をインストール(1/5)

 

メニュに2か所現れています。

 

 

 

 

 

 

 

 

 

 

 

 

 


Raspberry Pi Pico にカメラを接続(2/5)

今回使うカメラ:Arducam HM01B0 QVGA Camera Module for Raspberry Pi Pico

 

 

 

 

 

 

 

 

結線はこんな感じ。VCC は3.3Vでも5Vでもどっちでもいいです。

 

 

 

 

 

 

 

 

 

 

 

 

 


ラズパイ3にPico を接続してArduion IDE でコーディング(3/5)

カメラ用のコードをファームウェアとしてインストールするので、Pico のBOOTSELボタンを押しながらラズパイのUSBポートに接続します。

ラズパイからPico はストレージ・ドライブとして認識されています。

 

 

 

 

 

 

ls /dev/tty*

 

 

 

 

 

 

Arduino IDE 起動

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ファイルー>環境設定

追加のボードマネージャーのURLに以下を記述してOKをクリック。

https://www.arducam.com/downloads/Pico/package_pico4ML_index.json

 

 

 

 

 

 

 

 

 

 

 

ツールー>ボードー>ボードマネージャーからライブラリインストール

 

 

 

 

 

 

 

 

 

 

 

 

検索フィルターにpicoを入力して検索

ArducamPico4MLをインストール

 

 

 

 

 

 

 

 

 

 

ボードマネージャーからArducamPico4MLをアサイン

 

 

 

 

 

 

 

 

 

 

シリアルポート設定

ツールー>シリアルポート
/dev/ttyAMA0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

カメラ用のファームウェアを作成してインストールします。

ファイルー>スケッチ例ー>Cameraー>exampleー>HM01B0_USB

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

書き込みボタンをクリック

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

コンパイル実行後、UF2ファイルがPico のフラッシュメモリーに書き込まれます。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

UF2ファイルなので終了後Picoは再起動されます。

再起動後のシリアルポートを再確認
ls /dev/tty* を見ると新しいポート名が確認できます。控えておきます。

 

 

 

 

 

 

 

 

以上で、Arduino IDE はお役御免です。

終了します。

 

 


ラズパイ3にProcessing をインストール(4/5)

processingを使ってカメラ画像を取得表示してみます。

現バージョンは4系ですが、安定を求めてここは3系をインストールします。

注:64-bitのOSではうまく動かないようです。

以下にアクセスしてラズパイの64-bit版をダウンロード・解凍して使いましょう。

Processingダウンロード

Need another version ?のRaspberry Pi をクリック

 

 

 

 

 

 

 

 

 

 

 

ちなみに、OSが32-bitか64-bitかを判別するコマンドです。32とか64が表示されます。

>getconf LONG_BIT

 


カメラ画像をProcessing で表示(5/5)

以下から、Processing 表示用のスクリプトを入手します。

https://github.com/ArduCAM/RPI-Pico-Cam/blob/master/rp2040_hm01b0/display/preview.pde

このスクリプトを1部修正します。

3/5で控えておいたPicoのポート番号を使います。

 

 

 

 

 

 

 

 

 

 

4/5で解凍したフォルダーに移動して、Processing を起動します。

 

 

 

 

 

 

 

 

 

:Error: Could not create the Java Virtual Machineというようなエラーメッセージが出た場合

多分OSは64-bitだと思われます。32-bit版のOSで再実行してみましょう。

 

開始

 

 

 

 

 

 

 

 

 

 

 

 

 

 

上記で修正したpreview.pdeを読み込むかコピー・ペーストして実行します。

カメラからの画像が表示されます、モノクロですけど………。

 

 

 

 

 

 

 

 

 

 


C/C++

元ネタはこちら

Arducam hm01b0 demo

USBシリアル変換コネクタを使っています。

 

結線はこんな感じ。

 

 

 

 

 

 

 

 

 

 

 

 

 

コード

元ネタとはツリー構造が違っていたので、若干修正。

Clone Arducam library

 Compile

buildフォルダーにarducam_firmware.uf2が生成されているのを確認。

上記と同様に

Pico のBOOTSELボタンを押しながらラズパイのUSBポートに接続します。

ラズパイからPico はストレージ・ドライブとして認識されています。

arducam_firmware.uf2をドラッグ・ドロップしてPico を再起動。

上記と同様にProcessing を起動してカメラ画像を確認しますが、ポート番号と通信速度は以下のようになります。

 

カメラ画像が表示されます。

 


 

Be the first to comment

Leave a Reply

Your email address will not be published.


*