トランジスタ技術2012年3月号 の特集で紹介されていた頒布カメラBをmbedで使ってみました。
ほとんどこちらの記事をなぞっただけです。大変参考になりました。
Robot No.8080のブログ mbed + トラ技カメラBの実験。(その1)
1.カメラモジュールのデータシートを入手して、ピンの位置を確認
2.カメラモジュールとmbedを配線
3.mbedのプログラムをインポート
4.撮影
5.Processingでデータを画像化
1.カメラモジュールのデータシートを入手して、ピンの位置を確認
こちらのページから「PCB寸法図」のpdfをダウンロードします。20本あるピンの左下・白い三角があるところが1pinで、その上が2pin、3pinは1pinの右、となっています。僕は横に進んでいくと勘違いしました。
2.カメラモジュールとmbedを配線
それぞれのpinをこちらの記事に従って配線します。
SCL端子(3pin)はプルアップします。抵抗は10kΩでOKでした。
8pinはnc(No Connection?)となっているので、結線していません。
3.mbedのプログラムをインポート
こちらのプログラムをインポートします。

4.撮影
ターミナルのscreen だと文字化けしてしまったので、ArduinoのSerial Monitorで表示しました。通信速度が最初は9600になっているので、115200に変更。
イニシャライズの後、何か文字を送ると数字がダーッと出力されます。これが160px * 120px * RGBのデータになります。改行を削除すると57600文字あります。
5.Processingでデータを画像化
今回はテストなので、この文字列をテキストエディタにコピペして「captureData.txt」というファイル名で保存。Processingで読み込んで以下のように各ドットを描画すると、画像としてみる事ができます。取りだした値は0〜15なので、16を掛けて256段階にしてます。
int width = 160;
int height = 120;
String[] pixeldata;
void setup(){
size(width, height);
noStroke();
pixeldata = loadStrings("captureData.txt");
}
void draw(){
for( int i=0; i<width*height; i++){
int x = i%width;
int y = i/width;
fill(
unhex( String.valueOf(pixeldata[0].charAt(3*i+0)) ) *16,
unhex( String.valueOf(pixeldata[0].charAt(3*i+1)) ) *16,
unhex( String.valueOf(pixeldata[0].charAt(3*i+2)) ) *16
);
rect(x, y, 1, 1);
}
}
そうしてようやく得られた画像がこちら。
ちいさっ!地味!


