ゆるく楽しむプログラミング

M5AtomS3Rカメラキットを使ってみた

AtomS3のLCDの代わりにカメラを付けたような構成のマイコンボードです 外部にでている端子のピン番号は変わっていませんが、ピン機能は一部変更があります。





カメラ GC0308

カメラユニット GC0308はI2Cで接続、I2Cアドレスは 0x21です。
カメラの基本性能は▼
Active pixel array 648 x 488 
ADC resolution 10 bit ADC
Max Frame rate 30fps@24Mhz,VGA

G18にLOWを出力
仕様のピンマップにはコッソリ書かれていますが・・・ (。-`ω-)

GC0308のPOWER_NがG18に繋がっています。
普通に考えると G18をHIGHで POWER ONな気がしますが
G18をLOWで CG0308 が POWER ONになるようです。

サンプルプログラムでも
pinMode(POWER_GPIO_NUM, OUTPUT);
digitalWrite(POWER_GPIO_NUM, LOW);
※ POWER_GPIO_NUMはG18に定義されている。

としていて、最初にG18をLOWに設定しています。

G18をLOWにしないとGC0308が動きません。

確認用DEMOスケッチ

公式サイト で配付している AtomS3R CAM - Web CAM (Arduino) をベースに作成。
QVGA(320x240)のJPEGを連続して表示しています。
ライブアリの確認できていませんので、不明ですが
.pixel_format = PIXFORMAT_RGB565,
.frame_size = FRAMESIZE_QVGA, 
の記述がありますので、ピクセルフォーマットと画像サイズは偏向出来ると思われます。
※カタログスペックではVGA(640x480)は可能なはず。

Webサーバ(AtomS3R)へのリクエストは Ajuxを使用して GET モードで 送信しているので、画面の再描画が起こりません。
WiFiルータにClientとして接続するSTA MODEとAtomS3RをWiFi親機にするAP MODEが選べます。
AP MODEで使用する場合は、SSID:AtomS3Rに接続し、http://192.168.4.1にアクセスしてください。

GC0308で出来ることは、スペックシートを見れば確認できます。
スペックシートに記載されている機能と、ライブラリのヘッダー定義を比較すれば、設定方法も何となくわかります。

例えばスペックシートの▼の部分を見ると、上下反転、左右反転が出来ることが分かります。


sensor.h の記述
int (*set_hmirror) (sensor_t *sensor, int enable);
int (*set_vflip) (sensor_t *sensor, int enable);

なので ▼ の操作で、カメラ画像を180度回転出来ることが分かります。



他にも sensor.h には各種パラメタ定義がありますので、パラメタを変更すれば色々できそうです。
ただ、GC0308専用のライブラリではないようなので、GC0308では設定できない値もありそうです。
PIXFORMAT_RGB565, // 2BPP/RGB565
PIXFORMAT_JPEG, // JPEG/COMPRESSED
PIXFORMAT_RGB888, // 3BPP/RGB888
PIXFORMAT_RAW, // RAW
PIXFORMAT_RGB444, // 3BP2P/RGB444
PIXFORMAT_RGB555, // 3BP2P/RGB555

FRAMESIZE_QQVGA, // 160x120
FRAMESIZE_QVGA, // 320x240
FRAMESIZE_CIF, // 400x296
FRAMESIZE_HVGA, // 480x320
FRAMESIZE_VGA, // 640x480
FRAMESIZE_SVGA, // 800x600

G38ピンに接続したLEDを操作出来るWebカメラのスケッチ

AtomS3R-CAM-TEST.zip

解説動画