マイコン工作実験日記

Microcontroller を用いての工作、実験記録

WCA-009頒布について

  • WCA-009頒布希望の方は、この記事を読んでから申し込み願います。
  • WCA-009の動作確認には、トラ技2011年9月号の記事、またはこのブログ記事を参照されることをお勧めします。
  • iWRAP4.0.0ファームウェアでは、iOS5とのAVRCP接続に問題があることがわかっています。対処方法についてはこの記事を参照してください。
  • iWRAP 4.0.1がリリースされました。AVRCP接続問題が修正されています。

OV7670を使ったナンバー認識

2012-02-10 13:51:59 | CMOSカメラ
本日発売のトランジスタ技術3月号に記事を書かせていただきました。主なネタとしては2点ありまして、ひとつは本ブログでも紹介した、OV7670を使ったバーコード・リーダです。OlimexのSAM3-H256とCMOSカメラ、LCDの3点を直結しただけの簡単ハードウェアなので、極端なはなし回路図なんかなくてもいいくらいですが、もちろん紙面には回路図載っています。こちらは、MTM07でもデモしましたが、それから少しソフトを改善してあります。USB電源で動かしていますが、「読み取り結果はPC側には送信されないのか?」というツッコミを頂戴したので、その機能も用意しました。(MTM07の時も結果表示は可能だったのですが、デバッグメッセージも一杯出していました。)

そしてもう一点は、車のナンバーの数字を読み取るナンバー認識です。こちらもバーコード・リーダと同一のハードウェアを使っており、ソフトを書き換えるだけです。初歩的な画像処理を施して数字認識を試みました。



実際にやっていることはとっても簡単な画像処理だけです。連続した画素から構成される部分領域を切り出して、それを数字の辞書ビットマップと単純に比較しているだけです。そのため、正面から撮った傾きの無い画像でないと正しく認識できません。近頃は、学部学生の実験でも、この程度の画像処理の課題があるようです。上の動画もMTM07の頃に作成したものなので、その後 処理時間を短縮したり、Setup機能を追加して解像度選択もできるようになっています。詳しく知りたい方は、トラ技を参照願います。こちらもUSB電源で動作させていますが、PCからは電源をもらっているだけであり、全ての画像処理はマイコン単体でおこなっています。当初、CrossWorksを使ってソフト作りましたが、マイナーなツールはダメだということで、Keilに書き換えました。同時に、コードを整理してデバックや試験用のコードを削ったところ、32KBから35KBくらい使っていたフラッシュ容量が26.54KBに減ってしまいました。Keilの期限無し評価版は32KBまで使えるので、まだ機能追加/性能改善可能です。

個人的にはSAM3Sを普及させるべく、もう少しSAM3Sの特徴的機能について説明したかったのですが、ページ数の関係もありそれはかないませんでした。同じようにカメラ直結できるSTM32 144pin の方が受けはいいんだろうなぁ。

トランジスタ技術 (Transistor Gijutsu) 2012年 03月号 [雑誌]
CQ出版
CQ出版
コメント (0) |  トラックバック (0) | 

AL422B FIFO

2012-02-08 07:40:54 | CMOSカメラ
今度はカメラからの画像をSDカード(Eye-fi)に保存することにしましたが、SAM3S4Bでこれを処理するにはいくつかの問題があります。
  1. SAM3S4Bの内蔵メモリは48KBしかないので、この容量ではVGAどころかQVGAの画像データも保持できない。JPEG圧縮のためにメモリを使うと、QQVGAすら保持できない。SAM3S4Cを使えば、外部メモリを接続できるが、100pinとなり配線作業が大変。
  2. SAM3S4Bでも、画像データを何回かに分けてカメラから受けて、順次JPEGに変換してカードに書き込むという方法がなくもない。しかし、何フレームにも分けて画像を取得することになるので、対象物が静止していないと、画像がブレることになってしまう。
  3. CMOSカメラ接続に使うパラレルキャプチャ機能に割り当てられた端子と、SDカード接続に使うHSMCIに割り当てられら端子が重複しているので、これらの機能を同時に使うことができない。順番に使うにしても、バス切り替えが必要になってしまう。

そこで今回は、OV7670から出力された画像データをいったんFIFOに蓄えることにしました。使うのはAL422BというFIFOで、この商品のようにFIFO付きのカメラが売られていることをきっかけに知りました。秋月の新しいSOP 28P変換基板を使ってハンダ付け。パスコン用のパターンがあるけど、VCC/GNDのピン配置が合わないので使えずとなりました。



このFIFOの容量は384KB. 書き込みと読み出しのデータが独立していますから、カメラからのPCLKで書き込んでおいたデータを、あとからゆっくりとマイコンで読み出すことができます。マイコンではカメラからのPCLKの速度を全く考えなくていいので、8ビットのマイコンでもカメラつなぐことができます。このFIFOを使えば、もはやパラレルキャプチャは必要無いので、HSMCIとの端子重複の問題も解決。FIFOからの読み出しは、GPIOを使って行うことにします。


コメント (0) |  トラックバック (0) | 

Eye-Fi

2012-02-03 22:25:50 | Weblog
引き続いてOV7670のカメラを作ろうと思っているのですが、今度は撮影した画像を保存しようと思っています。ただ保存するだけでは面白くないので、定期的に自動撮影した画像をPicasaやFrickrにアップロードできる定点観測カメラに仕立てることをもくろんでいます。SAM3SにはEthernetはないので、ネットワーク接続にはEye-Fiを利用してやろうと考えConnect X2を購入。



購入したはいいのですが、このカードって技術情報が何も開示されていないんですね。「いつのまにか転送してくれる」のは普通の人には便利なのかもしれませんが、こちらとしては転送中かどうかを判断する方法が知りたいところ。世の中にはEye-fi対応を謳うカメラもあり、転送中は電源を落とさないらしい。したがって、転送中かどうかを調べる手順があるはず。マイコンで制御する場合にも、できれば転送終了を待ってパワーダウンモードに入るとか、SDカードへの給電を停止するとかしたい。

マイコンに接続する場合の方法については、SPIモードが使えるかどうかも気になるところですが、検索したところエレキジャックの記事が見つかりました。何回かの連載の内容がこの本にまとめられていたので、立ち読みしてみるとSPIモードでも書き込めるようです。やろうとしていることは、この記事と同じようなことですが、よりシンプルなハードで安価に作れるかな。SAM3SはHSMCIというSDカードインタフェースを持っているので、考え直してSPIを使ってのSDカード接続は取り下げ。この機会にHSMCIを使ってみようと思います。

転送できるファイルはJPEGあるいはRAWならびにいくつかの動画形式に限定されているようなので、BMP形式ではアップロードできないことになります。そこでOV7670で撮影したデータもJPEGにしてやる必要があります。libjpegを使えばできることはわかっているので、変換してSDカードに書き込んでやれば、自動的にアップロードできるはず。転送がおわった写真ファイルを自動的に削除してくれる「エンドレス・モード」という機能もあるので、自動で写真を撮り続けてもSDカードがいっぱいになる心配をしなくてもすみます。しかし、この機能もどういうタイミングでファイル消すのか不明なので、ちょっと不安なところです。自分だったらこの機能をどうやって実現するかを考えてみましたが、やはりカードの初期化手順の中で処理してしまうのがいいかな。CMD0とか CMD1のようなカード初期化時に実行されるコマンドを処理するついでにファイル消去すれば、それ以降の読み書き処理に影響を与えずに済みます。OV7670はVGA解像度しかないので、これをJPEGにしてしまえば100KBも使わないはずです。4GBもあれば、当分は困ることもないのですけどね。
コメント (5) |  トラックバック (0) | 

ビジネスモデル

2012-01-31 22:14:50 | Weblog
先週末に近所の家電量販店に立ち寄って、Canonプリンタのむちゃくちゃな値段にビックリ。無線LAN対応を売りにしているようですが、お手頃機種だと6千円台です。本体を安くしてインクカートリッジで儲けるビジネスモデルなのでしょうが、まさかこんな値段になっているとは。。

こんなに安いとプリンタ機能なんかもうどうでもよくなって、「無線LAN部分だけなんとかして使えないだろうか?」とか、「ひょっとしてモジュールになっていないだろうか?」とか想像しちゃいます。ついつい、「試しに買って、中を調べたいもんだ。」と言葉にしてしましましたが、即座にカミさんに却下されました。
コメント (0) |  トラックバック (0) | 

どちらにしようか

2012-01-28 16:29:44 | CMOSカメラ
春節のお休みのために、中国のお店はこの2週間ほどお休みが続いていましたが、そろそろその休みも終わろうかという頃合いになってきました。きょうは、春節休みに入る前に購入したものの、そのままになっていたものを開封。




こちら、OV7670です。バーコードリーダで使ったものと同じセンサですが、FPCタイプのものなので小型です。以前買ったものは、実物を見るとレンズがとってもチャチだったので、いっその事こちらの方がいいのではないかと思った次第。コネクタと変換基板の3点セットで8ドルでした。コネクタはハンダづけされていなかったので、写真は自分で基板にコネクタとピンヘッダを半田付けした状態です。問題はこのFPCコネクタのピンアサインがわからないこと。そこで同じショップで売っていたOV7670にも対応しているという変換基板も一緒に購入。




このボード、Omnivision の名前が入っており、まるで同社の評価ボードで使われているものであるかのような印象を受けますが、そのように偽装しているだけかもしれません。基板上のコネクタには端子名があるので、テスタで調べればFPCコネクタのピン配置もわかるだろうと考えて購入しておきました。基板表側には電源表示のためのLEDが実装されていましたが、裏側にもCRがまばらに実装されています。



こいつもまた回路図が付属していなかったのですが、どうやら最低限のパスコンとプルダウン用抵抗が実装されている模様。SCCBのプルアップは未実装。自分が使うにはどちらの基板がいいか迷うところです。
コメント (0) |  トラックバック (0) |