Tutoriel Arduino module camera

Les caméras ont toujours dominé l'industrie électronique, car elle a de nombreuses applications telles que le système de surveillance des visiteurs, le système de surveillance, le système de présence, etc. Les caméras que nous utilisons aujourd'hui sont intelligentes et présentent de nombreuses fonctionnalités qui n'étaient pas présentes dans les caméras précédentes. Alors que les appareils photo numériques d'aujourd'hui capturent non seulement des images, mais capturent également des descriptions de haut niveau de la scène et analysent ce qu'ils voient. Il est largement utilisé en robotique, en intelligence artificielle, en apprentissage automatique, etc. Les images capturées sont traitées à l'aide de l'intelligence artificielle et de l'apprentissage automatique, puis utilisées dans de nombreuses applications comme la détection de plaque d'immatriculation, la détection d'objets, la détection de mouvement, la reconnaissance faciale, etc.
Dans ce tutoriel, nous allons interfacer le module de caméra le plus utilisé OV7670 avec Arduino UNO. Le module de caméra OV7670 peut être interfacé avec Arduino Mega avec la même configuration de broches, le même code et les mêmes étapes. Le module de caméra est difficile à interfacer car il a un grand nombre de broches et un câblage brouillé à réaliser. De plus, le fil devient très important lors de l'utilisation de modules de caméra, car le choix du fil et la longueur du fil peuvent affecter considérablement la qualité de l'image et provoquer du bruit.
Nous avons déjà réalisé de nombreux projets sur les caméras avec différents types de microcontrôleurs et d'appareils IoT tels que:
Système de surveillance des visiteurs avec Raspberry Pi et caméra Pi
Système de sécurité domestique Raspberry Pi basé sur IOT avec alerte par e-mail
Caméra de surveillance Raspberry Pi avec capture de mouvement
La caméra OV7670 fonctionne sur 3,3V, il devient donc très important d'éviter Arduino qui donne une sortie 5V à leurs broches GPIO de sortie. L'OV7670 est une caméra FIFO. Mais dans ce tutoriel, l'image ou les cadres seront saisis sans FIFO. Ce tutoriel aura des étapes simples et une programmation simplifiée pour interfacer OV7670 avec Arduino UNO.
Composants requis
Arduino UNO
Module caméra OV7670
Résistances (10k, 4.7k)
Cavaliers
Logiciel requis:
Arduino IDE
Lecteur de port série (pour analyser l'image de sortie)
Choses à retenir sur le module de caméra OV7670
Le module de caméra OV7670 est un module de caméra FIFO disponible auprès de différents fabricants avec différentes configurations de broches. L'OV7670 fournit des images 8 bits plein écran et fenêtrées dans une large gamme de formats. La matrice d'images est capable de fonctionner jusqu'à 30 images par seconde (ips) en VGA. Le OV7670 comprend
Réseau de capteurs d'images (d'environ 656 x 488 pixels)
Générateur de synchronisation
Processeur de signal analogique
Convertisseurs A / N
Générateur de modèles de test
Processeur de signal numérique (DSP)

Image Scaler
Port vidéo numérique
Sortie de contrôle LED et flash stroboscopique
Le capteur d'image OV7670 est contrôlé à l'aide du bus de commande de caméra série (SCCB) qui est une interface I2C (SIOC, SIOD) avec une fréquence d'horloge maximale de 400 KHz.
La caméra est livrée avec des signaux de prise de contact tels que:
VSYNC: sortie de synchronisation verticale - faible pendant la trame
HREF: référence horizontale - élevée pendant les pixels actifs de la ligne
PCLK: Pixel Clock Output - Horloge de course libre. Les données sont valides sur front montant
En plus de cela, il a plusieurs autres signaux tels que
D0-D7: Sortie numérique composante vidéo YUV / RGB 8 bits
PWDN: Sélection du mode de mise hors tension - Mode normal et mode de mise hors tension
XCLK: entrée d'horloge système
Réinitialiser: Réinitialiser le signal
L'OV7670 est cadencé à partir d'un oscillateur à 24 MHz. Cela donne une sortie Pixel Clock (PCLK) de 24 MHz. Le FIFO fournit 3 Mbit / s de mémoire tampon de trame vidéo. Le générateur de motifs de test comprend un motif de barres de couleur à 8 barres, un motif de barre de couleur passant du gris au gris. Commençons maintenant à programmer l'Arduino UNO pour tester la caméra OV7670 et saisir des images à l'aide d'un lecteur de port série.
Schéma
Programmation Arduino UNO
La programmation commence par l'inclusion de la bibliothèque requise pour OV7670. Depuis OV7670 fonctionne sur l'interface I2C, il comprend la bibliothèque <util / twi.h>. Les bibliothèques utilisées dans ce projet sont des bibliothèques intégrées d'ArduinoIDE. Nous devons simplement inclure les bibliothèques pour faire le travail.
Après cela, les registres doivent être modifiés pour OV7670. Le programme est divisé en petites fonctions pour une meilleure compréhension.
La configuration () comprend toutes les configurations initiales requises pour la capture d'image uniquement. La première fonction isarduinoUnoInut () qui est utilisée pour initialiser l'arduino uno. Initialement, il désactive toutes les interruptions globales et définit les configurations d'interface de communication telles que l'horloge PWM, la sélection des broches d'interruption, la sélection du préfiltre, l'ajout de parité et les bits d'arrêt.
arduinoUnoInut ();
Après avoir configuré l'Arduino, la caméra doit être configurée. Pour initialiser la caméra, nous n'avons que les options pour changer les valeurs du registre. Les valeurs de registre doivent être modifiées de la valeur par défaut à la valeur personnalisée. Ajoutez également le délai requis en fonction de la fréquence du microcontrôleur que nous utilisons. Comme les microcontrôleurs lents ont moins de temps de traitement, ajoutant plus de retard entre les trames de capture.
void camInit (void) {
writeReg (0x12, 0x80);

_delay_ms (100);
wrSensorRegs8_8 (ov7670_default_regs);
writeReg (REG_COM10, 32); // PCLK ne bascule pas sur HBLANK.
}
L'appareil photo est configuré pour prendre une image QVGA, de sorte que la résolution doit être sélectionnée. La fonction configure le registre pour prendre une image QVGA.
setResolution ();
Dans ce didacticiel, les images sont prises en monochrome, de sorte que la valeur de registre est définie pour produire une image monochrome. La fonction définit les valeurs de registre à partir de la liste de registres qui est prédéfinie dans le programme.
setColor ();
La fonction ci-dessous est une fonction d'écriture dans le registre qui écrit la valeur hexadécimale à enregistrer. Si vous obtenez les images brouillées, essayez de changer le deuxième terme, c'est-à-dire 10 à 9/11/12. Mais la plupart du temps, cette valeur fonctionne bien, donc pas besoin de la changer.
writeReg (0x11, 10);
Cette fonction est utilisée pour obtenir la taille de résolution de l'image. Dans ce projet, nous prenons des photos au format 320 x 240 pixels.
captureImg (320, 240);
En dehors de cela, le code a également les configurations I2C divisées en plusieurs parties. Juste pour obtenir les données de la caméra, les configurations I2C ont la fonction Start, Read, Write, Set Address qui est importante lors de l'utilisation du protocole I2C.
Vous pouvez trouver le code complet avec une vidéo de démonstration à la fin de ce tutoriel. Téléchargez simplement le code et ouvrez le lecteur de port série et saisissez les cadres.
… … … …
Contrôleur de caméra Arduino
Le contrôleur de caméra Arduino est un moyen de contrôler les caméscopes Sony Handycam HD pour prendre des photos et exécuter des fonctions telles que l'enregistrement, la pause, la mise hors tension et la mise sous tension. Le contrôleur est une application en ligne de commande qui a été compilée et testée sur Windows, Linux et Mac. L'application contrôle un boîtier contenant un Arduino et plusieurs prises audio 3,5 mm. Ces prises audio sont connectées par un câble à la Sony Handycam et transportent le signal de protocole du contrôleur de caméra Sony LANC. Cet appareil peut gérer des longueurs de câble de plus de 180 pieds sans dégradation du signal. D'autres statistiques sur les fonctionnalités ou les limites de l'appareil sont disponibles dans l'annexe.
Comment l'utiliser
Un bref aperçu des utilisations les plus courantes de l'appareil sera discuté ici. Plusieurs autres instructions et notes spécifiques seront fournies en annexe.
Branchez le câble USB dans la boîte Arduino et l'autre extrémité dans l'ordinateur. Si vous utilisez plusieurs caméras, il est recommandé de brancher l'alimentation externe. Branchez les câbles de 3,5 mm dans le haut et convertissez les autres extrémités en une fiche de 2,5 mm et connectées aux Sony Handycams. Maintenant que le câblage est configuré, assurez-vous que les caméras sont en position On pour permettre un contrôle approprié.
Allumez l'ordinateur connecté à la boîte Arduino et ouvrez une ligne de commande dans laquelle l'exécutable ArduinoCameraController ou CameraController est accessible. Exécutez l'application à l'aide des arguments de ligne de commande «–d find». Cela renverra le port COM (sous Windows) ou le périphérique tty (sous Unix) auquel l'Arduino est actuellement connecté. Réexécutez maintenant l'application avec «–d ____» où ____ représente la valeur trouvée à l'étape 6; pour plus de fonctionnalités, nous pouvons ajouter plus de commandes ou de commutateurs. Les étapes 6 et 7 sont facultatives mais réduiront considérablement le délai de la première commande dans chaque appel d'application.