Utilisation d'une caméra avec un microcontrôleur
From Eric
Contents |
Les différentes caméras
On peut distinguer (au moins) deux catégories de caméras en fonction du type de signal de sortie :
- Les caméras à sortie vidéo analogique (PAL, SECAM, etc.),
- Les caméras à sortie numérique non USB
- Les caméras à sortie USB.
Il existe bien sûr d'autres critères de classification tel le type de capteur (CCD, CMOS, etc.), par exemple.
Caméra à sortie vidéo
Il s'agit de caméras dont la sortie est un signal vidéo composite (PAL, NTSC, SECAM) que l'on peut directement connecter à un écran, un magnétoscope ou tout autre équipement disposant de ce type d'entrée. Ce sont les caméras les moins onéreuses puisqu'on en trouve à moins de 10€ sur ebay. Voici, par exemple, celle que j'utilise :
(Photo à insérer)
Le signal vidéo en sortie de ces caméras a la forme suivante :
(A compléter.)
La mise en oeuvre d'une telle caméra avec un microcontrôleur nécessite :
- l'extraction des signaux de début de ligne, début d'image ;
- une conversion analogique numérique suffisamment rapide (elle déterminera la résolution)
- un espace mémorie suffisamment grand pour stocker une image.
L'extraction des signaux de synchronisation peut se faire facilement grace au circuit [LM1881]qui fournit, à partir d'un signal vidéo, les signaux de synchronisation horizontal, vertical et de parité de ligne (entrelacement).
Ces signaux peuvent alors être utilisés par le microcontrôleur pour démarrer une séquence d'échantillonnage. La limite du procédé est évidemment liée à la vitesse du convertisseur analogique / numérique utilisé.
Caméra à sortie numérique non USB
Il s'agit de caméra dont la sortie est une image codée sous forme numérique. On trouve de telles caméras pour une dizaine d'euros. J'utilise pour ma part la Caméra OV7670 d'Omnivision (VGA, 640x480 pixels)
Caméra à sortie numérique USB
Il s'agit de ce que l'on a coutume d'appeler "WebCam". Il s'agit en vérité d'une caméra à sortie numérique CCD ou CMOS (surtout) à laquelle est associé un composant d'interface USB.
Expérimentations
Connexion d'une caméra analogique à un dsPIC
Le principe général est le suivant :
- L'extraction des signaux de synchronisation est réalisé par le composant LM1881.
- Les signaux de synchronisation sont délivrés au microcontrôleur qui les utilise pour démarrer une séquence de conversions analogique vers numérique
- Le délai minimum entre deux échantillonnages détermine la résolution de la caméra. Dans le cas où ce délai est trop important, on peut jouer sur le décalage initial entre l'occurrence de l'événement "début de ligne" et le premier échantillon pour améliorer la résolution spatiale. Ceci se fait naturellement aux dépens de la résolution temporelle puisqu'il faudra échantillonner plusieurs fois une même ligne n pour obtenir une résolution suffisante sur cette ligne.
Le montage en cours va utiliser un dsPIC, histoire d'essayer ce micro-contrôleur (qui dispose en outre d'un ADC rapide).
Connexion d'une caméra numérique à un Cortex M3
La caméra utilisée est un modèle OV7670 d'Omnivision. La FIFO est le modèle AL422B d'Avermedia qui intègre gentillement de la DRAM avec sa logique de rafraîchissement. (J'aurais probablement pu utiliser une mémoire plus classique, type DRAM voire SDRAM, mais c'est plus lourd. A voir... ). Le détail du montage est donné dans la rubrique Caméra OV7670.
Connexion d'une WebCam à un Cortex M3
En cours d'investigation : ceci requiert la présence d'un host USB, ce qui nécessite une prise en compte matérielle.
A compléter