200万画素シリアル出力カメラを試食してみた
- 2014/08/10
- カテゴリー:電子工作
SparkfunでLinkSprite社製「LS-Y201-2MP」というカメラモジュールを見つけたので、試しに購入してみました。価格は約$55、下記のような仕様です。
- CMOSイメージセンサ 200万画素
- シリアル(UART)インターフェース、最大1.2Mbps
- 出力画像フォーマット JPEG
- 最大解像度 1600x1200(UXGA)
このカメラモジュールは、撮影した画像をシリアル(UART)経由で取り出せます。画像フォーマットはJPEG。JPEGファイルのデータがそのまま送られてくるイメージです。
同じくシリアル出力で解像度がVGAの「LS-Y201」の後継にあたります。制御コマンドの体系がLS-Y201とほとんど同じなので、ネット上に数多く公開されている、LS-Y201用のプログラムをほぼそのまま流用できます。
高速インターフェースを使用せず、非力なマイコンでも、200万画素を扱える。
多分SDカードへの保存がやっとというくらいでしょうけど。なかなか魅力的ですよね。
外観はこのような感じです。サイズは32x32(mm)。
裏面
QCのシールを剥がしてみると・・・
STM32F103・・・おっとどこかで見たことのあるマイコンですね。
せっかくカメラモジュールにSTM32が付いているのに、わざわざデータをUART経由で出してきて、さらにそれを別のマイコン等のデバイスで受ける、という構成になってしまい、非常にイマイチな感じを受けます。
カメラ側のマイコンをプログラミングしたいところですが、おそらくプログラム領域は常識的に考えてプロテクトが掛けられていて読み書き出来ないはずなので、諦めるしかないようです。(あくまで憶測ですので、もしかしたら、ということがあるかもしれません)
さて、LS-Y201-2MPの使い方ですが、簡単に言えば、UART経由でコマンドを送り、初めにカメラの各設定を行います。次に撮影コマンド送信後、リードコマンドを送り、カメラからのデータをひたすら受信します。JPEGファイルの内容がそのまま送られてくるので、JPEGイメージの終了を表すマーカー値「FFD9」が来たら受信処理を終了させます。
データ受信側のマイコンとしてmbed(LPC11U24)を使った場合の回路と、サンプルコードを紹介します。10秒毎に撮影、カメラからJPEGデータを受信しSDカードへ書き込みます。
- 回路図
- サンプルコード
前モデルと異なり、解像度は一度設定するとカメラ側に記憶されますが、UARTの転送速度については電源を切ると115200bpsに初期化されます。設定ミスを心配することなく、安心して高速転送に挑むことができます。
ちなみに上記構成で576kbpsまでデータが正常に受信できていることを確認しています。さすがに1.2Mbpsでは、受信データが化けてしまいました。
サンプルプログラムで使用している、SDFileSystemライブラリについてですが、デフォルトの状態ではSPIのクロックが1MHzの設定になっています。このままではSDカードへの書き込みがかなり遅いので、SDFileSystem.cppの210行目にあるの周波数設定を変更しておきます。24MHzくらいで良いと思います。
LS-Y201-2MPの最も信頼できる資料は、今のところSparkfunにあるpdfのUserManualくらいです。ただこの資料も「Pin Description」記載の端子の並びが、実際の並びとは異なるので注意が必要です。
つづく・・・