Binome2015-6

De Wiki de bureau d'études PeiP

Introduction :

Le projet réalisé consiste à créer un terrain de foot sur lequel deux robots joueurs pourront s'affronter. Un robot ramasseur devra récupérer le ballon après un but marqué et le remettre en jeu au centre du terrain.

Description des séances :

Séance 1 (18 janvier 2016)

Objectifs : attribution et construction du robot.

Après la présentation du projet à réaliser et les instructions des professeurs, nous nous sommes tous regroupés afin de se repartir le boulot. Chaque groupe a choisit le robot qu'il voulait programmer. Nous avons choisi un robot ramasseur. Ensuite, nous avons dû choisir le châssis de notre robot, un robot 2 ou 4 roues motrices. Nous avons pensé que 2 roues suffiraient pour notre robot ramasseur. De plus, il nous semblait plus simple de programmer deux moteurs plutôt que quatre. Nous avons ensuite commencé à monter le châssis (roues, moteurs, bloc d'alimentation, ...). Nous avons au préalable pris en photo les différentes pièces du châssis afin de connaître leurs dimensions et pouvoir les réutiliser ultérieurement si besoin, et cela sans être obligé de démonter le robot.

Photo1.jpg Photo3.jpg Photo4.jpg Photo5.jpg


Ensuite, il fallait souder les fils de connections aux moteurs avant de fixer ces derniers au robot. Nous avons ainsi pu finir d'assembler les principaux composants du robot.

Chassisrobot1.jpg Chassisrobot2.jpg Chassisrobot3.jpg

Cette étape terminé nous avons commencé des recherches sur internet notamment pour comprendre le fonctionnement des différents composants ainsi que la programmation sur Arduino. En effet, c'est un Arduino Mega qui servira de "cerveau" à notre robot et qui coordonnera ses différentes actions. La partie que nous avons le plus de mal à appréhender étant la gestion des entrées/sorties pour communiquer avec les différents composant de notre robot (moteurs, capteurs couleurs, capteurs ultrason, ...). Nous ne sommes que novice en programmation (python et C) et n'avons étudié que des programmes et algorithmes qui fonctionnaient d'eux mêmes sans interagir avec autre chose que l'ordinateur. Ici la programmation est totalement dépendante des interactions avec les différents capteurs, moteurs, pince, ... Nous avons du mal à comprendre comment ces différents éléments seront intégrés et mis en action avec le code.


Séance 2 (21 janvier 2016)

Objectifs : Programmer un des composants du robot.

Lors de cette séance, notre but était de programmer le capteur ultrason.

Capteur ultrason2.jpg

Ce capteur permettra au robot de détecter un éventuel obstacle et de l'éviter. N'ayant quasi aucune notion de codage pour Arduino nous avons d'abord choisit de nous orienter vers une programmation à l'aide d'Ardublock qui est un environnement de programmation qui se veut plus simple et intuitif et fonctionne comme un puzzle. Cependant, nous ne comprenions pas la logique des différents "blocks" et nous sommes donc rabattu sur une programmation classique en langage C. Il a donc fallu faire des recherches internet. Nous nous sommes répartit les recherches, Nicolas cherchait comment programmer ce capteur ultrason et moi je m'occupais des recherches pour le brancher à l'Arduino. Les recherches ont abouti par l'obtention d'un programme tout fait pour faire fonctionner ce capteur. L'utilisation de ce programme nous à donc permis d'obtenir des valeurs de distances à l'obstacle plus ou moins précises. A défaut de pouvoir le modifier pour l'instant nous pouvons l'analyser pour comprendre comment il fonctionne et comment la communication Arduino<-->Capteur est géré par le code. Cela nous permettra notamment de programmer les autres composants par nous même et modifier à terme celui-ci pour l'améliorer et le faire interagir avec les autres composants.

Séance 3 (25 janvier 2016)

Objectifs : programmer un autre capteurs.

La semaine dernière, nous avions programmé le capteur ultrason. Il restait quelques modifications à apporter mais nous avons choisis de ne pas s'occuper de ça pour l'instant. En programmant le capteur ultrason nous nous étions rendu compte que le codage était notre point faible. C'est pourquoi nous avons choisis de commencer la séance par de la soudure. Nous avons soudés les différents capteurs et contrôleurs (capteur couleurs, contrôleur moteur…) afin de pouvoir les utiliser.

Soudure.jpg
Soudure1.jpg

La fin de la séance a été consacrée à des recherches internet, pour programmer et brancher les capteurs couleurs. Mais nos recherches n'ont rien données.


séance 4 (28 janvier)

Objectifs : Améliorer le capteur ultrason

Lors de cette séance nous voulions améliorer notre programme du capteur ultrason. Le problème est que nous l'avions codé sur un autre PC, et nous n'avons pas pu le récupérer. Il a fallu tout recommencer à zéro. Nous avons refait nos recherches sur les branchements et le code. Cela nous a pris toute la séance, nous n'avons pas été très productifs, mais à la fin, notre programme fonctionnait et les valeurs étaient plus précises que l'autre fois.


Séance 5 (1er février)

Objectifs : Montage du capteur ultrason sur le robot.

Lors de la séance précédente, nous avions testé le capteur ultrason sur un ArduinoUno à part du robot. Au court de cette séance nous avons donc installé le capteur ultrason sur le robot et l’avons branché à notre ArduinoMega. Il a donc été nécessaire de modifier légèrement le code pour que ces deux composants interagissent correctement.

Capteurultra.jpg

Nous nous sommes ensuite penché sur la programmation des moteurs. Pour cela nous avons utilisé un contrôleur moteur, mais nous n’avons, cette fois ci, pas réalisé de test préalable avec l’ArduinoUno. Il fallait évidement pouvoir avoir un retour en direct sur les moteurs de notre programmation. De nombreuse recherche internet ont été réalisé pour obtenir une bonne méthodologie de programmation des moteurs. Nous avant ainsi trouvé qu’il existait une bibliothèque prévue à cette effet. La programmation n’en a été que plus simple. A la fin de la séance nous savions parfaitement comment faire rouler notre robot. Les idées pour que les moteurs interagissent avec les capteurs couleurs et le capteur ultra-son se mettaient également en place.

Séance 6 (4 février)

Objectifs : Les capteurs couleurs.

Durant ces 2h de travail, notre but était de trouver et de comprendre comment brancher les capteurs couleurs sur le robot.

Capteur couleur.jpg

Nous avons débuté nos recherches sur internet, mais nous n'avons rien trouvé de très concluant. En effet la documentation été très restreinte et quasi aucun internaute n’avaient utilisé ce type de contrôleurs dans les forums que nous avons parcourus. Nous avons donc discuté avec les autres groupes de la méthodologie à suivre. Il s’est avéré que Simon et Maëva utilisaient également les capteurs couleurs. Par chance le professeur leur avait fournis un programme pour pouvoir exploiter ces capteurs. Nous l'avons donc récupéré et modifié pour l'adapter à la fois à nos branchements et à nos besoins. Une grande partie du programme nous était inutile. En effet, seule une valeur numérique, des couleurs rencontrées, nous étaient utile. Nicolas a donc passé beaucoup de temps à étudier le programme et ses bibliothèques pour comprendre son fonctionnement et n’en retirer que les choses utiles. Le programme étant très complexe nous n’avons pas pu en comprendre tout les méandres tout de suite et il faudra plusieurs séances avant de pouvoir l’intégrer correctement à notre programme principal. Fanny a réfléchi au problème de la pince. Que devait elle faire exactement pour récupérer la balle sans trop d’effort ? Comment la faire (Impression 3D, découpe laser) ? Quelle forme serait la plus optimale ?

Séance 7 (8 février)

Objectifs : Conception du PCB et de la pince.

Cette séance a été consacrée à la réalisation du PCB sur le logiciel Fritzing et à la conception de la pince. L'un d'entre nous s'est occupé de la conception du PCB, pendant ce temps, l'autre réfléchissait à celle de la pince. Celle-ci servira, à notre robot, à ramasser la balle et à la ramenée au centre du terrain. Ayant fait mon stage, de première année, dans le dessin industriel, j'ai préféré m'occuper de la pince pendant que Nicolas s'occupait du PCB. Nous avons été mis au courant, qu'un groupe d'étudiant travaillaient, au Fabricarium, sur un projet de confection de pince, du même type que celle dont nous avons besoin. Avec le binôme de Erwan et Florian nous y sommes donc allé. Le problème qui leur avait été posé, était de fabriquer un prototype de pince pouvant advenir au besoin de notre robot. Les étudiants nous ont présenté leur projet un par un. Plusieurs idées étaient bonnes, personnellement nous avions pensé à une pince en forme de cuillère qui permettrait de faire rouler la balle jusqu'au centre du terrain. Un groupe nous a présenté un prototype similaire à celui que nous avion imaginé. En discutant avec ce groupe, nous nous sommes rendu compte qu'un simple cercle relier à un bras (qui servirait de levier), suffirait à capturer la balle et à la faire rouler jusqu'au centre du terrain. A la fin de cette séance, nous avions en tête le type de pince que nous voulions réaliser.


Séance 8 (11 Février)

Objectifs : Programmation des phototransistors.

Durant ces 2h, nous avons voulu programmer les capteurs infrarouges, qui serviront, au robot, à détecter la balle. La question était de savoir de combien de leds infrarouge nous avions besoin pour que notre robot détecte la balle. Comme nous nous occupons d'un robot ramasseur, le robot doit être capable de détecter la balle et d'aller la chercher. C'est pourquoi nous avons choisit de prendre 3 phototransistors qui seront disposés sur le devant du robot (l'une sera placée sur la gauche,l'une au centre et l'autre sur la droite).

Leds infrarouge.jpg

Une fois que nous avons su où positionner les capteurs et combien en placés, il a fallu les programmer. Nous avons réalisé les tests à l'aide de la plaque d’essai. Au moment où nous avons du brancher le capteur sur la plaque, nous nous sommes rendu compte que les pôles de ce capteur était inversés par rapport à une led normale. La pâte la plus longue est donc la négative et la plus courte, la positive. de plus, pour utiliser une led infrarouge, il nous faut également une résistance. Pour la choisir, nous avons réfléchit à la puissance minimale que la led doit fournir. Notre choix s'est tourné vers une puissance de 220 Ohm.


Resistance.jpg

Ensuite, nous avons pu brancher puis programmer les leds infrarouge. Le problème est que notre programme n'a pas fonctionné, les valeurs ne correspondaient pas du tout, mais par manque de temps nous n'avons pas pu le modifier. Lors de cette séance nous avions également tenter d'optimiser l'espace sur le robot en déplaçant certains composants.

Led.jpg Led2.jpg


séance 9 (22 février)

Objectifs : Modifications du PCB

Lors de cette séance nous avons tenté d'optimiser l'espace sur le robot en déplaçant certains composants.

Led.jpg Led2.jpg

De plus, nous voulions améliorer notre PCB, afin de le rendre plus lisible et surtout plus fonctionnel. Nicolas s'est occupé de cette partie.


séance 10 (25 février)

séance 11 (29 février) impression des pcb

séance 12 (3 mars) un des pcb n'etait pas correcte, branchement manquant. modification du pcb


séance 13 (7 mars) modification Wiki confection pince freecad


séance 14 (10 mars)

Objectifs:

confection pince sur freecad découpe du pcb des capteurs pour optimiser la place sur le robot soudure des composants sur pcb

Decoupe.jpg

Séance 15 (14 mars)

Objectifs:

test capteur couleur: positif branchements capteur ultrason pcb-arduino probleme de fonctionnement modification

Séance 16 (18 mars)

Objectifs :

Ayant reçue le circuit imprimé modifié pour le SHIELD allant sur l'Arduino nous avons donc soudé les composants et connectiques dessus. Le problème que nous pensions régler en changeant le composant dans Fritzing (contrôleur moteur) n'a pas été résolu. Plutôt que de refaire une nouvelle fois le PCB nous avons préféré tordre les pattes de connections du contrôleur et le souder ainsi. Une fois ceci fait, nous avons soudé toutes les connectiques. Enfin nous avons voulu monter le SHIELD sur notre Arduino. Nous avons cependant rencontré un petit souci. En effet le SHIELD est assez long et vient buter contre le port USB. De ce fait, le SHIELD ne s'emboîte pas totalement et nous espérons que cela n'engendrera pas de faux contact ou pas de contact du tout.

Séance 17 (21 mars)

Objectifs: Monter le robot avec les PCB

Nous avons fini de souder les composants sur le SHIELD qui prendra place sur l'Arduino. Les PCB des capteurs ont été fixés sur le robot et connectés au SHIELD. Une fois l'ensemble du montage réalisé nous avons connecté le tout à l'alimentation. Cependant ce dernier à fondu. Il est possible que ces soucis viennent du fait que les fils de connexions étaient trop proches et que la chaleur qu'ils dégagent les aie fait fondre. En effet, il se trouve qu'en démontant le boîtier nous avons remarqué que les fils avaient fondus.

Séance 18 (24 mars)

Objectifs : recherche du problème causant la surchauffe du boîtier à piles.

N'ayant pas de créneau de cours ce jeudi, nous sommes venus travailler en autonomie la journée afin de régler les problèmes rencontrés lors de la dernière séance. Pendant que Nicolas essayait de résoudre le problème, de mon côté je suis allée récupérée les pièces que j'avais imprimées en 3D. Nous avions besoin d'un support pour fixer nos phototransistors et le servomoteur. Le résultat obtenu ne fut pas satisfaisant.

Support led1.jpg 200px

En effet, nous pouvons voir que les bords censés caler le servomoteur ne sont pas assez haut et que la fente sur les supports des transistors n'est pas assez large. J’ai donc modifié les supports sous FreeCAD et nous avons lancé une nouvelle impression le soir même. Pendant ce temps, Nicolas à discuter avec le professeur de la surchauffe du boîtier. Une telle surchauffe ne pouvait être dû qu’à un court circuit. Nous arrivions cependant pas à comprendre d’où pouvait venir ce défaut puisque les soudures sur le PCB semblaient propres et qu’aucun fils n’étaient en contact. Nous avons donc testé le PCB en lui même avec le multimètre. Nous nous sommes alors rendu compte que les pistes du PCB étaient gravées trop fine et qu'il restait du cuivre dans les interstices. La question étant de savoir si nous réimprimions un nouveau PCB en augmentant la marge entre les pistes et les masses, ou si nous grattions pour retirer le surplus de cuivre. Le problème ayant été soulevé tôt nous avons préféré attendre et réimprimer un nouveau PCB dont nous serions sûr qu’il ne poserait pas de problème. Après recherche dans les options de Fritzing, Nicolas a finalement trouvé la bonne option pour augmenter la marge entre les pistes et les masses. Il en a également profité pour modifier la disposition des composants et ainsi raccourcir la carte qui était un peu longue et butait sur pour USB de l’Arduino.

Séance Bonus (29 mars)

Objectifs : Souder sur le nouveau PCB

Nous sommes revenus ce mardi pour travailler de nouveau en autonomie. En arrivant les PCB n'étaient pas là. Nicolas a donc commencé par souder les phototransistors sur les petits PCB prévus à cet effet.

Pcb led.jpg

Pendant ce temps, j'ai récupéré les supports que nous avions réimprimés pour les tester.

Séance 19 (18 avril)

Pendant l'interruption pédagogique j'ai récupéré notre robot pour pouvoir travailler dessus. Cela m'a surtout permis de tester les capteurs de couleurs, savoir ce qu'ils revoyaient comme couleur pour programmer convenablement le robot et qu'il suive les lignes du terrain. J'ai ainsi pu constater qu'ils retournaient des valeurs très aléatoires et donc quasi inutilisable en l'état.

Au retour des vacances nous avons donc discuter avec Fanny ainsi qu'avec les professeurs de la solution à adopter. Les capteurs étaient bien trop éloignés de la surface du sol pour donner de bonnes valeurs. Les capteurs ont donc été dé-soudés pour être abaissés. De plus nous avons changé les entretoises qui fixaient le PCB des capteurs pour des plus longues. Ainsi les capteurs étaient bien plus proches du sol et nous avons pu refaire des tests. Les valeurs retourné étaient encore une fois assez aléatoire mais plus grande (ici 8000 contre 150 avant). La fin de la séance nous également permis de commencer à programmer les phototransistors.


Séance 20 (25 avril)

Objectifs: programmation des phototransistors

Durant cette séance, notre but était de faire fonctionner notre code des capteur infrarouge. Au bout de plusieurs tentatives échouées, nous avons remarqué que les résistances utilisaient n'étaient pas assez puissantes. Nicolas a donc été chercher de nouvelles résistance, de puissance 2200 ohm. A la suite de ce petit problème, il a été nécessaire de désouder les autres résistances pour les remplacer par les nouvelles. Mais, les PCB contenant ces dernières, sont collés à des supports sur le robot. Donc, pendant que je tenais le robot, Nicolas désoudait. Une fois, les anciennes résistance retirées, nous avons pu soudé les nouvelles.

Pendant que je rédigeait le Wiki, Nicolas a de nouveau testé le programme des Leds avec les nouvelles modifications. Le résultat était plus concluant qu'avant. Aprés avoir fait ce petit test, il a fallu l'ajouter au programme principal. La pince ne se baissait pas complètement, il fallait modifier certaines valeurs dans le programme (à finir)