Skip to main content

Camera Shield

note

この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues

pir

Camera Shieldは写真撮影をサポートする初のシールドボードであり、VC0706 + OV7725のソリューションに基づいています。VC0706は高性能なカメラプロセッサで、強化された画像処理機能を備え、ハードウェアJPEGコーデックを内蔵しています。一方、OV7725は小型パッケージに収められた高性能な1/4インチ単一チップVGAカメラおよび画像プロセッサです。私たちはCamera ShieldをUART/SPI経由で制御するためのライブラリを作成しており、Arduinoボードを使用して簡単に写真を撮ることが可能です。さあ、これを使って写真を撮りましょう!

仕様


  • ArduinoまたはSeeeduinoと完全互換

  • 静止画解像度: (640x480) JPEG出力

  • 高速シリアルバス制御: UART/SPI

  • 統合されたMicroSDカードインターフェース

  • 電源供給: 5 V

ハードウェアインターフェース


Camera ShieldはSPIまたはUARTインターフェースを介して制御できます。

pir

pir

初めての使用方法


以下はCamera Shieldの使用方法の簡単な紹介です。

  1. Camera ShieldライブラリファイルをGitHubからダウンロードし、Arduinoのライブラリフォルダにライブラリファイルを展開します。

  2. libraries/Camera_Shield_VC0706フォルダ内のexampleフォルダを開き、snapshot例のスケッチを見つけます。snapshot.inoファイルをダブルクリックしてArduino IDEで開きます。

  3. ライブラリを整理して、Software Serial/Hardware Serial/SPIを介してCamera Shieldを制御できるようにしました。コードを変更することで選択できます。

#include "SoftwareSerial.h"
#include <VC0706_UART.h>
#include <SD.h>
#include <SPI.h>
#define SS_SD 10

//ソフトウェアシリアルを使用
SoftwareSerial cameraconnection(2,3);//Rx, Tx
VC0706 cam = VC0706(&cameraconnection);
//ハードウェアシリアルを使用
//VC0706 cam = VC0706(&Serial1);

void setup()
{
Serial.begin(9600);
Serial.println("VC0706 Camera Snapshot Test ...");

if (!SD.begin(SS_SD)) {
Serial.println("SD Card init failed...");
return;
}
if(true == cameraInit()){
snapShot();
}else{
Serial.println("camera init error...");
}
}

void loop()
{
//何もすることはありません
}

bool cameraInit()
{
cam.begin(BaudRate_19200);
char *reply = cam.getVersion();
if (reply == 0) {
Serial.println("Failed to get version");
return false;
} else {
Serial.println("version:");
Serial.println("-----------------");
Serial.println(reply);
Serial.println("-----------------");
return true;
}
}

void snapShot()
{
Serial.println("Snap in 3 secs...");
delay(3000);
if (! cam.takePicture()){
Serial.println("Failed to snap!");
}else {
Serial.println("Picture taken!");
}
// IMAGExx.JPGという名前の画像を作成
char filename[13];
strcpy(filename, "IMAGE00.JPG");
for (int i = 0; i < 100; i++) {
filename[5] = '0' + i/10;
filename[6] = '0' + i%10;
// 存在しない場合は作成、既存のものは開かず、書き込み、書き込み後に同期
if (! SD.exists(filename)) {
break;
}
}
// 書き込み用にファイルを開く
File imgFile = SD.open(filename, FILE_WRITE);
Serial.print("create ");
Serial.println(filename);
uint16_t jpglen = cam.getFrameLength();
Serial.print("wait to fetch ");
Serial.print(jpglen, DEC);
Serial.println(" byte image ...");
int32_t time = millis();
cam.getPicture(jpglen);
uint8_t *buffer;
while(jpglen != 0){
uint8_t bytesToRead = min(32, jpglen);
buffer = cam.readPicture(bytesToRead);
imgFile.write(buffer, bytesToRead);
//Serial.print("Read "); Serial.print(bytesToRead, DEC); Serial.println(" bytes");
jpglen -= bytesToRead;
}
imgFile.close();
time = millis() - time;
Serial.println("Done!");
Serial.print("Took "); Serial.print(time); Serial.println(" ms");
cam.resumeVideo();
}

Hardware SerialまたはSoftware Serialを使用した通信

Camera Shieldとの通信にはSerial(Software SerialまたはHardware Serial)を使用します。以下のようにアプリケーションを生成できます。

//ソフトウェアシリアルを使用
SoftwareSerial cameraconnection(2,3);//Rx, Tx
VC0706 cam = VC0706(&amp;cameraconnection);

または、ハードウェアシリアルを使用したい場合は以下のようにします。

//ハードウェアシリアルを使用
VC0706 cam = VC0706(&amp;Serial1);

デフォルトではソフトウェアシリアルを使用します。ハードウェアシリアルを選択する場合は、VC0706_UARTヘッダーファイルのコードを変更する必要があります。以下を変更します。

#define USE_SOFTWARE_SERIAL         1

次のように変更します。

#define USE_SOFTWARE_SERIAL         0

UARTまたはSPIを使用したデータ送信

通常、以下の手順で写真を撮ることができます。

cam.takePicture();
uint16_t jpglen = cam.getFrameLength();
cam.getPicture(jpglen);
buffer = cam.readPicture(bytesToRead);

そして、データを以下の2つのモードで読み取ることができます。

    1. UART —— 遅いモード。Software Serialは9600/19200ボーレートのみをサポートします。Hardware Serialは115200/38400/19200/9600を使用できます。UARTモードを選択し、19200ボーレートの場合、写真を取得するのに約30秒かかります。
    1. SPI —— 高速モード。全体の写真を取得するのに約1秒から2秒しかかかりません。

VC0706_UARTヘッダーファイルでモードを選択できます。デフォルトではSPIモードを使用します。

#define TRANSFER_BY_SPI             1

これを以下のように変更してUARTモードを使用します。

#define TRANSFER_BY_SPI             0
  1. カメラシールドをArduinoに積み重ね、カメラシールドにmicro-SDカードを挿入します。この際、コード内で定義したシリアルジャンパーに注意してください。

  2. スケッチをコンパイルしてArduinoボードにアップロードします。Arduino IDEのシリアルポートを開くと、シリアルポートから表示されるデバッグ情報を見ることができます。また、データ転送中はSDカードのステータスLEDが素早く点滅します。

  3. プログラムが終了したら、SDカードを取り出してコンピュータに挿入します。写真を見ることができます。楽しんでください!

回路図オンラインビューア

リソース

技術サポートと製品ディスカッション

弊社製品をお選びいただきありがとうございます!製品の使用体験がスムーズになるよう、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、いくつかのコミュニケーションチャネルをご用意しています。

Loading Comments...