こんにちは! けい(Twiiter)です。
今回は、Raspberry Pi Pico(ラズピコ)にカメラを接続し、機械学習での人検出のデモを動かす方法を紹介していきます。
実際に動かしたときの動画をYoutubeにアップしました、イメージはこんな感じです。
目次
Raspberry Pi Picoで使えるカメラ
Raspberry Pi Picoはラズパイと違い、カメラインターフェースやUSBアダプターがありません。
そのため、ラズピコにラズパイ用カメラやUSBカメラといった類のものは接続することができません。
そこで、GPIO接続のカメラArducamを用意します。
このカメラはArduinoやラズパイでも使用可能です。
用意するもの
Raspberry Pi
ラズピコへのプログラム書き込み用に用います。
コマンド操作を基本的に行っていくので、LinuxPCやMacでも代用できます。
Raspberry Pi Pico
Arducam
USBシリアル変換ケーブル
ラズピコからラズパイへの画像の転送に用います。
その他
USBシリアル変換の接続でコネクタが必要になります。
ラズパイとラズピコの接続に必要です。通信機能がないUSBケーブルを使用していると、プログラムの書き込みが行えないので注意が必要です。
配線
ラズピコとカメラの接続
カメラとラズピコは8本の線でつなぐ必要があります。

Arducamのピンとラズピコのピンを次の表のように接続します。
Arducam | ラズピコ |
---|---|
CS | GP5 |
MOSI | GP3 |
MISO | GP4 |
SCK | GP2 |
GND | GND |
VCC | 3.3V |
SDA | GP8 |
SCK | GP9 |


ラズピコとUSBシリアル変換ケーブルの接続
下の画像の真ん中の3つ(TXD、RXD、GND)をラズピコに接続します。

USBシリアル変換ケーブル | ラズピコ |
---|---|
TXD | GP1 |
RXD | GP0 |
GND | GND |
配線後はこのような全体像になっています。

次に、ラズパイのUSBに接続します。

これで配線は完了です。
プログラムをビルドする
顔認識をするプログラムは、TensorFlow Liteを使用しているライブラリArduCAM/RPI-Pico-Camを用います。
このライブラリはArduCam公式が作成したライブラリで、ラズピコとArduCamで簡単に画像認識を行うために作成されたものです。
ビルドの過程はラズパイを用いて行いましたので、ラズパイでの操作を説明していきます。
セットアップ
ラズパイのターミナルを開いて、次のコマンドを実行します。
git clone https://github.com/raspberrypi/pico-setup.git
pico-setup/pico_setup.sh
このコマンドを実行することで、ビルドするための必要な環境構築を行います。
プログラムの実行後、ラズパイを再起動します。
sudo reboot
人検出デモをビルドする
ラズパイのターミナルで次のコマンドを実行します。
git clone https://github.com/ArduCAM/RPI-Pico-Cam.git
これでプログラムのダウンロードが完了するので、ビルド作業に移ります。
cd RPI-Pico-Cam/tflmicro
mkdir build
cd build
cmake ..
make
ビルドするためにそれなりに時間がかかります。
ビルドが完了したら、ラズピコでの実行ファイルが生成されます。
次のディレクトリに移動してみましょう。
/home/pi/RPI-Pico-Cam/tflmicro/build/examples/person_detection

赤枠で囲ったファイルが、人検出プログラムです。「person_detection_int8.uf2」
拡張子が「.uf2」となっているため、ラズピコにドラッグアンドドロップするとプログラムの書き込みが行えます。
ラズピコにプログラムを書きこむ
それでは、ラズパイとラズピコを接続しましょう。
接続する時にラズピコのBOOTSELボタンを押しながらUSBを挿します。(挿してから2秒くらいたったら離す)

(画像は以前撮ったものなので、実際には配線されています。)
ラズパイの画面上でこのようにファイルストレージとして認識されるはずです。

ここまで出来たら、あとは先ほどのプログラムファイルをラズピコにドラッグアンドドロップするだけです。

カメラ画像を表示する
ラズパイでProcessingを使って、結果を表示させることができます。
デフォルトではProcessingがインストールされていないと思いますので、次のコマンドを実行してインストールします。
curl https://processing.org/download/install-arm.sh | sudo sh
インストールが完了したら、①ラズパイアイコン、②プログラミング、③Processinngを順にクリックしてProcessingの起動を行います。

Processing上で、①ファイル、②開くをクリックします。

「pi/RPI-Pico-Cam/tflmicro/person_detection_display」まで移動して、開くをクリックします。


実行ボタンをクリックすると結果が表示されます。

USBシリアル変換のRXDが青色に点滅している時、正常に通信が出来ているのでプログラムが実行されています。

もしプログラムを書きこんで点滅していないようであれば、配線を見直すかラズピコのUSBケーブルを抜き差ししてみてください。