Vision déportée
Sommaire
Introduction
Le but de ce projet est de développer une tourelle équipée d'un caméra suivant le regard d'une personne.Le projet est constitué principalement de 3 parties:
- Communication à l'aide des modules Xbee
- Acquisition des données capteur (accéléromètre)
- Commande d'un ou plusieurs moteurs pour les mouvements du caméra.
Ce projet est en collaboration avec le département Conception Mécanique représenté par M. Rodolphe Astori et M. Aurelien Benechet.
- Ensuite une 4éme partie d'acquisition vidéo et transfert de vidéo pour afficher chez l'utilisateur.
Préparation du projet
Matériel nécessaire
- 2 Arduino Uno
- 2 Modules Xbee : 4214A-XBEE série S1
- 1 Accéléromètre : ADLX345
- 3 Servomoteurs
- 1 Caméra
- 1 Une tourelle mécanique (Fourni par le département CM)
- 1 Casque (Fourni par le département CM)
Matériel de tests
- 1 adapateur série - usb pour softwareserial.
- 3 Mini servomoteurs de Kit arduino.
- 1 tourelle de test
Avancement du projet
Lundi 4 Février 2013:
- Contact des encadrants du projet.
- Présentation du projet par M. Alexandre Boé.
- Discussion autour des différentes parties du projet.
Jeudi 7 Février 2013:
Durant cette séance, nous avons effectué la configuration de la communication sans fil à travers le protocole de communication ZigBee. Pour garantir une communication entre deux modules xBee 4214A-XBEE on a défini :
Un identifiant réseau: 3005 (commande ATID)
Une adresse pour chaque module:(adresses 10 et 11)
1er Module ATMY10 - ATDL11
2éme Module ATMY11 - ATDL10
Enregistrement en Mémoire: ATWR
La vérification et les tests se font à l'aide de deux ordinateurs sous terminal série qui communiquent à une même vitesse (9600 BAUD).(Partie achevée)
Lundi 11 Février 2013:
- Utilisation d'un accéléromètre et récupération des données sur le terminal série d'un arduino suivant 3 axes.(Tests techniques)
- Communication des données via le module Xbee entre deux Arduino.(Test techniques)
Problème de vérification sur terminal série et envoi des données en même temps => recours à une connexion série supplémentaire sur les broches d'arduino.
- Réunion de spécification et avancement de projet avec les enseignants CM.
Répartition de travail pour la prochaine séance sur 2 parties:
- Communication et tests connexion série (Nicolas)
- Commande servomoteur (Adel)
Jeudi 14 Février 2013:
- Élaboration et tests de la commande d'un mini servomoteur en utilisant un Arduino et un potentiomètre fonctionnant sur 180°.(Partie achevée et fonctionnelle)
- Communication sur une liaison série parallèle.(Partie non achevée) => emprunt d'un module Xbee et une liaison série pour travailler pendant les vacances.
Vacances:
Il est à noter que pour pouvoir exploiter un port série logiciel à l'aide la librairie SoftwareSerial (pour le débuggage par exemple), il faut utiliser un MAX232 (Niveaux TTL et RS-232 différents).
- La configuration automatique du Xbee par l'Arduino est opérationnel.
- Montage:
1 Condensateur 100nF entre le pin 1 et 3 du MAX232
1 Condensateur 100nF entre le pin 4 et 5 du MAX232
1 Condensateur 100nF entre le pin 2 du MAX232 et VCC
1 Condensateur 100nF entre le pin 6 du MAX232 et GND
Le pin 16 du MAX232 est relié au VCC
Le pin 15 du MAX232 est relié au GND et à la broche GND du RS-232 (fil noir)
Le pin 14 du MAX232 est relié à la broche TX du RS-232 (fil rouge)
Le pin 13 du MAX232 est relié à la broche RX du RS-232 (fil jaune)
Le pin 12 du MAX232 est relié au pin 10 de l'Arduino
Le pin 11 du MAX232 est relié au pin 11 de l'Arduino
Lundi 25 Février 2013
- Test du code développé en vacances en utilisation l'Arduino de l'émission équipé d'un module Xbee.
Mercredi 27 Févier 2013
- Développement de la fonctionnalité de l'émission par récupération des valeurs de l'accéléromètre et transmission avec Xbee.
- Test unitaire sur Arduino de programme à l'émission.
- Suivi d'avancement de projet et discussion sur les solutions à proposer pour évoluer le système.
Jeudi 28 Février 2013
- Développement sur Arduino d'une fonction permettant de récupérer à partir du module xbee les valeurs de l'accéléromètre selon les trois axes (x,y,z) à travers une lecture sur le terminal série de l'Arduino.
- Vérification des valeurs obtenu à travers l'utilisation de softwareSerial en faisant une écriture sur ce terminal. ==> Partie Fonctionnelle
Lundi 04 Mars 2013
- Phase d'intégration entre la partie commande de moteur et la partie récupération des valeurs de l'accéléromètre reçu par Xbee.
- Test d'intégration en utilisant les valeurs d'un seul axe x.
Partie non achevée : Test en cours et identification d'une réponse du moteur non correcte.
Mercredi 06 Mars 2013
Résultat des tests d'intégration:
- Observation d'une oscillation dans le mouvement de servomoteur.
- Détection d'une incompatibilité entre la libraire softwareserial.h et servo.h.
- Problème de lecture sur terminal série à cause de l'absence de Serial.available().
Jeudi 07 Mars 2013
- Mise en œuvre des corrections nécessaires pour modifier la réponse de moteur et la stabiliser.
- Étalonnage des valeurs de moteur entre 0 et 180 en fonction des valeurs de x reçus.
- Début de l'intégration de 3 servomoteurs à la fois.
- Récupération d'une tourelle de test chez M. Aurelien Benechet.
Lundi 11 Mars 2013
- Axes X et Y fonctionnels, cependant au bout d'un certain (ou d'un certain nombre de mesure ?) les servos s’arrêtent de fonctionner...
- Prochaine séance: régler la position initiale.
Mercredi 13 Mars 2013
- Le problème des servomoteurs est réglé.
- Les mesures selon les 3 axes:
L'axe x : axe longitudinal ou axe de roulis --> Fonctionnel
L'axe y : axe transversal ou axe de tangage --> Fonctionnel
L'axe z : axe de lacet --> Non Fonctionnel
Lundi 18 Mars 2013
- Poursuite des tests pour régler les résultats incohérents sur l'axe z.
Mercredi 20 Mars 2013
- Nos propres tests et une recherche bibliographique nous permet d'affirmer que on ne peut détecter un mouvement de lacet à travers un accéléromètre seulement.
Jeudi 21 Mars 2013
- Solution: On a fait un changement de matériel pour remplacer l’accéléromètre par un nouveau composant intégrant:
- L’accéléromètre ADXL345 (déjà utilisé)
- Gyroscope ITG-3200
--> Modification de la technologie de communication de SPI vers I2C.
- Début de la partie acquisition à partir d'une caméra (C3088).
Lundi 25 Mars 2013
- Configuration en I2C de nouveau composant (Accéléromètre + Gyroscope)
- Lecture de la documentation du module C3088 (avec la caméra ov6620).
Mercredi 27 Mars 2013
- Développement du programme I2C permettant de communiquer avec la caméra en I2C.
Mercredi 3 Avril 2013
- Tests de la communication I2C avec la caméra --> Fonctionnel
- Début de la configuration de la caméra pour l'adapter à un fonctionnement sous microcontrôleur ATmega.
Jeudi 4 Avril 2013
- Configuration de la caméra:
- Format QCIF (176*144)
- YCrCb mode
- Réduction de nombre des images par seconde (fps).
- Début de l'acquisition des images à travers le terminal série de l'Arduino (fonctionnement à 115200 bauds).
--> Résultats non fonctionnels pour cette partie.
Lundi 8 avril 2013
- Pour travailler plus rapidement, nous avons effectué quelques optimisations de notre programme:
- Utilisation des ports de l'ATmega 2560 pour lire simultanément les 8 broches Y.
--> Possibilité d'utiliser un RAM externe pour stocker les données avant de l'envoyer via port série.
Vacances
- Partie Tracking : Récupération des trois angles nécessaire pour commander les servomoteurs à partir du gyromètre et de l'accéléromètre en utilisant une librairie existante. Testé sans Xbee.
Lundi 29 avril 2013
- Partie Tracking :Ajout de la communication par Xbee entre l'Arduino qui récupère les angles et celui qui commande les servomoteurs.
- Partie caméra : Intégration d'une mémoire SRAM 23K256 pour la sauvegarde des données.
Jeudi 2 Mai 2013
- Assemblage du dispositif de prototypage pour la vidéo.