Contrôle de sonar, 2011/2012, TD3
Sommaire
Introduction
Projet SYSTEMES COMMUNICANTS IMA3 : Contrôle de sonar
Charly MONTEIRO - Pierre-Jean PETITPREZ - Cédric VANDERMEERSCH
Adresse IP de la FoxBoard : 172.26.79.8
Avancement
Séance n°1, 20/04/2012
L'objectif de la première séance de projet communicant était avant tout axée sur la prise en main du sujet. Nous nous sommes particulièrement intéréssés à la partie "Programmation" du Servo-Moteur, c'est-à-dire le contrôle de direction. Un programme en C nous a permis de rapidement prendre contrôle du moteur. Cependant nous avons perdu énormément de temps pour essayer de contrôler le moteur à partir d'une application web. Finalement à la fin de la séance :
- Toutes les bibliothèques nécessaires sont installées
- Le moteur est contrôlable à partir d'un programme C lancé dans un terminal
- Le squelette d'une page web est monté avec un champ prévu pour entrer l'angle de rotation et quelques tests sont effectués sur des fonctions javascript
- La partie électronique n'est qu'entrevue, il faudra absolument s'y coller la fois prochaine.
Séance n°2, 11/05/2012
Objectifs :
- Informatique :
- Savoir lancer le script CGI depuis la page web
- Ecrire et savoir utiliser le démon de la liaison série et le programme de récupération de distance
- Avoir une page web fonctionnelle
- Electronique :
- Prendre en main le sujet, c'est à dire :
- Sous Altium :
- Réaliser le montage FPGA permettant de réaliser les fonctions :
- Oscillateur à 40kHz
- Transmettre 10 périodes de ce signal
- Reception du signal émis
- Compteur mesurant le temps entre l'émission et la réception
- Transmission d'un octet proportionnel à la distance
- Sur Maquette :
- Réaliser les fonctions suivantes :
- Amplifier le signal généré précédemment pour qu'il puisse être émis par l'émetteur.
- Remettre en forme le signal reçu pour qu'il puisse être exploité par un circuit numérique.
Problèmes rencontrés :
- Informatique :
- Les scripts CGI sont refusés par la page web (erreur 500)
- Ne pas oublier de lancer le démon de la liaison série...
- Electronique:
- Choix des horloges:
- L'horloge qui permettra le calcul de la durée décidera aussi de la plage de distance que l'on pourra mesurer. On se limitra à une distance de 1m qui correspondra à la valeur 255 le son voyageant à environ 340m/s. 1m de distance correspond à 2m parcourus par le son soit 5.88ms. On ne veut pas plus de 255 periodes dans cet intervalle, soit une periode d'une durée minimale de 5.88m/255 = 23µs. On arrondira à 25µs soit une fréquence de 40kHz.
- Mise en forme reception:
- Etant donné les niveaux de tensions très faibles du capteur on devra mettre en cascade un montage amplificateur puis un comparateur à Hysteresis (pour éviter une erreur du au bruit)
- Limite de réalisation : en développant un systeme tel quel, il n'y a pas moyen de vérifier que le signal revenant est bien à 40kHz donc aucune certitude que c'est bien le signal qui a été envoyé. (on a éventuellement pensé à un passe bande... à méditer)
- Choix des horloges:
Résultats :
- Informatique :
- L'utilisation du script CGI dans le dossier /usr/lib/cgi-bin/ est résolu (problème de droits d'exécutions -> chmod u+s sur le script)
- Tous les programmes C indispensables (scripts CGI pour la commande du moteur et la réception de la distance et démon de la liaison série) sont écrits et fonctionnels
- La page web permet de contrôler le moteur et affiche la distance de l'objet capté devant le sonar
- Découverte de Firebug, très utile et qui a beaucoup fonctionné...
- Connaissances accrues en web 2.0, pour des étudiants qui n'y connaissaient absolument rien au début (merci à Monsieur Redon pour ses explications et ses remarques)
- Electronique :
- Sujet bien pris en main, premières difficultés rencontrées, schéma de montage réalisé sour Altium (avec quelques erreurs sur les valeurs à corriger).
Séance n°3, 21/05/2012
Objectifs :
- Corriger quelques erreurs de code et transférer les fichiers sur la FoxBoard, compiler sur la FoxBoard, etc...
- Coder une visualisation graphique de la distance mesurée par le sonar (utilisation de Canvas)
Problèmes rencontrés :
- Impossible de compiler la librairie phidget sur la FoxBoard. Causes :
- impossible d'installer make avec apt-get. Résolu en faisant apt-get update puis apt-get install make
- puis mauvaises sources, perte de temps à compiler une version trop ancienne puis téléchargement de la bonne version
- De ce fait, impossibilité de compiler le script de gestion du moteur
Résultats :
- FoxBoard paramétrée, toutes les librairies utiles sont installées sauf lphidget21
- Démon série et cgi de réception compilés
- Page Web opérationnelle sur la FoxBoard (sans visualisation graphique)
Séance supplémentaire n°1, 22/05/2012
Objectifs :
- Compiler la librairie phidget
- Commencer une visualisation graphique sur la page web de la distance de l'objet capté
Problèmes rencontrés :
- Clock skew detected durant la compilation de la librairie phidget. Résolution : remettre tous les fichiers à la date actuelle
- Le script de gestion du moteur fonctionne 1 fois et puis... c'est tout. Alors que le même code fonctionne sur le poste tutur08. Cause : il faut fermer correctement la connexion avec le servo. Sur le poste tutur08, une autre version de la librairie lphidget21 autorisait peut-être cette lacune en ajoutant une fermeture de la connexion.
- Dans l'utilisation de Canvas : pas moyen d'afficher une image en même temps que faire tourner le script de réception série. Cause : erreur dans le code... (onload sur le script en même temps qu'onload de la partie qui appelle l'objet Canvas -> conflit)
Résultats :
- Toutes les erreurs décrites ci-dessus sont réparées
- Pour l'instant seul un carré s'affiche mais il suffit d'un passage en paramètre de la valeur de la distance reçue pour obtenir une barre proportionnelle à la distance de l'objet
Séance supplémentaire n°2, 24/05/2012
Objectifs :
- Terminer le sous-système, tant en informatique qu'en électronique
Résultats :
- La partie informatique du sous système est terminée et répond au sujet. Testé sur la maquette Arduino
- La distance captée s'affiche sous forme d'une barre sur la page web. On a testé l'affichage en 2 dimensions (en tenant compte de l'angle fourni au moteur) mais on n'arrive pas à récupérer correctement la valeur de l'angle et à l'utiliser, il faudrait modifier les scripts cgi pour que les 2 informations (angle et distance) soient traitées par le même script.
- En électronique :