Introdução:
Esse
modulo de câmera do
modelo OV7670 é bem complexo, não é muito simples criar interfaces com esse dispositivo utilizando um microcontrolador de 8/16 bits, qualquer processamento de imagem/cor necessita de um tratamento e um código para processar isso tudo.
O que estamos
mostrando aqui esta disponível na internet, o assunto é pouco comentado e tem pouca informação de como fazer, já que existem
diferentes tipos de módulos como esse, com diferentes funcionalidades.
Esse post é mais apara aguçar as infinitas possibilidades!
Características:
- Modelo: OV7670
- Cor: preto + azul
- Material: PCB + plástico + metal
- Matriz fotossensível: 640 x 480
- Tensão: 2.5V - 3.0V;
- Potência de operação: 60mW/15fpsVGAYUV;
- Modo Sleep: <20 uA;
- Temperatura de Operação: -30 a 70 ° C.
- Formato de Saída: YUV/YCbCr4: 2 2 RGB565/555/444 GRB4: 02:02 Raw RGB de Dados (8 dígitos);
- Tamanho da lente: 1/6 ", Ângulo de visão: 25 graus
- Max frame Rate:. 30fps VGA
- Sensibilidade: 1,3 V / (Lux-sec )
- Signal to Noise Ratio: 46 dB;
- DynamicRange: 52 dB
- Modo de Browse: por linha; exposição eletrônico: 1-510 linha
- Cobertura Pixel: 3.6um x 3.6um
- Alta sensibilidade para a operação com pouca luz
- Baixa tensão de operação para aplicação embarcada, interface SCCB padrão compatível com a interface I2C; Raw RGB, RGB (GRB4: 2:2, RGB565/555/444), YUV (4:02:02) e , YCbCr (04:02:02) formato de saída
- Suporte VGA, CIF e de CIF a 40 x 30, formato, método Pixel Vario para sub-amostragem;
- Auto Controle de Imagem: AEC, AGC, AWB, ABF, ABLC, Controle de Qualidade da Imagem : A saturação de cor, matiz, gama, nitidez e anti-blooming; ISP inclui redução de ruído e correção do ruido
- Suporte image scaling; correção sombreamento Lens; Flicker 50/60Hz detecção automática;
- Cor de saturação com ajuste automático
- Borda de aprimoramento com ajuste automático
Pinos:
Signals | Description | Signals | Description |
+3.3V | +3.3V from shield | +5V | +5V from Arduino |
D1 | 3.3V logic version of D1 | D0 | 3.3V logic version of D0 |
D3 | 3.3V logic version of D3 | D2 | 3.3V logic version of D2 |
D5 | 3.3V logic version of D5 | D4 | 3.3V logic version of D4 |
D7 | 3.3V logic version of D7 | D6 | 3.3V logic version of D6 |
D9 | 3.3V logic version of D9 | D8 | 3.3V logic version of D8 |
+3.3V | +3.3V from shield | GND | Ground |
IO1 | Expansion GPIO1 | IO0 | Expansion GPIO0 |
D11 | 3.3V logic version of D11 | D13 | 3.3V logic version of D13 |
IO2 | Expansion GPIO2 | D12 | 3.3V logic version of D12 |
IO3 | Expansion GPIO3 | D10 | 3.3V logic version of D10 |
IO5 | Expansion GPIO5 | IO4 | Expansion GPIO4 |
A0 | 3.3V logic version of A0 | A1 | 3.3V logic version of A1 |
A2 | 3.3V logic version of A2 | A3 | 3.3V logic version of A3 |
A4 | 3.3V logic version of A4 | A5 | 3.3V logic version of A5 |
GND | Ground | GND | Ground |
O Arduino usa as IOs para emular o barramento paralelo para acessar os registros internos ArduChip e registros LCD externo. O usuário deve criar uma instância da classe ArduCAM e UTFT que utilizam barramento paralelo antes da rotina de instalação. A função de cada pino:
Signals | Functions |
D[7:0] | Parallel bus data[7:0] |
A0 | Parallel bus RD, active low |
A1 | Parallel bus WR, active low |
A2 | Parallel bus RS |
A3 | Parallel bus CS, active low |
A4 | I2CSDA for Camera Module |
A5 | I2CSCL for Camera Module |
D10 | LCD chipselect, active low |
D9 | SD/TF chipselect, active low |
D11 | SPI MOSI |
D12 | SPI MISO |
D13 | SPI SCLK |
Essa parte é um código para a demonstração do instanciar o ArduCAM e classe UTFT.
04 | UTFT myGLCD(ITDB32S,A2,A1,A0,10); |
06 | ArduCAM myCAM(OV7670,A2,A1,A0,A3); |
Registradores ArduChip:
ArduChip é o núcleo do ArduCAM, que incorpora um FPGA Altera MAXII CPLD EPM240 como processador principal. A principal tarefa do ArduChip é fazer o real tempo de transferência DMA entre o módulo da câmera e o display 3.2 "LCD e interagir como Arduino, Camera e LCD. Ele também fornece AVR como expansão GPIO, ele pode ser configurado como entrada ou saída e resolver o problema dos recursos limitados IO na placa do Arduino. Os GPIOs pode ser usado como gatilho e desencadear outros eventos(no Arduino por exemplo)
Address | Name | Mode | Description |
0×00 | DDR | R/W | Data Direction RegisterBit[7:6]: ReservedBit[5]: IO5 input/output selectionBit[4]: IO4 input/output selectionBit[3]: IO3 input/output selectionBit[2]: IO2 input/output selectionBit[1]: IO1 input/output selectionBit[0]: IO0 input/output selection1 = output, 0 = input |
0×01 | PORT | R/W | OutputPortRegisterThe value will reflect on the Pin IO0~IO6 correspondinglyBit[7:6]: ReservedBit[5]: IO5 output valueBit[4]: IO4 output valueBit[3]: IO3 output valueBit[2]: IO2 output valueBit[1]: IO1 output valueBit[0]: IO0 output value1 = High, 0 = Low |
0×03 | MODE | R/W | Bus ModeDetermine who is owner of the data bus, only one owner is allowed.Bit[7:3]: ReservedBit[2]: MCU read LCD busBit[1]: Camera write LCD busBit[0]: MCU write LCD bus |
0×80 | PIN | RO | Input Pin RegisterThe value will reflect the IO0~IO6 Pin status correspondinglyBit[7:6]: ReservedBit[5]: IO5 input valueBit[4]: IO4 input valueBit[3]: IO3 input valueBit[2]: IO2 input valueBit[1]: IO1 input valueBit[0]: IO0 input value1 = High, 0 = Low |
0×81 | Trigger | RO | Trigger input RegisterBit[7:2]: ReservedBit[1]: Capture button status, 0 = pressed, 1 = releasedBit[0]: Frame start signal, equal to VSYNC |
0×82 | Revision ID | RO | Bit[7:6]: Revision integer partBit[5:0]: Revision decimal partFirst revision released ID is 0×40, means V1.00 |
ArduCAM GPIO demo(escrevendo):
10 | #include <avr/pgmspace.h> |
11 | #include <SoftwareSerial.h> |
13 | #define ARDUCHIP_DDR 0x00 //GPIO direction register |
14 | #define ARDUCHIP_PORT 0x01 //GPIO output register |
15 | #define ARDUCHIP_PIN 0x80 //GPIO input register |
17 | ArduCAM myCAM(OV7670,A2,A1,A0,A3); |
19 | SoftwareSerial mySerial(8, 9); |
23 | mySerial.println( "hello" ); |
24 | myCAM.write_reg( ARDUCHIP_DDR, 0xff); |
35 | myCAM.write_reg( ARDUCHIP_PORT, val); |
37 | read_val = myCAM.read_reg(ARDUCHIP_PORT); |
38 | mySerial.write(read_val); |
ArduCAM GPIO demo(lendo):
10 | #include <avr/pgmspace.h> |
11 | #include <SoftwareSerial.h> |
13 | #define ARDUCHIP_DDR 0x00 //GPIO direction register |
14 | #define ARDUCHIP_PORT 0x01 //GPIO output register |
15 | #define ARDUCHIP_PIN 0x80 //GPIO input register |
18 | ArduCAM myCAM(OV7670,A2,A1,A0,A3); |
20 | SoftwareSerial mySerial(8, 9); |
24 | mySerial.println( "hello" ); |
25 | myCAM.write_reg( ARDUCHIP_DDR, 0x00); |
33 | temp = myCAM.read_reg(ARDUCHIP_PIN); |
Bom dia! É possivel você postar a conexões deste shield com arduino uno?
ResponderExcluirFala parceiro, com arduino so funciona usando esse outro modulo em conjunto http://www.arducam.com/
Excluir