Contrôle de sonar, 2011/2012, TD3

De Wiki de Projets IMA
Révision datée du 25 mai 2012 à 09:32 par Cvanderm (discussion | contributions) (Schémas explicatifs de la partie électronique)

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é

Servo-Moteur
Servo-Moteur et système Emetteur/Récepteur

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

Schéma du signal


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)


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)
Envoi d'un signal carré d'une seconde
Simulation de signal avec LEDs

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 :