トランジスタ技術2012年3月号の特集で使っていたカメラモジュールが面白そうだったので、mbedでも使えないか実験してみた。
特集で使っているカメラモジュールには頒布カメラAと、頒布カメラBの2種類ある。
カメラAは動作電圧が3.0Vまでで、外部から24MHzクロックを入れてやる必要がある。
カメラBは動作電圧3.3Vでクロック内蔵だから、外付け部品なしでmbedに直結出来そうだ。
さっそくトラ技カメラBを入手して配線。
色々調べてみたら、すでにmbed + トラ技カメラBを動かしてプログラムを公開している方がいたので、ありがたく使わせていただくことにした。
ここのプログラムをインポートして試してみたらすんなり動いた。
・OV7670_with_AL422B_QQVGA_test
mbedとカメラBの配線は直結で良かったが、SCL端子は2.2Kの抵抗で3.3Vにプルアップが必要だった。
これで、とりあえずカメラから何らかのデータを取る所までは出来た。
今度はこれを表示してデータが正しいか確認してみる。
画像データをUSBシリアルモジュールでPCに送り、Processingで表示してみた。
動いた!!ちゃんとカメラ画像が表示された。(左はちょっと手振れ)
カメラ画像が取れるようになったので、今度はMARY OB基板(OLED)に表示してみる。
配線がすごいことになってる。(^_^;)
MARMEX_OB基板もライブラリが公開されているので使わせていただく。
・MARMEX_OB基板OLEDライブラリ (MARMEX_OB_oled)
なぜかMARMEX_OB基板OLEDライブラリは、mbedライブラリを最新版(Revision39)にすると動かない...
以前使ったRevision28があったので入れ替えてみたら動いた。
(@nxpfanさんのところではRevision39でも問題なく動作するという報告を頂いたので、これは自分の環境だけの問題かもしれない。)
やっと、MARMEX_OB基板OLEDライブラリが動くようになったので、カメラ画像を表示してみた。
参考までに、私が実験した手順をメモしておきます。
【手順1】
mbedとトラ技カメラB、MARMEX_OB基板の配線。
ピン配置等は、トラ技の記事やカメラBの資料、MARMEX_OB基板の資料、後で出てくるソースファイルを参照してください。(手抜きですみません。)
カメラと接続するSCL端子を2.2Kの抵抗で3.3Vにプルアップする以外は直結でOKでした。
【手順2】以下の2つのプログラムをインポートする。
・OV7670_with_AL422B_QQVGA_test
・MARMEX_OB基板OLEDライブラリ (MARMEX_OB_oled)
【手順3】
”OV7670_with_AL422B_QQVGA_test”を改造ベースにするので、必要に応じてプログラム名を変更しておく。
次に、”MARMEX_OB_oled__HelloWorld”から下図のように2つのファイルをコピーする。(Ctrlキーを押しながらドラッグ&ドロップ)
【手順4】"main.cpp"へ下図赤枠のように追加する。
【手順5】"main.cpp"へ下図赤枠のように追加する。
【手順6】
プログラムをコンパイルして実行ファイルをmbedへダウンロードし、mbedをリセットする。
シリアルターミナルから何かキーを入力すると、このようにMARMEX_OB基板にカメラ画像が表示される。
表示速度を調べるために、カメラ画像取得->OLED表示、を連続でやるように改造してみた。
表示速度は1fpsぐらいかな。OLEDへの表示をやらずに、カメラ画像取得だけなら2~3fpsぐらい(LEDの点滅を見た感じ)。
(その2)へつづく...