Hackeando a OV7670 para o Projeto Cápsula Espacial, FPV e outros.

Olá pessoal. A camera OV7670 é uma camera de baixo custo e cheia de recursos. Porém, e há um porêm, não existe maior documentação de uso na plataforma Arduino. Isso a torna extremamente interessante, pois se criou uma oportunidade única de hackea-la (no melhor sentido do termo). Pretendo iniciar a discussão do processo de hack no estilo dos posts do Gustavo Murta. Só que proponho os seguintes melhoramentos :

1 - Ao invés de um ou dois imprimirem maior velocidade e fazerem todo o projeto, este será gerado de maneira colaborativa e sincronizada, assim todos os participantes terão a oportunidade, traduzida em tempo, de fazerem os próprios experimentos, se assim desejarem.

2 - A idéia central é seguir o menor número possivel de forks (divisões da linha de pesquisa inicial), com a finalidade de tornar mais fácil o processo. Nada contra iniciar um novo fork, mas seria melhor restringir, para que o projeto não fique sem rumo e alguém tenha que assumir a fazer tudo.

3 - Acho que inicialmente, o hack por hardware é mais fácil, então peço que se houver hacks iniciais por software estes sejam bem simples e objetivos, pois não é muito bom criar problemas para resolver problemas.

Como sempre, as idéias são expostas sem maior ordem. Tudo bem. Vamos considerar isso a fase 1, uma espécie de brainstorming.

Exibições: 1951

Responder esta

Respostas a este tópico

A sua OV7670 é FIFO?

First In First Out. Os dados gerados primeiro são os primeiros a serem transmitidos.

Luis eu ainda não tinha visto seu tópico. Obrigado por comentar o meu método de hack de componentes ou equipamentos. 

Gosto de desvendar ou tentar desvendar segredos de eletrônica. 

No link abaixo, percebi que o Arduino provavelmente não será capaz de processar o video, devido ao clock mais baixo:

http://nicolasfley.fast-page.org/?page_id=35

So… The Arduino is based on the micro controller ATMega 328 which has a frequency of 16Mhz, the camera has a frequency of 24Mhz, I can divide this frequency per 32 to have an output frequency of 0.75Mhz. We can read the input of the Arduino with the time of two clocks (with an assembly language). That’s give a theoretical frequency of 8Mhz but we have to write down what we had read on the inputs on the memory and this is too long to keep the Arduino synchronized with the camera. That’s why a FIFO memory is used by the Arduino to put the picture in the memory at the frequency we want to.

Another problem is the max-speed of the arduino Serial communication, it can’t go faster than 115200 bauds, 14.4 kbytes/s. If you want to receive 10 pictures per second each image is theoricaly a 1.44 kbytes picture ! Each picture as per default a size of 640*480. I will try to configure a size of 160*120 per picture. In black and white without any compression it’s a 19200 bit picture / 2.4 kbyte per picture, and that’s too much… A compression of 1.6 is hard to implement in a 16Mhz microcontroller. A picture of 105*105 will fit in the 1.44 kbytes (1.378 kbytes).

Olha, esse negócio de câmera com Arduino Uno, Nano ou Mega (quase) não rola. O negócio é mesmo usar outra plaquinha com mais capacidade de processamento e memória, de preferência que possa rodar algum sistema operacional, como RPi, Galileo ou o novo Arduino Yún.

No meu blog tem alguns projetos que fiz com RPi + Camera. Rocurem por "câmera" e vejam se ajuda.

Essa camera, fabricada pela omnivision: http://www.ovt.com/

Tem todas as caracteristicas disponiveis em seu datasheet:

http://www.voti.nl/docs/OV7670.pdf

Vc já viu ?

Infelizmente ela gera um volume de informações (pelo menos 3 bytes por pixel) em uma velocidade incompatível com a capacidade do Arduino, que eu saiba.

Ficaria feliz de estar errado e alguem ligar ela diretamente ao Arduino, mas diria que não compensa, já que existem soluções mais interessantes para esse uso, como já foi dito pelos colegas, usando o RPi.

Sou dummy, mas li bastante sobre a camera na net.

Tem duas versões da ov7670: com FIFO (AL422) e sem FIFO.

Há um modelo que encontrei nos EUA que já vem com cristal de 10 Mhz soldado, não necessitando de ajuste de clock externo (por software ou cristal). Como sou leigão em eletronica, e comprei um modelo OV7670 sem FIFO e sem oscilador quebrei a cabeça para fazê-la funcionar. Ao menos penso que está a funcionar. 

Sobre qual versão vocês estão trabalhando ?

Então, li umas 15 vezes o forum do arduino.cc (forum.arduino.cc/index.php?topic=159557.0) e usei o código fonte (github.com/ComputerNerd/ov7670-simple e github.com/ComputerNerd/ov7670-no-ram-arduino-uno). Instalei o AVR + Eclipse + avrdude e subi para o arduino. Com meu multimetro vi que a camera está ativa. Fiz o teste que o MrArduino recomendou (colocar a tampa na camera e putar no serial e ver se volta 0x80). Não consegui converter a imagem (bytes não confirmam se a imagem está boa ou ruim), fiquei pensando se daria para salvar em um SD. Estou neste ponto no momento.
A pinagem que estou usando é a que é recomendada no github:

A5->SIOC com pullup
A4<->SIOD com pullup
11-> XCLK com pullup
A0<-0
A1<-1
A2<-2
A3<-3
4<-4
5<-5
6<-6
7<-7
3<-VSYNC
2<-PCLK

para pullup estou usando o resistor de 4.7k e 10k.

O código fonte do MrArduino é pauleira, tive de debugar tudo, ir devagarinho para entender superficialmente o que ele faz. Olhando muito datasheet e aprendendo um pouco sobre os registradores.
Agora estou quebrando o coco para salvar no SD pois está me faltando o pino 11 (usado pela ov7670) e aparentemente necessário para o uso do Shield SD.

Pessoal eu já trabalhei com essa câmera em um tcc. Não consegui terminar, mas consegui alguns resultados. Segui as dicas do MrArduino no arduino.cc e modifiquei outras com ajuda do meu professor e dos estudos. Enfim, segue o link do meu git onde comentei uma parte do código, aproveitei o do MrArduino e acrescentei outras. A solução que pensei foi transmitir a imagem pela internet para um pc processar.
https://github.com/nerdroid/OV7670-Project/blob/master/OV7670

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço