Essai de mise en fonction d'une caméra OV7670, en langage ASM
Prix d'achat avec port compris de la caméra OV7670 2,52 Euros, voici son datasheet
Voici les dimensions de la caméra OV7670
Pour la mise en fonction de cette caméra OV7670 je me suis servi d'un microcontrôleur Pic18F26K22, voici son datasheet
****************************************************************************************************************************************************************************************
L'alimentation de la caméra
L'alimentation de la caméra OV7670 et du Pic18F26K22 se fera en 3,3 volts, ce qui évite bien des problèmes, je vous le conseille.
Protocole de communication
Pour communiquer avec cette caméra OV7670 on utilise le I2C en mode 8 bits, mais pour faire fonctionner le I2C il faut envoyer une fréquence sur la broche XCLK, chez moi cette broche s'appelle MCLK
Pour générer cette fréquence et éviter un circuit supplémentaire on se servira du PWM de notre pic, qui sera réglé à 50% de modulation.
Le Pic18F26K22 a une fréquence d'horloge maximum de 64MHz et ne peut pas créer un PWM à plus de 8 MHz, alors que faire ....
La vitesse du I2C ne doit pas dépasser 400 KHz, d'après ce qui est marqué dans la datasheet, pour les tests je vous conseille très fortement de réglé le I2C à la vitesse de 100KHZ
L'adresse que j'ai trouvé avec mon programme de détection I2C et 0x42 pour le mode écriture, et 0x43 pour le mode lecture.
Voici un schéma pour vous illustrez comment est câblé ma caméra OV7670
Un peu d'explication et de technique
La caméra OV7670 prend en charge 4 formats de couleur : YCbCr, RGB565/RGB555, Bayer raw RGB, Processed raw
Coté résolution voici les 5 formats : VGA (640x480), QVGA (320x240), QQVGA (160x120), CIF (352x288), QCIF (176x144)
Le reste arrive .... soyer patient faut que je fasse le programme....
Signaux analysé sur la caméra OV7670
Voici ce que j'obtiens à l'oscilloscope numérique sur le balayage horizontal,
Visualisation d'une image vidéo sur PC
La visualisation d'une image vidéo se fera sur PC avec un programme que je vais écrire en RapidQ,
Dans ce programme les données de la caméra OV7670 seront reçu par USART par l’intermédiaire du module Ch340E
Module CH340E
Prix d'achat avec port compris du module Ch340E 1,50 €, voici son datasheet
Premier test avec Usart, qui est réglé à 115200 Bauds, soit 11520 octets par secondes
Le test consiste à contrôler le nombre d'octet reçus, par rapport à la demande, dans un temps de 1 seconde, de plus il faut éviter les erreurs de réception sinon l'image sera détérioré, le mode Asynchrone n'est pas parfait, mais c'est le plus pratique
Pour 1 seconde on reçois 11520 octets, c'est pas assez pour une image, et même si une image faisait 11520 octets par seconde, il faudrait multiplier
par au moins 15 images secondes pour une vidéo, on obtiendrais 11520 octets x 15 images secondes = 172800 octets,
Dernièrement j'ai fait un test avec l'usart à 1000000 Bauds, ça fonctionne bien, si on augmente la vitesse, ça ne suit plus, d’où ça peut venir ?
Plusieurs hypothèse
1) Code de mon programme trop lent
2) Module CH340E qui ne suis pas
3) L'ordinateur qui ne peut pas suivre
4) Microcontrôleur qui envoi mal les données, ou vitesse mal synchronisé(car il est à fond)
Régler à fonds le Pic peut être régler à 2000000 Bauds maximum... on ne peut pas aller plus vite, j'en ai terminer avec l'usart, je ferais quand même des tests d'image à base résolution, histoire de voir ce que ça donne.
Reste à voir avec l'USB que possède certain Pic
Voici ce que j'ai appris sur l'USB natif
La première version de la norme,USB 1.0, voit ses spécifications publiées en 1996.
En 1998 la version USB 1.1 lui apporte des corrections.
Deux vitesses de communication sont possibles dans ces normes : 1,5 Mbit/s (faible vitesse, ou Low Speed), et 12 Mbit/s (soit 1.5 Mo/s) (pleine vitesse ou Full Speed).
Il me reste à voir si l'usb du Pic peut tourner aussi rapidement que 1.5 Mo/s...


à vous deux