注意)
・本ページの情報は2008年8月現在のものです。
・製作についての個別のご質問には回答できません。本ページに使用上で必要なことが書いてありますのでご購入前に意図に沿った製品かどうかをよくご検討下さい。
<価格>
12,600円(本体価格12,000円)
<概要>
■携帯電話用の超小型CMOSイメージセンサ。携帯電話用カメラの情報はあまり公開されていませんが、浅草ギ研ではこの製品についての細かい仕様と使い方を本ページで説明しています。
■VGAタイプで640x480の画素。設定によりサブサンプリング(320x240又は160x120に間引き)可能。
■クロックと電源を内蔵しているので、3.3V電源をつなぐだけで動作可能。
■YUV422又はRGB565の画像フォーマット。1ピクセルを2バイトで表します。(フォーマットについてはこのページ下で詳しく説明)
■30fps(一秒間に30回撮影)の高速動作
■IOは3.3VなのでFPGAやCPLDで直接操作できます。
※CMOS-EYEやS−EYEとは違い、センサー部(+α)のみなので、画像読み取りシステムをユーザー側で構築する必要があります。FPGA又はCPLDなどが必要です。
<本製品を使うために必要なこと>
(ご購入前に必ずお読み下さい。)
この製品は、センサー情報を処理するシステムをユーザー側で作成する必要がありますが、動作速度が速いため一般的なホビーで使われているマイコンなどでは制御できません。たとえば、本製品は動作クロックが27MHzですので、市販のH8マイコン(大抵20MHz前後のクロック)やPICマイコンなどでは制御できません。
弊社実験では100MHzクロックのSH2マイコンでもデータを取り出すことはできませんでした。
本製品を使う場合にはFPGAやCPLDなどのPLDデバイスの使用が不可欠となります。
また、画像データはデータ量が他のセンサーなどにくらべて格段に多いので、接続するシステムは十分なメモリ領域が必要です。画像データについては下で詳しく説明します。
ご注意下さい。
<電気仕様>
電源電圧
|
+3.3V (*1) |
I/F電圧
|
LVTTLレベル(0V/+3.3V)
|
動作クロック
|
27MHz(基板上に27MHz発振機が付いており、外部にも出力します。) |
動作温度
|
0度〜65度 |
保存温度
|
-30度〜85度 |
外形寸法
|
33x15mm |
重量
|
1g |
最大消費電流
|
150mA |
(*1)プラスマイナス5%
<画像仕様>
画素数
|
640x480 (設定により間引き可能) |
色フィルタ
|
原色カラーフィルタ *ベイヤーパターン
|
フレーム周期
|
最大30fps |
出力方式
|
YUV422 又は RGB565 (8bitパラレルデータ。1ピクセル辺り2バイト。詳しくは下にて) |
自動機能
|
自動露出(AE) オートホワイトバランス(AWB) 蛍光灯フリッカ補正 (設定により可能) |
反転機能
|
上下、左右、上下左右に反転可能 |
<光学仕様>
レンズ構造
|
2群2枚 |
F値
|
F2.8 |
水平画角
|
52度 |
撮影距離
|
20cm〜∞ |
OLPF
|
なし |
IRCF
|
あり |
TV歪曲
|
1%以下 |
<ピン配列>
<用語説明>
■画素:画像を現す最小単位の点。白黒とカラーで表現方法が違うので、1画素=1データではないので注意。本製品の場合、白黒は1バイト(モノクロ8bit)、カラーは2バイト(カラー16bit)で1ピクセルを表す。
■行:1画面の横の列(行)をさす
■列:1行の縦の列をさす
■fps:( frame par second) 一秒間に何フレーム(画面)のデータが取り出せるかの単位。人間の目には30fpsぐらいだとスムーズな動画に見える。
■VGA:640x480画素の画面をVGA(規格)という。縦横各半分(面積は1/4)になったものをQVGA(320x240)、その半分をQQVGA(160x120)という
■ゲイン:信号増幅倍率。ゲインを上げると出力値が上がります。
<ブロック図と動作説明>
<AG-CAM08ブロック図>
<端子の説明>
記号 |
英表記 |
名称 |
方向 |
説明 |
MC |
Master Clock |
マスタークロック |
出力 |
動作の基本となるクロック |
PC |
Pixcel Clock |
ピクセルクロック |
出力 |
1データ毎に発生するクロックで、これで画素の同期を取る |
VS |
Vertical Sync |
垂直同期 |
出力 |
一画面出力中にHIGHになります。 |
HS |
Horizontal Sync |
水平同期 |
出力 |
一行出力中にHIGHになります。 |
STD |
Standby |
スタンバイ |
入力 |
LOWで通常動作、HIGHで動作停止します。 |
RST |
Reset |
リセット |
入力 |
マスタークロック8パルス分以上の間LOWにすることでリセットがかかります。 |
SDA |
|
|
入出力 |
I2Cのデータ線 |
SCL |
|
|
入力 |
I2Cのクロック線 |
VCC |
|
|
|
3.3V電源の+をつないでください。 |
GND |
|
|
|
電源とホストのGNDにつないでください。 |
※方向はセンサ側からみた方向。
<動作説明>
電源を入れると27MHzクロックがセンサーのタイミング制御に供給されます。その後、RST端子を8クロックパルス以上の時間分LOWにし、その後HIGHにすることでセンサー内の各設定が初期化されます。この操作をリセットといいます。リセットを行わないとセンサーの動作は不定になりますので、電源投入後にかならずリセットを行って下さい。リセット後はRST端子をHIGHにし続けてください。
本製品はリセット後30fpsのタイミングでデータを出し続けます。
リセット後にはPC、VS、HSの各同期信号が生成され続けます(ビデオモードの場合)。PCの立ち上がりエッジでデータラインが更新され(つまり次のデータに変わる)
ます。PCのデューティーは50%なので立下りエッジでデータを読むと安定してデータを読むことができます。
機能のON/OFFや各種設定などはI2C(シリアル通信規格の一種)経由で設定します。I2C設定については下で説明します。
データラインは8本あり、8bit値を一度に出力します。8bit=1バイト。1画素を2バイト(YUVの場合は実際には4画素を8バイト)のデータで表しますので、VGAの場合1行は640x2=1280バイトのデータ量になります。
YUVとRGBの画像フォーマットについては次で説明します。
初期設定では画面左上のピクセルから順に出力されます。出力順を設定で変えることもできます(上下反転、左右反転の画像を出力できる)。
<ブランクデータ>
VSかHSのどちらかがLOWのときは画像データを出力していない状態ですが、このときデータラインにはPCクロックごとに次のようなパターンのデータが出力されています。
※無効行はVSがLOWの時に出力されている行です。
<画像フォーマットについて>
本製品の画像フォーマットは YUV422 もしくは RGB565 となります。起動直後にはYUV422に設定されます。RGB565にする場合はI2C経由で設定を変更します。変更終了までには数百mS時間がかかります。YUVとRGBの説明の前にコンピュータの一般的な画像表現について説明します。
<白黒画像の表現>
コンピュータで白黒を表現する場合は、値が低いと暗く、値が高いと明るくなります。8bitで白黒の濃淡を表した場合は0〜255の256段階で表すことができます。
たとえば、次のような画像があったとします。
画像の左上を拡大したところですが、各ピクセルの値は次のようになっています。
<カラー画像の表現>
カラー画像を現す場合はいろいろな表現方法がありますが、パソコンのモニタなどで出力するには一般的には”光の三原色”、赤(Red)、緑(Green)、青(Blue)で表します。この3色の濃淡を変えることでほぼ全ての色が表現できます。
下はRとGとBそれぞれを8bitで表したデータを合成してカラー画像にした例です。このフォーマットをRGB888(もしくは単にRGB、又は24ビットカラー)といいます。
この他に、パソコンでは主に”色の三原色”で表すCMY(シアン、マゼンダ、イエロー)でカラーを表す場合と、黒(K)を加えたCMYKで表す場合があります。CMYは紙への印刷などの時に誤差が出にくい表現です。CMY系はこのセンサーでは使いません。
<RGB565>
まず、RGB565から説明します。RGB888は8ビットx3=24ビットで1ピクセルを表します。人間の目は光の変化には敏感ですが、色の変化にはさほど敏感ではありませんので、各色8ビットの値が1つ変わった程度では違いがつきにくいのです(一般的な人間の場合)。RGB565はデータ量を2/3にして、Rが5ビット、Gが6ビット、Bが5ビットの合計16ビットで表したものです。RGBの中で、人間の目はG(緑)に対しての変化が一番敏感なのでGが1ビット多くなっています。RGB888とRGB565の画像をパソコンのモニタで見ると大抵の人は違いがわかりません。
<YUV422>
YUVは輝度情報と色情報を分けた表し方です。JPEG画像などの圧縮画像の場合、輝度データと色データをRGBから分解してから処理しますので、デジタルカメラなどではもともと輝度と色が分かれているYUV系の表現を使う場合が多いですし、色系の画像処理も計算がしやすくなります。YUVのYは輝度、Uは青色差、Vは赤色差のデータです。UはCb、VはCrとも表します。YもCrもCbも各8ビットで表します。
Yデータだけを扱うと白黒画像になります。
RGB565のようにYUV”422”も色データ量を減らして16ビットで1ピクセルを表す方法です。”422”の意味ですが、これは8バイトのうち、4バイトをY、2バイトをCb、2バイトをCrに割り当てて4ピクセルを表します。こうすることで輝度Yは劣化がなくなります。各ピクセルと出力の関係は次のようになります。(4バイトで2ピクセルではなく、8(4+2+2)バイトで4ピクセルなので422)
四角はそれぞれ1画素に相当します。
各データの横の番号はたとえばY0の場合は輝度0ピクセル目、Y1は1ピクセル目...という意味です。4ピクセルをCb0,Y0,Cr0,Y1,Cb2,Y2,Cr2,Y3の順番にの8バイトで出力しますので1ピクセル辺り2バイト換算のデータ量になります。但し、上の図のようにカラー情報は2ピクセルごとに省略されています。
上の図ではY1とY3のカラー情報がありませんが、計算時や画像表示時にはとなりのピクセルの色情報で計算します。
一見、RGB565と比べて色情報の劣化が激しいように見えますが実際の画像はRGB565でもYUV422でもさほど変わりません。
RGB565からYUV422を計算することができます。計算にはITUで決められている公式などがありますが、このセンサーの場合はハードウェア構造の修正値を含めて次の式になります。
Y=0.299R+0.587G+0.114B
Cb(U)=0.564BY+128
Cr(V)=0.713RY+128
下は実際にAG-CAM08を使ってYUV422モードでQVGAで撮影した画像です。Yデータは劣化していない輝度データです。CrとCbは横方向に1/2に劣化していますがあまり気になりません。Crを見ると赤レンジャーの部分の数値(濃淡)が高いことがわかります。Cbを見ると青レンジャー部分が高く、黄レンジャー部分が低いです。黄色は青のほぼ逆相の色になります。これだけでカラー画像を再生することができます。
※撮影画像はFPGAを使った回路を通してPC上で再生しました。PC上ではRGBで表示しますが、ここではITU-RBT601方式で変換しています。式は
R=1.164x(Y-16)+1.569x(Cr-128)
G=1.164x(Y-16)-00.391x(Cb-128)-0.813x(Cr-128)
B=1.164x(Y-16)+2.018x(Cb-128)
となりますが、計算中に整数にまるめられ値がオーバーフロー(8bit値より繰り上がる)やアンダーフロー(0より下回る)になる可能性がありますので、PC上では倍精度符号付変数(WindowsXPの場合double)で計算し、255以上の場合は255、0以下の場合は0に修正しています。
<輝度と色相>
当製品はセンサーなので、カメラ撮影ではなく、取得した画像を処理して使うことを想定しています。カメラ撮影の場合はRGBかCMY色体系にして画面に表示するなり印刷するなりすればよいのですが、画像認識ではRGBやCMY以外の色体系で計算する方が効率や精度が良いことが多くあります。ここでは知っておいた方が良いこととして輝度と色相について解説します。尚、本格的な画像処理や色体系については画像処理や美術の本を参照してください。(この他にもいろいろな考え方があります)
ロボットコンテストなどではよくカラーボールを使った画像認識などがあります。RGB色体系を使うと、色が薄い又は真っ黒又は真っ白の場合は値が微妙で計算しづらい場合があります。たとえば、赤いボールを認識する場合、真っ暗な中に赤いボールだけにスポットライトが当たっていれば簡単に認識できますが、実際の環境は一見赤には見えない色にも赤成分が多く含まれていることがあります。たとえば、上のYUVの画像で赤レンジャーがいない場合は黄レンジャー部分がR成分が高いので黄色が赤と判定されてしまうかもしれません。また、真っ白の場合はRGB全ての値が最高になりますので白も赤と判断されるかもしれません。真っ黒の場合も同様で、RGB全部が低い値になるので何色かの判断がつきません。
このように特定の色を判定する場合は「色相」が都合が良いです。下はCMOS−EYEの色相の図です。
色相はRGBやYUVから計算できます。RGBの色データは3個、YUVは2個になりますが、色相は色を角度で表すので1つのデータで色を表すことができます。つまり、輝度(明るさ)に影響されず、近い色の影響も受けずにいろを判断することができます。RGBから色相への変換は専門書を参照願います。Webで検索する場合は「Hue」「HSB」「色相」「RGB」「変換」のキーワードで探すとよいでしょう。色相の英語はHueです。
<I2Cでの設定について>
本センサーは内部に設定用レジスタを持っており、その値を書き換えることで各種設定や動作指示を行うことができます。レジスタの書き換えにはI2Cを使います。
I2Cは電子デバイスでよく使われている同期式シリアル通信の一種です。SCLとSDAの2つの信号線とGNDから構成されており、マスタ側(センサーに接続するFPGAなど)からクロックを供給することで通信します。SCLはクロック線で、SDAはデータ線となり、SDAは送受信を兼ねるので双方向になっています。I2Cの規格ではマスタから供給するクロックは400kHzとなっていますが、本製品の場合は正確に400kHzでなくても通信できます。
I2CはSCLとSDAはオープンドレイン端子となっているので接続時にはプルアップするような規格になっていますが、本製品は基板上でSCLおよびSDA両方をVCCにプルアップしていますので外部でプルアップする必要はありません。
I2Cの詳細については書籍などを参照願います。ここでは製品を使う上で必要な部分を簡単に説明します。
<電気的な動作>
SCLラインはマスタ側から400kHz前後のクロックを送ればよいのであまり難しくないと思います。
SDAラインは送信と受信を1つの線で行いますので少々複雑になります。通信は電圧のHIGH/LOWで判定しますが、オープンドレインなので送信側の動作は実際にはオープン/LOWの動きになります。オープンは電気的に接続していない(厳密にはしてるがしてないような感じ)状態です。線はプルアップされているので両方オープンにすると電圧はHIGHになり、どちらか一方がLOWになるとLOWになります。
たとえば、マスタ側とセンサ側の操作と実際の通信ラインの関係は次のようになります。
オープンドレインでない場合は、両方の端子を出力にしてしまうと、片方をHIGH,別な方をLOWにした場合ショートと同じ状態になり危険ですが、このような方式でしたらオープンかLOWしかありませんのでショートにならず、どちら側からでも共通のラインを操作することができます。
よって、マスタ側の端子はSCLもSDAもオープンドレイン端子を使ってください。
実際のI2Cではマスタ側が通信を制御し、あらかじめ決められたタイミングでマスタ側もしくはセンサ側(スレーブ側)どちらか一方が送信を行います。
送信をおこなっていない方は端子をオープンにして待ちます。
<通信の基本タイミング>
I2Cの通信は、SDAとSCL両方の状態により次のルールで行われます。
1)SCLがHIGHの時、SDAを立ち下げると通信スタート(スタートコンディションという)
2)SCLがLOWの時SDAの状態を変化させ、SCLがHIGHの時に値を読む。
3)SCLがHIGHの時、SDAを立ち上げると通信ストップ(ストップコンディションという)
SCLがHIGHの時にSDAを変化させるのはスタートコンディションとストップコンディションの時だけということに注意してください。
<スレーブアドレス>
I2Cは1つのマスターを複数のスレーブにつなぐことができる規格であり、どのスレーブと通信するかはマスター側からスレーブアドレスを送ることにより選択されます。この製品のスレーブアドレスは8ビット長になります。スレーブ側は自分のアドレスと一致した場合に通信を開始します。このとき、一番最下位ビットは読み取りなのか書込みなのかの選択ビットになりますので、読み取りと書込みではアドレスが異なります。
このセンサーのスレーブアドレスは固定されており、次のようになっています。
マスターから書込み:DCh(二進数で11011100)
マスターから読み取り:DDh(二進数で11011101)
スレーブアドレスを送るタイミングは下で説明します。
<レジスタのアドレスとデータ>
このセンサーのI2Cは、センサー内のレジスタに値を書き込む又はセンサー内のレジスタから値を読み込むのに使われますので、通信は「あるアドレスにデータを書き込む」又は「あるアドレスのデータを読み取る」の2種類だけになります。ということで、基本的には スレーブアドレス レジスタアドレス データ の3つの値を通信することになります。詳しくは下で。この製品のレジスタアドレス長とデータ長は8ビット長になります。
<書込み時/読み取りの流れ>
各通信の流れは次の通りになります。
■書込み時
1)マスターがスタートコンディションを発行し、クロック生成を開始します。
2)マスターからクロックにあわせてスレーブアドレス(Write:書込み)を出力します。出力順はMSBファースト(上位ビットを先に)で送ります。
3)スレーブアドレスを送信したら、マスタ側はSDAをオープンにして解放し1クロック待ちます。スレーブ(センサ側)は正しくスレーブアドレスを受け取ったらACKを返します。ACKは上記「A」のところで、スレーブ(センサ)からLOWが出力されます。
4)マスター側からレジスタアドレス8ビットを送ります。その後、SDAをopenにし、1ビット待ちます。
5)スレーブ(センサ)が正しくレジスタアドレスを受け取ったら、スレーブ(センサ)がACKを返します。
6)マスター側から書込みデータを送ります。その後、SDAをopenにし、1ビット待ちます。
7)スレーブ(センサ)が正しくデータを受け取ったら、スレーブ(センサ)がACKを返します。
8)最後にマスターがストップコンディションを発行します。
■読み取り時
読み取り時の冒頭は、書込み時1)〜5)まで同じです。
6)マスター側からリスタートコンディションを発行します。リスタートコンディションはスタートコンディションと同じ状態です。
7)マスターからスレーブアドレス(Read:読み取り)を送ります。その後、SDAをopenにし、9ビット待ちます。
8)スレーブ(センサ)が正しくレジスタアドレスを受け取ったら、スレーブ(センサ)がACKを返します。
9)スレーブ(センサ)側からデータ8ビットが送られます。
10)データが送られたら、マスタはNACKを発行します。SDAをopenにすることでNACKになります。このとき、スレーブ(センサ)側もopenになっているので、正常動作の場合はNACKの間はSDAラインがHIGHになります。
11)最後にマスターがストップコンディションを発行します。
このようにして、センサのレジスタを操作することによりセンサの設定を行います。
<設定レジスタ一覧>
以下に設定用レジスタの一覧を示します。各レジスタの意味についてはこちらのページに詳しく書いてあります。
<設定レジスタの詳細説明のページへ>
※数値の後ろにdがついているものは10進数表記、hがついているものは16進標記になっています。尚、初期値は2進数表記になっています。
アドレス |
(16進) |
名称 |
初期値 |
(16進) |
説明 |
21d |
15h |
Global Gain |
00000000 |
00h |
総合増幅率。1〜32倍に設定可能。 |
22d |
16h |
Red Gain |
01000000 |
40h |
赤増幅率。1〜4倍に設定可能。 |
23d |
17h |
Green Gain1 |
01000000 |
40h |
緑1増幅率。1〜4倍に設定可能。 |
24d |
18h |
Blue Gain |
01000000 |
40h |
青増幅率。1〜4倍に設定可能。 |
25d |
19h |
Green Gain2 |
01000000 |
40h |
緑2増幅率。1〜4倍に設定可能。 |
29d |
1Dh |
Timming Control 1 |
00000000 |
00h |
内部クロック設定 |
30d |
1Eh |
Timming Control 2 |
00001010 |
0Ah |
画面反転設定 |
32d |
20h |
Timming Control 4 |
01000100 |
44h |
画素数設定(VGA/QVGA/QQVGA) |
70d |
46h |
Fliker Control |
00000000 |
00h |
蛍光灯フリッカコントロール |
78d |
4Eh |
Image Control 2 |
00010000 |
10h |
出力フォーマット選択、同期信号設定 |
79d |
4Fh |
Image Control 3 |
00001010 |
0Ah |
同期信号設定その2 |
80d |
50h |
Image Control 4 |
01110000 |
70h |
端子設定、カラー設定 |
151d |
97h |
Cb Color Gain |
00100101 |
25h |
Cb増幅率 |
152d |
98h |
Cr Color Gain |
00100101 |
25h |
Cr増幅率 |
155d |
9Bh |
Bright |
00000000 |
00h |
輝度調整 |
156d |
9Ch |
Contrast |
10010110 |
96h |
コントラスト調整 |
176d |
B0h |
Exposure_H |
00000000 |
00h |
AE機能がOFFの時、露出時間を設定します。初期値32768d。数値を大きくすると露出時間が長くなります。 |
177d |
B1h |
Exposure_M |
10000000 |
80h |
178d |
B2h |
Exposure_L |
00000000 |
00h |
179d |
B3h |
TargetExp |
01110000 |
70h |
AE機能がONの時、基準となる輝度の設定をします。 |
212d |
D4h |
Auto Congtrol |
00111100 |
3Ch |
AE又はAWB機能のON/OFFを行います。 |
※上記以外のレジスタの値は書き換えないで下さい。リセット又は電源切り入りすることで上記初期値にもどります。
<ドキュメント>
このページが取り扱い説明となっています。
<サンプルプログラム>
FPGAによるサンプルプログラム(VHDL)は有償となります。メールにてお問い合わせ下さい。価格は一般的なIPコア程度の価格(数十万円から)となります。
<注意事項>
・このボードは電子機器です。取扱い、輸送時には静電気対策を行ってください。ICの足や、各ピンを直接手で触ったりすると静電破壊される場合があります。
・バッテリ使用時には電源ラインをショートさせると、バッテリが破裂・発火する可能性があります。作業中にはショートさせないよう十分注意して下さい。また、取り付け後も、あいている電源ラインに導電物質が触らないように注意して下さい。
<Q&A>
現在、Q&Aはありません。
<故障/不具合と思ったら?>
故障のお問い合わせの中で、配線ミスや設定ミスなどが多くあります。故障と思う前にもう一度、配線、電源、設定などを十分確認することをお勧めします。また、使い方もいろいろあり、この説明ページも長いですので、見落としていることがないか、再度、十分にこのページを見直してください。
万が一、初期不良の場合は新品交換とさせていただきます。
故障かどうかの確認を、浅草ギ研で行うことも可能です。こちらで確認できるのは、本体だけです。十分にご確認頂いた上でも故障や不具合と思った場合は、まずは浅草ギ研にメールでお問い合わせ下さい。その後は、まずは着払いでお送り頂き、初期不良であった場合は新品をお送り致します。もし、確認の上、不具合が発見できずに正常動作が確認された場合は確認手数料(2000円前後)と送料を申し受ける場合があります。
有限会社 浅草ギ研
お問い合わせ係り
<ご質問について>
この製品は部品扱いとなりますので、基本的にはご質問にはお答えできません。
個別のプログラミングや電子回路についてもお答えできません。
尚、業務用システムなどに使用する場合は有償での技術サポートが可能ですのでメールにてお問い合わせ下さい。
|
|
|
|