Camera Shield

Camera Shield é a primeira placa shield que suporta fotografia. Ela é baseada na solução VC0706 + OV7725; o primeiro é um processador de câmera de alto desempenho com funções aprimoradas de processamento de imagem e codec JPEG por hardware integrado, e o segundo é uma câmera VGA de 1/4 de polegada, monocristal, com processador de imagem em um encapsulamento de tamanho reduzido. Escrevemos nossa biblioteca para controlar a Camera Shield via UART/SPI, o que torna possível tirar fotos facilmente com a sua placa Arduino. Vamos lá, use-a para tirar uma foto!
Especificação
-
Totalmente compatível com Arduino ou Seeeduino
-
Resolução de foto: (640x480) saída JPEG
-
Barramento serial de alta velocidade para controle: UART/SPI
-
Interface de cartão MicroSD integrada
-
Alimentação: 5 V
Interface de Hardware
A Camera Shield pode ser controlada via interface SPI ou UART.


Primeiros Passos
Aqui está uma breve introdução sobre como usar a Camera Shield.
-
Baixe o arquivo da biblioteca Camera Shield do GitHub e extraia o arquivo da biblioteca para a pasta de bibliotecas do seu Arduino.
-
Abra a pasta de exemplos em libraries/Camera_Shield_VC0706; você encontrará o sketch de exemplo snapshot. Clique duas vezes no arquivo snapshot.ino para abri-lo com a IDE do Arduino.
-
Organizamos a biblioteca para tornar possível controlar a Camera Shield via Software Serial/Hardware Serial/SPI; você pode fazer sua escolha modificando o código.
#include "SoftwareSerial.h"
#include <VC0706_UART.h>
#include <SD.h>
#include <SPI.h>
#define SS_SD 10
//use software serial
SoftwareSerial cameraconnection(2,3);//Rx, Tx
VC0706 cam = VC0706(&cameraconnection);
//use hardware serial
//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()
{
//nothing to do
}
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!");
}
// Create an image with the name 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;
// create if does not exist, do not open existing, write, sync after write
if (! SD.exists(filename)) {
break;
}
}
// Open the file for writing
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();
}
use Hardware Serial or Software Serial for communication
we use Serial(Software Serial or Hardware serial) to communicate with Camera Shield, you can generate your applicance like below:
//use software serial
SoftwareSerial cameraconnection(2,3);//Rx, Tx
VC0706 cam = VC0706(&cameraconnection);
or if you want to use the hardware serial, you can do it like below:
//use hardware serial
VC0706 cam = VC0706(&Serial1);
We use the software serial by default. If hardware serial is your choise, you need to modify the code in VC0706_UART head file. Change
#define USE_SOFTWARE_SERIAL 1
to
#define USE_SOFTWARE_SERIAL 0
Use UART or SPI for data transmission
Usually, you can take a picture by the following steps:
cam.takePicture();
uint16_t jpglen = cam.getFrameLength();
cam.getPicture(jpglen);
buffer = cam.readPicture(bytesToRead);
and we allow you to read data via two mode:
-
- UART —— slower mode. Software Serial only support 9600/19200 baud rate. Hardware Serial can be 115200/38400/19200/9600. It will take about 30s to get a picture if you choose the uart mode and at 19200 baud rate.
-
- SPI —— faster mode. It will only take about 1s or 2s to get the whole picture back.
You can choose your mode in VC0706_UART header file. We use the SPI mode by default.
#define TRANSFER_BY_SPI 1
change it to
#define TRANSFER_BY_SPI 0
to use the UART mode.
-
Empilhe a Camera Shield sobre o Arduino e insira um cartão micro‑SD na Camera Shield; você deve prestar atenção aos jumpers seriais que definiu no seu código.
-
Compile o sketch e faça o upload para a sua placa Arduino. Abra a porta Serial da IDE do Arduino; você poderá ver as informações de depuração exibidas pela porta Serial, e o LED de status do cartão SD piscará rapidamente durante a transferência de dados.
-
Quando o programa terminar, retire o cartão SD e insira-o no seu computador; você poderá ver suas fotos. Divirta-se
Visualizador de Esquemático Online
Recursos
Suporte Técnico & Discussão sobre o Produto
Obrigado por escolher nossos produtos! Estamos aqui para oferecer diferentes tipos de suporte para garantir que sua experiência com nossos produtos seja a mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.