Solaire2012-1

De Wiki de bureau d'études PeiP
Révision datée du 16 mai 2013 à 09:01 par Egeiger (discussion | contributions) (Les difficultés rencontrées)

Première étape: Construire le robot

La première version du robot

La première étape est la construction du robot. Cette première étape n'est pas la plus simple à réaliser, car il faut en effet poser sur un robot assez petit deux panneaux solaires relativement grands. Un premier robot fut donc construit en suivant la notice de montage fournie dans la boite de LégoMindstorm. Mais la configuration de ce premier robot faisait qu'il était très difficile d'accéder au contrôleur à cause de la position des panneaux solaires. De plus, le support des panneaux solaires était fragile, la solution n'était pas satisfaisante.

First
Sur cette première version du robot, l'accès au contrôleur est difficile, et le robot fragile

La version finale

Le premier robot fut entièrement démonté, et un deuxième robot fut alors construit. Un des deux panneaux solaires fut monté sur un servomoteur LégoMindstorm. L'idée est que le panneau s'incline en fonction de l'incidence des rayons lumineux pour un rendement optimal. Le panneau se retrouve alors en hauteur, ce qui permet aussi d’accéder plus facilement au contrôleur. Un emplacement fut également prévu pour la FoxBoard et l'Arduino. Le deuxième panneau solaire a quand à lui été installé sur l'emplacement prévu pour la FoxBoard-Arduino. Des roues de petite voiture ont été installées à l'arrière afin de renforcer cet emplacement, les legos n'étant pas assez résistants pour supporter la masse d'un panneau solaire, d'un Arduino et d'une FoxBoard. Enfin, un sonar à ultrasons à été installé à l'avant afin de pouvoir éviter des obstacles.

Deuxième étape: programmer le robot

a) Le robot se déplace en autonomie

Le premier point imposé par le cahier des charges est que le robot doit pouvoir se déplacer à volonté dans une pièce, de manière autonome, tout en évitant les obstacles. Ce premier point fut programmé en "LegoMindstorm", car il est très facile d'utilisation. Sur la vidéo suivante, on voit que le robot peut en effet se déplacer de manière autonome (lien pour le téléchargement de la vidéo):

Fichier:Autonomie.mp4


le robot se déplace en autonomie dans une pièce tout en évitant les obstacles


b) Le robot mesure l'ensoleillement maximal

Pendant que que robot se déplace en autonomie dans la pièce, il va mesurer l'ensoleillement maximal à l'aide d'une photorésistance connectée à une plateforme Arduino. Plus la luminosité sera élevée, plus la valeur renvoyée par l'Arduino sera élevée; inversement, plus la luminosité est faible, plus la valeur renvoyée par l'Arduino sera faible. Voici le montage électronique qui permet d'obtenir la valeur de luminosité:

Montage pour Arduino


Ce montage ne fera que mesurer l'ensoleillement. Contrairement à la première version du robot, la valeur maximale ne sera pas enregistrée dans l'Arduino, mais envoyée au contrôleur NXC via Bluetooth. C'est ce dernier qui fera la comparaison entre toutes les valeurs enregistrée et gardera en mémoire la plus haute. Tout cela est détaillé dans la suite.

c) Récupérer les valeurs d'ensoleillement.

Une fois le programme chargé sur l'Arduino et ce dernier branché sur la Foxboard, il faut pouvoir récupérer la valeur d'ensoleillement mesurée par la photorésistance. Comment ? A l'aide d'un programme rédigé en langage C. Ce programme va récupérer la valeur lue sur la prise USB. Cette valeur sera alors envoyée par Bluetooth au contrôleur NXC. Ce sera lui qui va comparer et garder en mémoire la valeur maximale d'ensoleillement. Ce programme est disponible ci-dessous.

Fichier:Progfinal.c

Une fois la valeur d'ensoleillement envoyée, il faut pouvoir la comparer avec la précédente valeur. Un premier algorithme de comparaison a été créé, en utilisant le langage par bloc de LégoMindstorm. Les variables créées étaient ainsi de type 'Numérique'. Le problème était que, malgré avoir vérifié plusieurs fois que la FoxBoard était bien relié en Bluetooth à la brique NXT (redémarrer la FoxBoard, le boitier NXT, les reconnecter, etc), le programme ne s'exécutait pas. C'est-à-dire que le robot continuait de se promener dans la pièce pendant la seconde phase de recherche (recherche d'un certain poucentage de la luminosité maximum) et ne s'arrêtait jamais, même quand la photorésistance était soumise à une lumière intense (lumière d'un flash de téléphone portable). De plus, le programme a été modifié de sorte que la brique NXT affiche les valeurs reçues par la FoxBoard. La aussi, échec, l'écran n'affichait aucune valeur. Après plusieurs modification du programme, il s'est avéré que les données envoyées par la FoxBoard sont de type 'Texte', les variables des anciens programmes étant de type 'Numérique', il y avait forcément incompatibilité entre les données envoyées par la Foxboard et les données attendues par la brique NXT. La clé du problème était alors de changer les variables dans le programme LégoMindstorm.

Par la suite, le problème principal était qu'on ne peut pas comparer les valeurs de deux variables de types 'Texte', comme on le ferait avec deux variables de types 'Numérique'. L'idée alors fut de mettre les données reçues par la brique NXT dans un fichier, pour pouvoir ensuite comparer ce dernier avec un autre fichier. Malgré l'aide de plusieurs de mes collègues et le manque de temps dut à la difficulté du sujet et au fait que j'étais seul pour concevoir ce robot, le problème n'a put être résolu dans les délais impartis.

Les difficultés rencontrées

Dans ce paragraphe seront détaillées les difficultés rencontrées, et comment elles ont été surmontées.

- Problèmes de conception liés à la taille des panneaux solaires. La solution: la première version du robot fut entièrement démontée. La version finale fut montée en pensant à l'agencement des panneaux solaires dès le début.

- Difficulté liée à au branchement de l'arduino sur le Foxboard. Il fallait pouvoir récupérer la valeur d'ensoleillement que l'arduino récupérait. Solution: Un programme rédigé en langage C à été utilisé pour pouvoir récupérer la valeur d'ensoleillement.

- Difficulté liée à la compatibilité des données envoyées par la FoxBoard.

-Difficultés liées à plusieurs problèmes informatiques: une première FoxBoard a été utilisé pour la réalisation du projet, mais après plusieurs séances, je me suis rendue compte que c'était la FoxBoard elle-même qui fonctionnait très mal, et ce n'était pas un problème de configuration comme je l'avais pensé au départ.