Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Modérateur : mazertoc
Caméra OV7670
Bonjour tout le forum,
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
Cette fréquence d'après la datasheet et d'un minimum de 10MHz à un maximum de 48MHz, le plupart du temps on l'utilise en 24MHz
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 .... et ben, c'est notre caméra OV7670 qui va nous aider, car elle possède une PLL qu'il faut bien sur activer, de plus elle est réglable sur quatre niveaux 0, 4, 8, 16 (essai à faire avec cette PLL)
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, ça voudrai dire qu'il faut tourner à 1728000 Bauds, j'ai bien peur qu'il faut se contenter d'une résolution très base au niveau de l'image ,
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).
15 fois plus rapide, le seule problème, comment paramétrer l'USB avec mon programme et le Pic en version ASM pour la partie Pic ? ..... j'ai bien dit coté Pic en ASM pas sur l'ordinateur, Quoique
Il me reste à voir si l'usb du Pic peut tourner aussi rapidement que 1.5 Mo/s... j'ai comme un gros doute dessus...
A+
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
Cette fréquence d'après la datasheet et d'un minimum de 10MHz à un maximum de 48MHz, le plupart du temps on l'utilise en 24MHz
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 .... et ben, c'est notre caméra OV7670 qui va nous aider, car elle possède une PLL qu'il faut bien sur activer, de plus elle est réglable sur quatre niveaux 0, 4, 8, 16 (essai à faire avec cette PLL)
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, ça voudrai dire qu'il faut tourner à 1728000 Bauds, j'ai bien peur qu'il faut se contenter d'une résolution très base au niveau de l'image ,
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).
15 fois plus rapide, le seule problème, comment paramétrer l'USB avec mon programme et le Pic en version ASM pour la partie Pic ? ..... j'ai bien dit coté Pic en ASM pas sur l'ordinateur, Quoique
Il me reste à voir si l'usb du Pic peut tourner aussi rapidement que 1.5 Mo/s... j'ai comme un gros doute dessus...
A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par Temps-x le dim. 20 nov. 2022 13:14, modifié 58 fois.
Caméra OV7670
Bonsoir Temps-x,
Bon courage pour ce nouveau projet, il y aura beaucoup de travail pour le paramétrage de la caméra : taille d'image, format, vitesse d'échantillonnage. J'avais arrêté les essais après avoir obtenu une première image.
Tu en es où pour l'I2C, il faut les 2 résistances de tirage au 3,3V, et câbler les 3 broches Mclk, Reset et PowerDown.Au choix vitesse 100kHz ou 400kHz. A l"oscillo cela donne quoi ?
Le 18F27K42 possède 2 canaux DMA, on pourrait peut-être les utiliser pour automatiser les transferts entre ram et registre SFR, ou entre 2 registres SFR.
Bon courage pour ce nouveau projet, il y aura beaucoup de travail pour le paramétrage de la caméra : taille d'image, format, vitesse d'échantillonnage. J'avais arrêté les essais après avoir obtenu une première image.
Tu en es où pour l'I2C, il faut les 2 résistances de tirage au 3,3V, et câbler les 3 broches Mclk, Reset et PowerDown.Au choix vitesse 100kHz ou 400kHz. A l"oscillo cela donne quoi ?
Le 18F27K42 possède 2 canaux DMA, on pourrait peut-être les utiliser pour automatiser les transferts entre ram et registre SFR, ou entre 2 registres SFR.
Caméra OV7670
Bonjour satinas, et tout le forum,
Merci pour tes réponses,
Une fois que j'arriverais à communiquer avec cette caméra OV76770 je pourrais la paramétrer avec eursart via un petit programme PC,
écrit en RapidQ
Ça me permettras de voir tout de suite ce que j’obtiens, et modifier si nécessaire, ce programme sera disponible sur le forum de Fantas-Pic, enfin si j'arrive à communiquer...
Une fois que les paramètres seront ok, enregistrement tout en eeprom(1024 octets)
Au point zéro...
J'ai fait un schéma ci-dessus pour que tu puisses voir comment est câblé la caméra OV7670
Mon oscilloscope et en panne la résistance de haute tension à encore claqué, il faut que je la change, de toute façon ça ne servira pas à grand chose, car l'oscilloscope n'aura pas le temps de voir le signal, le mieux c'est d'utiliser mon bon vieux analyseur logique.
Je vais paramétré I2C à 100KHz dans le registre SSPADD
Pour commencer je vais faire simple avec un Pic18F26K22, car je le maitrise plus facilement, mais je reviendrais sur ta méthode avec le PIC18F27K42 par la suite, histoire de dire à paulfjujo qu'on a réussi à faire fonctionner le I2C avec ce pic en ASM
A voir si la caméra fonctionne, car elle à était livré sans cache obturateur, et de plus avoir une broche qui porte le non de MCLK au lieu de XCLK, j'ai des gros doute sur une contre façon... je vais peut être en commandé une autre, mais cette fois si avec un obturateur, de toute façon je continu pour l'instant avec celle là.
En ce qui concerne le I2C , j'ai fais un petit programme pour la détection du I2C en 8 bits qui est fonctionnelle, car il me trouve toujours les adresses, je l'utilise très fréquemment, et celui-ci ne trouve rien, j'en conclus que I2C ne fonctionne pas.
A+
Merci pour tes réponses,
satinas a écrit :Source du message il y aura beaucoup de travail pour le paramétrage de la caméra
Une fois que j'arriverais à communiquer avec cette caméra OV76770 je pourrais la paramétrer avec eursart via un petit programme PC,
écrit en RapidQ
Ça me permettras de voir tout de suite ce que j’obtiens, et modifier si nécessaire, ce programme sera disponible sur le forum de Fantas-Pic, enfin si j'arrive à communiquer...
Une fois que les paramètres seront ok, enregistrement tout en eeprom(1024 octets)
satinas a écrit :Source du message Tu en es où pour l'I2C
Au point zéro...
satinas a écrit :Source du message il faut les 2 résistances de tirage au 3,3V
J'ai fait un schéma ci-dessus pour que tu puisses voir comment est câblé la caméra OV7670
satinas a écrit :Source du message Au choix vitesse 100kHz ou 400kHz. A l"oscillo cela donne quoi ?
Mon oscilloscope et en panne la résistance de haute tension à encore claqué, il faut que je la change, de toute façon ça ne servira pas à grand chose, car l'oscilloscope n'aura pas le temps de voir le signal, le mieux c'est d'utiliser mon bon vieux analyseur logique.
Je vais paramétré I2C à 100KHz dans le registre SSPADD
satinas a écrit :Source du message Le 18F27K42 possède 2 canaux DMA, on pourrait peut-être les utiliser pour automatiser les transferts entre ram et registre SFR, ou entre 2 registres SFR
Pour commencer je vais faire simple avec un Pic18F26K22, car je le maitrise plus facilement, mais je reviendrais sur ta méthode avec le PIC18F27K42 par la suite, histoire de dire à paulfjujo qu'on a réussi à faire fonctionner le I2C avec ce pic en ASM
A voir si la caméra fonctionne, car elle à était livré sans cache obturateur, et de plus avoir une broche qui porte le non de MCLK au lieu de XCLK, j'ai des gros doute sur une contre façon... je vais peut être en commandé une autre, mais cette fois si avec un obturateur, de toute façon je continu pour l'instant avec celle là.
En ce qui concerne le I2C , j'ai fais un petit programme pour la détection du I2C en 8 bits qui est fonctionnelle, car il me trouve toujours les adresses, je l'utilise très fréquemment, et celui-ci ne trouve rien, j'en conclus que I2C ne fonctionne pas.
A+
Caméra OV7670
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
Bonjour TempsX, Satinas et à tous
sur la datasheet on ne voit rien sur I2C ?
par contre :
.. qui ressemble plus à du SPI
il faut peut etre faire un control Bit Bang personalisé.
ou la datasheet est incomplete ?
sur la datasheet on ne voit rien sur I2C ?
par contre :
... controleed trough the serial Camera Control Bus ( SCCB) interface ..
.. qui ressemble plus à du SPI
il faut peut etre faire un control Bit Bang personalisé.
ou la datasheet est incomplete ?
Caméra OV7670
Bonjour à tous,
C'est de l'I2C standard. Tu fais une boucle Start/0x42/Stop/100ms et tu regardes à l'oscillo ce que cela donne, le ACK de la caméra pourrait arriver avec un peu de retard.
Le fait de tester en boucle la centaine d'adresses n'est pas garanti, un device peut bloquer le bus, cela m'est arrivé et seul l'oscillo peut le signaler.
Et si tu n'as pas d'oscillo, j'en ai en rab, je peux t'en envoyer un, mais attention c'est du lourd (Tektro), faut se planquer quand il retombe.
C'est de l'I2C standard. Tu fais une boucle Start/0x42/Stop/100ms et tu regardes à l'oscillo ce que cela donne, le ACK de la caméra pourrait arriver avec un peu de retard.
Le fait de tester en boucle la centaine d'adresses n'est pas garanti, un device peut bloquer le bus, cela m'est arrivé et seul l'oscillo peut le signaler.
Et si tu n'as pas d'oscillo, j'en ai en rab, je peux t'en envoyer un, mais attention c'est du lourd (Tektro), faut se planquer quand il retombe.
Caméra OV7670
Caméra OV7670
Bonjour paulfjujo, satinas, et tout le forum,
Adresse trouvé avec mon petit programme de détection de I2C, il y avait 2 erreurs, en premier, les résistances de 4700 ohms ne sont pas nécessaire, comme le précis satinas, qu'on on alimente en 3,3 volts notre Pic,
En deuxième, il est impératif de tourner à une vitesse de 100 KHz à 400 KHz en I2C, pour les essais je vous conseille fortement de prendre la plus petite vitesse 100 KHz
L'adresse trouvé et 01000010 soit 0x42 comme le précis satinas.
Exacte paulfjujo, et c'est vraiment mal documenté, mais en page 6 en trouve ceci, 400 kHz maxi
Je tourne à fond avec le PWM qui est réglé à 8 Mhz, sans PWM il n' y pas de I2C, j'ai fait l'essai ...
Avec tous les fils qu'il y a j'ai bien envi de faire un PCB, je vais remettre ses informations en première page
Maintenant il faut élaborer un plan pour configurer la caméra, les idées sont les bien venu ....
à vous deux
A+
Adresse trouvé avec mon petit programme de détection de I2C, il y avait 2 erreurs, en premier, les résistances de 4700 ohms ne sont pas nécessaire, comme le précis satinas, qu'on on alimente en 3,3 volts notre Pic,
En deuxième, il est impératif de tourner à une vitesse de 100 KHz à 400 KHz en I2C, pour les essais je vous conseille fortement de prendre la plus petite vitesse 100 KHz
L'adresse trouvé et 01000010 soit 0x42 comme le précis satinas.
paulfjujo a écrit :Source du message sur la datasheet on ne voit rien sur I2C ?
Exacte paulfjujo, et c'est vraiment mal documenté, mais en page 6 en trouve ceci, 400 kHz maxi
Je tourne à fond avec le PWM qui est réglé à 8 Mhz, sans PWM il n' y pas de I2C, j'ai fait l'essai ...
Avec tous les fils qu'il y a j'ai bien envi de faire un PCB, je vais remettre ses informations en première page
Maintenant il faut élaborer un plan pour configurer la caméra, les idées sont les bien venu ....
à vous deux
A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Caméra OV7670
Bonsoir satinas,
Merci de cette proposition, mais je préfère une fois de plus réparer le mien, je sais d’où vient la panne, je qui m'en bête c'est que ça me fait perdre un Week-end de programmation, à moins d'utiliser mon petit oscilloscope Oled 128x64, là... je risque rien si il vient à tomber
A+
satinas a écrit :Source du message Et si tu n'as pas d'oscillo, j'en ai en rab, je peux t'en envoyer un, mais attention c'est du lourd (Tektro), faut se planquer quand il retombe.
Merci de cette proposition, mais je préfère une fois de plus réparer le mien, je sais d’où vient la panne, je qui m'en bête c'est que ça me fait perdre un Week-end de programmation, à moins d'utiliser mon petit oscilloscope Oled 128x64, là... je risque rien si il vient à tomber
A+
Retourner vers « Langage ASM »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 20 invités