自分への備忘録なので、丁寧に書いてみる。。。色んな勉強になった。おそらくもっと安価な環境があるのをやりながら知ったので、この組み合わせは使わないと思うが為になった。
必要な物はこちらのページ👇を参照。
<購入する>
●Arducam Raspberry Pi Picoカメラ用 HM01B0 モノクロ QVGA カメラモジュール 3,500円
https://www.amazon.co.jp/gp/product/B093KBQB1C/ref=ppx_yo_dt_b_asin_title_o08_s00?ie=UTF8&psc=1
メス=メスのケーブルは同梱されているので別途購入は不要。配線図は上のホームページに載っている。
モノクロで600×600程度の画素数。解像度を上げると7,000円近くなる。動画処理でなければ反応速度は申し分ない。
※Raspberry PiとPicoを繋ぐ給電用ケーブルで通信も兼ねて事足りるらしい。(別の記事ではUSBで別の経路を作る物もあるが、これは別のPCに飛ばす為なのだろうか、要確認。いつかはBluetoothでもやりたいがこれも要確認)
●Raspberry Pi Pico WH 1,200円。
WHの方が「はんだ付け」が要らないので便利だが、初心者が色々と試すには実はWも一緒にあった方が何かと便利。(とにかく試行錯誤が続くので)
●ブレッドボード 500円 ジャンパー線(オス=オス)300円
ブレッドボード(👇左上、真ん中上)は大きいのが一つより、小さいのが幾つもあっていい。ジャンパー線(👇右上)は短いのと長いのが混在してると便利。色は8色以上あると良い。
●マイクロUSB(Bコネクタ)=USBケーブル 700円
データ通信用+充電用である事を注意すること(安いと充電のみ)
◯オス=オスピンヘッダー(400円)
0.3mmシリコンゴム(150円)(必須ではない)
どうしても「はんだ付け」が必要なときに、これで逃げる。
<配線>
Picoの端子の意味が全く分からずとも繋げられない事は無いが、基本的な動きだけは理解しておきたい。せめてPico本体のLEDと外部接続のLEDを点灯させるプログラムは動かしたい。(実はこれだけでもかなり奥が深い)分かっているのといないのでは、ケアレスミスの発生確率が遥かに違う。部品を壊さないためにも給電端子とGPIOの意味を分かっていた方がいい。
配線図はこちら👇の「1. Hardware signal definition and wiring diagram」
実際の配線イメージはこちら👇の冒頭写真が参考になる。
https://hellobreak.net/raspberry-pi-pico-camera-tensorflow-lite/
<開発環境>
Picoを使う場合、多くの解説ではThonny(ソンニー)を使う事が多い。しかし今回のケースではArdiuno IDEを使う事になり、以下の違いがある。
Thonny=Micro Python=Python
Ardiuno IDE=Circuit Python=実はC(難しくはない)
考え方が少し違うので、両方の癖を体験しておきたい。Picoは空っぽなので、ThonnyのMicro PythonにせよArdiuno IDEのCircuit Pythonにせよ個々のUF2ファイルというベースのファイルをPicoに入れてやる必要がある。ブーストボタンを押してUF2ファイルを入れる所までは共通。PicoとPicoWとではファイルが異なるので注意。更に、Micro PythonのUF2を入れた後でArdiuno IDE(Circuit Python)を動かそうとしてトラブった。両者はまるで別物という事に注意。PicoWのCircuit PythonUF2ファイルはここ👇
https://circuitpython.org/board/raspberry_pi_pico_w/
Thonnyを使う場合は標準でRaspberry Pi本体のPythonになっているので、Micro Pythonに切り替える必要がある。後は特に不要で簡単。
Ardiuno IDEを使う場合はPicoにインストールする為の追加情報をファイルメニューの環境から追加して、ボードマネージャーを使って指定する。詳細はArducam公式ページの「2. How to develop HM01B0 on Arduino IDE」あたりに書いてあるが、予め慣れておかないと意味が分からない。Ardiuno IDEを用いたPicoWの内蔵LEDを動かす👇のが勉強になる。
https://tamanegi.digick.jp/computer-embedded/mcuboa/raspberrypi-pico/
※ArdiunoもArdiuno IDEで動くので、ついでに触っておいた。👇 殆ど同じ感覚で触れる事が分かるので安心する。
https://www.sys-link.jp/it/electronic-kit/arduino/arduino-001/
<セットアップ:Ardiuno IDEの癖を知っていないと難解>
「2. How to develop HM01B0 on Arduino IDE」の概要は以下の通り。普通にArdiuno IDEでPicoを触る場合とは、UF2ファイルは同じだが別のボード情報を埋め込む事に注意。
「https://www.arducam.com/downloads/Pico/package_pico4ML_index.json」を環境で指定して、「ArducamPico4ML」というボード情報をインストールする。
Port番号は実行環境によって異なるが、今回は「/dev/ttyACM0」だった。後で使うので覚えておくこと。探し方はターミナルで「ls /dev/tty*」を実行。Ardiuno IDEでもポートをこれに設定する。よく見られる「/dev/tty0」はPicoをドライブとして認識する場合の名前なので今回はそれとは異なる。
Step3の「Select HM01B0 USB output example.」はArducam社が提供しているPico内に書き込むプログラムとなる。これは変更することも無くArdiuno IDEでPicoに書き込む。つまり、給電しているRaspberry Piに画像情報を戻す事になる。双方向が可能なのか。
Step4ではArdiuno IDEではなく、Processingという別アプリでの実行となる。インストールの詳細はこちら👇(Windowsではどうなるのだろう)
https://coding4.art/archives/87
PythonのProcessingは別物らしいので、Raspberry PiやWindowsでシリアルから画像を受け取る仕組みを何か作らないといけないのか?これはOpenCVでフォローしているのだろうか?
Processingで動かすプログラムは👇を貼り付けて、37行目付近のMyPortの変数の内容を、上で得たPort名に書き換える。
https://github.com/ArduCAM/RPI-Pico-Cam/blob/master/rp2040_hm01b0/display/preview.pde
このプログラムはホームディレクトリの「sketchbook」フォルダにある。
<プログラムをProcessingで実行>
ProcessingでArducam社のプログラムを実行すれば、
Picoの「HM01B0 USB」が
「ArducamPico4ML」ボード上で動いて
Picoに繋がっているHM01B0カメラの映像がUSBケーブルを通って
カメラの画像がRaspberry PiのProcessingのウィンドウに映る。
<この後の課題>
Arducam Arduino UNO Mega2560ボード用OV2640 2メガピクセルレンズ付きミニモジュールカメラシールド
このカメラはArdiunoでも使えると明記されているが、Picoでも使えている。つまり、ハードウェアは互換はあると考えても良い。問題はソフトウェアであろう。(Arducam社のカメラならば問題なさそう)