Contrôle de sonar, 2011/2012, TD3
Sommaire
Evaluation informatique et électronique
Gestion de projet / rédaction Wiki
Test fonctionnels
- Sous-système :
- Système :
Qualité de la réalisation
- Informatique :
- procédure de test :
- pages HTML et Javascript :
- scripts PHP ou programmes C :
- installation sur FoxBoard :
- Electronique :
- qualité de la réalisation :
- tests autonomes :
Bilan
Tous les points principaux ont un poids équivalent (sauf "système" qui est un bonus).
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.
Visualisation du système utilisé
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.
Schémas explicatifs de la partie électronique
Faisons tout d'abord un rappel sur le fonctionnement d'un sonar. Ce dernier, par le biais d'un émetteur, envoie des ultrasons dans l'espace. Quand ces ultrasons touchent une surface, ils rebondissent sur celle-ci et arrivent dans un récepteur. Le temps qu'auront mis ces ultrasons à revenir donnera la distance séparant le sonar d'un objet.
Sur le schéma, la partie émetteur (E), envoie un signal carré de 40kHz dans l'espace. Toutes les secondes, un nouveau signal est envoyé. Ce signal est prévu pour parcourir environ 2 mètres de distance. Ainsi, notre système est conçu pour détecter des objets à environ 1 mètre de distance (aller+retour=2m). La partie récepteur (R) recevra ce signal, légèrement modifié et bruité par le trajet. On calculera ensuite le temps de "voyage" de l'émetteur jusqu'au récepteur.
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 :