2019.05.08
Arduinoで動作する高性能カメラを試してみたくて、スイッチサイエンスで5メガピクセルSPIカメラを購入しました。
Arduino以外にもRaspberryPiなどでも動作するようです。
今回は Arduino UNO、Arduino MEGA2560に接続してみました。
今回の記事は、Arduino UNO R3 (互換機)と接続したときの内容です。
※5メガピクセルイメージセンサ OV5642
https://www.switch-science.com/catalog/3781/
想像よりもずっしりとして重量感があります。
こんなにも小さいカメラでまともに写るのか不安になります。
8ピンのデュポンワイヤが付属していますのでピンに順番に挿し、スイッチサイエンスのチュートリアルに載っているようにArduino UNOと結線してみます。
また、PCにUSBケーブルで接続します。
http://www.arducam.com/knowledge-base/mini-tutorial/
以下の4つのライブラリをArduino IDEの librariesにコピーする
OV2640_MINI_2Mピクセル、OV5642_MINI_5Mピクセル、またはOV5640_MINI_5Mピクセルカメラモジュールを有効にするには librariesにコピーした ArduCAM内にある memorysaver.h ファイルを修正する必要があるらしい。
以下のようにコメント行を変更しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #ifndef _MEMORYSAVER_ #define _MEMORYSAVER_ //Only when using raspberry,enable it //#define RASPBERRY_PI //There are two steps you need to modify in this file before normal compilation //Only ArduCAM Shield series platform need to select camera module, ArduCAM-Mini series platform doesn't //Step 1: select the hardware platform, only one at a time //#define OV2640_MINI_2MP //#define OV3640_MINI_3MP #define OV5642_MINI_5MP //#define OV5642_MINI_5MP_BIT_ROTATION_FIXED //#define OV2640_MINI_2MP_PLUS //#define OV5642_MINI_5MP_PLUS //#define OV5640_MINI_5MP_PLUS //#define ARDUCAM_SHIELD_REVC //#define ARDUCAM_SHIELD_V2 |
libraries/ArduCAM/examples/mini/ArduCAM_Mini_Video_Streaming においてあるスケッチを実行します。
コンパイルして、Arduino UNOにインストールします。
インストールが完了後、Arudino IDEを閉じて、以下のPATHにあるWindowsアプリを実行します。
libraries/ArduCAM/examples/host_app/ArduCAM_Host_V2.0_Windows/ArduCAM_Host_V2.exe
Arduino UNOとPCをUSBで接続した状態で、
[PORT]をArduino UNOと接続しているPORTを選択します。
[Baudrate]を921600を選択、
[Pix]を今回のカメラと同じ5642にします。
その後、[Open]ボタンを押して接続して、[Mode]をContinuousに変更。[Capture]ボタンを押すと正常に動作している場合は画像が別ウインドウで表示されます。結構、解像度高く綺麗に表示されます
[Open]ボタンを押したときに結線が問題無ければ、[SPI interface OK.]のログが出ますが、接続に問題があれば [SPI interface Error!]のメッセージが連続して表示されてしまいます。その場合は接続を見直してください。
Arduino UNOでは上記の結線で問題有りませんでしたが、MEGAと接続しようとしたときには結線方法が違います。
MEGAに普通に接続すると ホストアプリに[SPI interface Error!]のメッセージが表示されます。
ArduCamライブラリのチケットを調べていると以下の記事に接続方法が載っていました。
https://github.com/ArduCAM/Arduino/issues/175
上記の内容に従って接続場所を以下のように変更したところ正常に動作するようになりました。
思った以上の高解像度でした。しかし、動体に対してはブレが酷い。静止している物体を撮影するには問題なく高いクオリティの画像が撮れますが、動きのある被写体には使えないなという印象です。