Binome2015-6 : Différence entre versions

De Wiki de bureau d'études PeiP
 
(38 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
'''''[[Introduction :]]'''
+
<include nopre noesc src="/home/pedago/ppeip/include/video-Robot6-2015-iframe.html" />
 +
__TOC__
 +
<br style="clear: both;">
 +
== '''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.
+
Le projet réalisé par l’ensemble du groupe 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)'''
+
== '''Carnet de bord :''' ==
  
'''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.
+
=<div class="mcwiki-header" style="border-radius: 15px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #ACACFC; vertical-align: top; width: 98%;">Séance 1 (18 janvier 2016) - Objectifs : Choix du robot à confectionner, montage du robot</div>=
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.
 
  
Ensuite, il fallait souder les fils de connections aux moteurs avant de fixer ces derniers au robot.
 
  
[[Fichier:conctru1.jpg|200px]]
+
Après la présentation du projet à réaliser et les instructions des professeurs, nous nous sommes tous regroupés afin de choisir les robots. Sachant qu’il fallait plus de robots joueurs que de robots ramasseurs, chaque groupe a choisi le robot qu'il préférait programmer.
 +
 +
En ce qui nous concerne, nous avons choisi un robot ramasseur. Ensuite, nous avons dû choisir le châssis de notre robot. Deux options s’offraient à nous : un robot 2 ou 4 roues motrices. Nous avons pensé que 2 roues suffiraient pour notre robot ramasseur qui n’a pas besoin d’une . De plus, il nous a semblé qu’il serait 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. De cette manière nous pourront connaître leurs dimensions exactes et pourrons les réutiliser ultérieurement si besoin, et cela sans être obligé de démonter le robot.
 +
 
 +
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.
  
Nous avons ainsi pu finir d'assembler les principaux composants du robot.
 
  
[[Fichier:contru2.jpg|200px]] [[Fichier:constru3.jpg|200px]]
+
[[Fichier:Conctru1.jpg|200px|center]] [[Fichier:Contru2.jpg|200px|center]] [[Fichier:Constru3.jpg|200px|center]]  
  
  
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, ...
+
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 ArduinoMega 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.
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)'''
+
=<div class="mcwiki-header" style="border-radius: 15px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #ACACFC; vertical-align: top; width: 98%;">Séance 2 (21 janvier 2016) - Objectifs : Programmer un des composants du robot</div>=
  
'''Objectifs''' : Programmer un des composants du robot.
+
L’un des composant les plus important du robot est le capteur ultra-son. C’est ce dernier qui permettra au robot de détecter des obstacles devant lui et ainsi de les éviter.
 +
Nous avons donc choisi de programmer ce composant dès le début.
  
Lors de cette séance, notre but était de programmer le capteur ultrason.  
+
[[Fichier:US.jpg|200px|center]]
  
[[Fichier:US.jpg|200px]]
+
N'ayant quasiment 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 en imbriquant les fonctions les unes dans les autres. 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 connecter à 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 a 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.
  
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)'''
+
=<div class="mcwiki-header" style="border-radius: 15px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #ACACFC; vertical-align: top; width: 98%;">Séance 3 (25 janvier 2016) - Objectifs : Programmer un autre capteur.</div>=
  
'''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.
 +
 +
Nous avons voulu consacrer cette séance à programmer un autre composant du robot. La première étape étant de pouvoir connecter le contrôleur moteur et les capteurs couleurs à l’Arduino. Pour ce faire nous avons dû commencer par souder les Pin de connections à chacun de ces composants (capteurs couleurs (x3) et contrôleur moteur).
  
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.
+
[[Fichier:Capteur_couleur.jpg|200px|center]]
Nous avons soudés les différents capteurs et contrôleurs (capteur couleurs, contrôleur moteur…) afin de pouvoir les utiliser.
 
  
[[Fichier:controleur_moteur.jpg|200px]][[Fichier:capteur_couleur.jpg|200px]]
+
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 pas été fructueuses. Il semblerait que ce capteur couleur soit relativement récent et la documentation le concernant n’est pas très abondante.  
  
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.
+
=<div class="mcwiki-header" style="border-radius: 15px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #ACACFC; vertical-align: top; width: 98%;">Séance 4 (28 janvier) - Objectifs : Améliorer la programmation du capteur ultrason</div>=
  
 +
Lors de cette séance nous voulions améliorer notre programme pour le capteur ultrason. Cependant l’ayant codé sur un autre PC et n’ayant pas sauvegardé le programme sur une clé USB personnelle, nous n'avons pas pu le récupérer. Il a donc fallu tout recommencer à zéro. Nous avons refait des recherches pour le codage. Nous avons finalement retrouvé le même programme que nous avons pu améliorer l’ayant préalablement étudié. A la fin  de la séance, notre programme fonctionnait et les valeurs étaient plus précises que la dernière fois.
 +
De plus, nous avons ajouté au programme de l'ultrason, un code qui permet au robot d'éviter un obstacle lorsqu'il en détecte un.
  
'''séance 4 (28 janvier)'''
+
[[Fichier:PrgUS.png|200px|center]]
  
'''Objectifs''' : Améliorer le capteur ultrason  
+
=<div class="mcwiki-header" style="border-radius: 15px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #ACACFC; vertical-align: top; width: 98%;">Séance 5 (1er février) - Objectifs : Montage du capteur ultrason sur le robot et interaction avec les moteurs.</div>=
  
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.
 
  
 +
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.
  
'''Séance 5 (1er février)'''
+
[[Fichier:Test_US.jpg|200px|center]]
  
'''Objectifs''' : Montage du capteur ultrason sur le robot.
+
Nous avons ensuite tester nos programme. Nous pouvons voir le résultat dans les vidéos ci_dessous.
  
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.
+
[[Média:video_US.mp4]] [[Média:video_US2.mp4]]
  
[[Fichier:test_US.jpg|200px]]
+
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 connaître directement l’action qu’à notre programme sur les moteurs. De nombreuses recherches internet ont été réalisées 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.
  
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.
+
[[Fichier:PrgMoteur1.png|200px|center]] [[Fichier:PrgMoteur2.png|200px|center]] [[Fichier:PrgMoteur3.png|200px|center]]
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.
 
  
[[Fichier:test_controleur_moteur.jpg|200px]]
 
  
Les idées pour que les moteurs interagissent avec les capteurs couleurs et le capteur ultra-son se mettaient également en place.
+
Les idées pour que les moteurs interagissent avec les capteurs couleurs et le capteur ultra-son se mettaient également en place dans nos esprits.
 
'''Séance 6 (4 février)'''
 
  
'''Objectifs''' : Les capteurs couleurs.
+
=<div class="mcwiki-header" style="border-radius: 15px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #ACACFC; vertical-align: top; width: 98%;">Séance 6 (4 février) - Objectifs : Utilisation des capteurs couleurs et réflexions sur la conception de la pince.</div>=
  
Durant ces 2h de travail, notre but était de trouver et de comprendre comment brancher les capteurs couleurs sur le robot.
 
  
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.
+
Durant ces 2h de travail, notre but était de trouver et de comprendre comment brancher les capteurs couleurs sur le robot.
  
Pendant ce temps, 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 ?
+
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 quasiment 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. Programme qui été en fait fournis par le constructeur pour servir d’exemple . 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 tous les méandres tout de suite et il faudra plusieurs séances avant de pouvoir l’intégrer correctement à notre programme principal.
  
'''Séance 7 (8 février)'''
+
[[Fichier:PrgCouleur1.png|200px|center]]  [[Fichier:PrgCouleur2.png|200px|center]]
  
'''Objectifs''' : Conception du PCB et de la pince.
+
Pendant ce temps, 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 ?
  
Cette séance a été consacrée à la réalisation du PCB sur le logiciel Fritzing et à la conception de la pince.
+
=<div class="mcwiki-header" style="border-radius: 15px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #ACACFC; vertical-align: top; width: 98%;">Séance 7 (8 février) - Objectifs : Conception du PCB et de la pince.</div>=
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'une sphère en forme de cuillère reliée à un bras (qui servirait de levier), suffirait à capturer la balle et à la faire rouler jusqu'au centre du terrain. Pour réaliser cela, nous utiliserons l'impression 3D.
 
A la fin de cette séance, nous avions en tête le type de pince que nous voulions réaliser.
 
  
 +
Cette séance a été consacrée à la réalisation du PCB sur le logiciel Fritzing et à la conception de la pince. Nicolas s'est occupé de la conception du PCB et moi je réfléchissais à celle de la pince. Celle-ci permettra à notre robot de ramasser la balle et à la ramener 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'une sphère en forme de cuillère reliée à un bras (qui servirait de levier), suffirait à capturer la balle et à la faire rouler jusqu'au centre du terrain. Pour réaliser cela, nous utiliserons l'impression 3D. A la fin de cette séance, nous avions en tête le type de pince que nous voulions réaliser.
  
 +
=<div class="mcwiki-header" style="border-radius: 15px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #ACACFC; vertical-align: top; width: 98%;">Séance 8 (11 Février) - Objectifs : Utilisation des phototransistors.</div>=
  
'''Séance 8 (11 Février)'''
+
Durant ces 2h, nous avons voulu programmer les capteurs infrarouges, qui serviront, au robot, à détecter la balle.
  
'''Objectifs''' : Programmation des phototransistors.
+
La question était de savoir de combien de photodiode infrarouge nous aurions 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 (qui vraisemblablement sera devant lui) et d'aller la chercher. C'est pourquoi nous avons choisi 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).
 +
Une fois que nous avons su où positionner les capteurs et combien en placer, il a fallu les programmer. Nous avons réalisé les tests à l'aide de la plaque d’essai. Au moment où nous avons dû brancher le capteur sur la plaque, nous nous sommes rendu compte que les pôles de ce capteur étaient 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 phototransistor, nous avons besoin d'une résistance pour éviter sa surcharge.
  
Durant ces 2h, nous avons voulu programmer les capteurs infrarouges, qui serviront, au robot, à détecter la balle.
+
[[Fichier:Resistance.jpg|200px|center]]
  
[[Fichier:led.jpg|200px]]
+
Pour la choisir la bonne résistance nous nous sommes documenté sur internet et en avons retiré qu’une résistance de 2200 Ohm était la plus adaptée pour cet usage.
 
   
 
   
La question était de savoir de combien de leds infrarouge nous avions besoin pour que notre robot détecte la balle.
+
Ensuite, nous avons pu brancher puis programmer les phototransistors. Le problème est que notre programme n'a pas fonctionné correctement. En effet, nous pensions qu’une simple lecture des valeurs renvoyées par les photodiodes suffirait. Ce n’était visiblement pas le cas. Les valeurs étaient fixes et ne correspondaient à rien de ce que nous voulions. Ce problème était certainement dû à notre programme, mais pouvais aussi venir d’un facteur inconnu pour le moment.  
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).
 
  
Une fois que nous avons su où positionner les capteurs et combien en placer, 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, nous avons besoin d'une résistance.
 
  
[[Fichier:resistance.jpg|200px]]
+
=<div class="mcwiki-header" style="border-radius: 15px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #ACACFC; vertical-align: top; width: 98%;">Séance 9 (22 février) - Objectifs : Modifications du PCB et amélioration de la pince</div>=
  
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.
+
Pour commencer cette séance nous avons tenté d'optimiser l'espace sur le robot en déplaçant certains composants. Ensuite, Nicolas s'est occupé des modifications à apporter au PCB pour l'améliorer, pendant que je me sensibilisais au logiciel Freecad pour la conception de la pince.
 +
 +
A la séance précédente Nicolas avait commencé à intégrer l’ensemble des composants au logiciel Fritzing pour faire un PCB global. Seulement après discussion avec les professeurs plusieurs choses posaient soucis :
  
 +
- Les composants étaient disposés de manière aléatoire et les composants étaient connectés entre eux sans organisation (on ne se repérait pas du tout dans le modèle).
  
Ensuite, nous avons pu brancher puis programmer les leds infrarouge.
+
- Ne réaliser qu’un seul PCB pour l’ensemble des composants n’était pas une bonne idée car il a pour but de pouvoir souder les composants directement dessus et ainsi réduire les risques de faux contacts.
Le problème est que notre programme n'a pas fonctionné correctement, les valeurs ne correspondaient pas, mais par manque de temps nous n'avons pas pu le modifier.
 
  
 +
Il a donc été décidé de faire au moins deux PCB, l’un pour les capteurs qui viendra directement sous le robot, l’autre fera office de shield sur l’Arduino.
  
'''séance 9 (22 février)'''
+
De mon côté, je m'occupais de la conception de la pince. Durant mon stage, j'avais utilisé le logiciel Solidworks, pour dessiner cette pince en 3D j'ai dû utiliser le logiciel Freecad. Ne sachant pas comment utiliser le logiciel, j'ai demandé à Erwan de m'expliquer les principales fonctions à utiliser. Jusqu'à la fin de la séance, je me suis familiarisée avec Freecad, j'ai essayé plusieurs fonctions du logiciel (comment créer une forme, comment découper une partie de la pièce ou encore comment fusionner plusieurs pièce). Malgré quelques difficultés, à la fin de la séance j'arrivais à faire ce que je voulais.
  
'''Objectifs''' : Modifications du PCB 
 
  
Pour commencer cette séance nous avons tenté d'optimiser l'espace sur le robot en déplaçant certains composants.
+
=<div class="mcwiki-header" style="border-radius: 15px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #ACACFC; vertical-align: top; width: 98%;">Séance 10 (25 février) - Objectifs : Conception de la pince et modification du PCB</div>=
Ensuite, Nicolas s'est occupé des modifications à apporter au PCB pour l'améliorer, pendant que je me sensibilisais au logiciel Freecad pour la conception de la pince.
 
(Moreau PCB mais comment qu'est ce que t'as fait donc ?)
 
  
De mon côté, je m'occupais de la conception de la pince. Durant mon stage, j'avais utilisé le logiciel Solidworks, pour dessiner cette pince en 3D j'ai du utiliser le logiciel Freecad. Ne sachant pas comment utiliser le logiciel, j'ai demandé à Erwan de m'expliquer les principales fonctions à utiliser.
 
Jusqu'à la fin de la séance, je me suis familiarisée avec Freecad, j'ai essayé plusieurs fonctions du logiciel (comment créer une forme, comment découper une partie de la pièce ou encore comment fusionner plusieurs pièce).
 
Malgré quelques difficultés, à la fin de la séance j'arrivais à faire ce que je voulais.
 
  
 +
Comme lors de la séance précédente, durant ces 2h, Nicolas s'occupait des modifications à apporter aux PCB pendant que je créais la pince sur Freecad.
  
 +
Modification des PCB :
  
'''séance 10 (25 février)'''
+
Nicolas avait voulu faire les PCB chez lui pour que nous puissions avancer plus vite. Mais après vérification par les professeurs il s’est avéré que les PCB ne pourraient pas être imprimés en l’état. En effet, Nicolas avait fait des pistes qui réalisaient des angles à 90°. Ces angles important posent 2 inconvénients :
  
'''Objectifs: Conception de la pince + modification PCB'''
+
- Le courant circule moins bien et se « heurte » aux angles importants.
  
Comme lors de la séance précédente, durant ces 2h, Nicolas s'occupait des modification à apporter aux PCB pendant que je créais la pince sur Freecad.  
+
- La gravure serait plus longue et abimerait d’avantage les fraiseuses.
  
(MOREAU, modife PCB (plusieurs pcb (leds,controleurs,capteurs)et impression)
+
Il a donc fallut reprendre l’ensemble des PCB pour modifier les angles et en faire des angles à 45°. Finalement nous avons pu envoyer les PCB à la gravure.
  
 
De mon côté, j'ai commencé à créer la pince en forme de cuillère. Mon but était de créer une demi sphère, de la creuser et de la relier à un bras levier comme ci-dessous.  
 
De mon côté, j'ai commencé à créer la pince en forme de cuillère. Mon but était de créer une demi sphère, de la creuser et de la relier à un bras levier comme ci-dessous.  
 +
En modélisant, je n'arrivais pas à obtenir un résultat qui convenait, le bras n'était pas dans le même plan que la demi-sphère et n'était donc pas aligné avec elle. Au bout de plusieurs essais, notre pince ressemblait à celle que nous voulions.
  
[[Fichier:coquis_pince.jpg|200px]]
+
[[Fichier:Coquis_pince.jpg|200px|center]]
  
En modélisant, je n'arrivais pas à obtenir un résultat qui convenait, le bras n'était pas dans le même plan que la demi-sphère et n'était donc pas aligné avec elle.
+
=<div class="mcwiki-header" style="border-radius: 15px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #ACACFC; vertical-align: top; width: 98%;">Séance 11 (29 février) - Objectifs : Modification PCB</div>=
Au bout de plusieurs essais, notre pince ressemblait à celle que nous voulions. 
 
  
 +
Lors de la séance précédente, Nicolas avait envoyé les PCB pour les faire imprimer. Une fois les PCB récupérés, nous avons voulu souder les différents capteurs et contrôleur dessus. Concernant le PCB destiné à accueillir les capteurs couleurs et ultrason nous n’avons pas rencontré de problème (à première vue) et les composants y ont été soudé sans encombre. En revanche le PCB qui prendrait place sur l’Arduino posa davantage de soucis. En effet l’emplacement destiné à recevoir le contrôleur moteur était beaucoup trop large pour celui-ci. Le professeur nous a donc dit d’en faire un nouveau avec cette fois ci le bon composant. De plus, ne sachant pas qu’un plan de masse était préférable sur les PCB (notamment pour éviter à la graveuse de s’user précocement), nous n’en avions pas mis. Le nouveau PCB disposera donc d’un plan de masse.
  
'''séance 11 (29 février)'''
+
[[Fichier:PCB2.png|200px|center]][[Fichier:PCB1.png|200px|center]]
  
'''Objectifs: Modification PCB '''
+
Nicolas en a d'ailleurs profiter pour y inclure le support du module Xbee sur le Shield.
  
Lors de la séance précédente, Nicolas avait envoyé les PCB pour les imprimer.
 
Une fois que nous avions récupéré les PCB, nous voulions souder les différents capteurs et contrôleur dessus. En observant l'un des PCB, celui correspondant aux contrôleurs, nous nous sommes rendu compte qu'il y avait un problème. (Moreau toi même tu sais, pas de plan de masse ou je sais plus quoi)
 
  
 +
=<div class="mcwiki-header" style="border-radius: 15px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #ACACFC; vertical-align: top; width: 98%;">Séance 12 (3 mars) - Objectifs : Modification de la pince et programmation.</div>=
  
'''séance 12 (3 mars)'''
 
  
'''Objectifs: Modification PCB et pince'''
+
Durant cette séance, nous nous sommes demandé si notre pince était mécaniquement correcte. En effet, au niveau du levier il n'y a qu'un seul bras, lorsque celui-ci s’abaissera, l'enveloppe servant à capturer la balle sera-t-elle à la bonne hauteur ? Pour éviter ce problème, j'ai modifié la forme de la pince en ajoutant une partie au levier.
  
Durant cette séance, nous nous sommes demandé si notre pince était mécaniquement correcte. En effet, au niveau du levier il n'y a qu'un seul bras, lorsque celui-ci s’abaissera, l'enveloppe servant à capturer la balle sera-t-elle à la bonne hauteur?
+
Avec ce système, nous étions sûr que notre pince serait au niveau de la balle. J'ai donc réalisé quelques modifications sur Freecad.
Pour eviter ce problème, j'ai modifié la forme de la pince en ajoutant une partie au levier.  
 
  
[[Fichier:croquis_pince1.jpg|200px]]
+
[[Fichier:Croquis_pince1.jpg|200px|center]]
  
Avec ce système, nous étions sûr que notre pince serait au niveau de la balle.
+
Jusqu'à présent l’ensemble de nos programmes se trouvaient dans des fichiers séparés et fonctionnaient individuellement. Nicolas a donc décidé de tous les regrouper dans un programme commun afin de les faire fonctionner de concert. Cette étape est très longue car nous souhaitons avoir le programme le plus propre possible. Il sera effectivement très long. Une bonne organisation de celui nous permettra de le modifier ultérieurement sans difficulté et de retrouver chacune des fonctions rapidement.
J'ai donc réalisé quelques modifications sur Freecad.  
 
  
Pendant ce temps, Nicolas ... (PCB à modifier et ouais toujours la même chose ma gueule)
 
  
'''séance 13 (7 mars)'''
+
=<div class="mcwiki-header" style="border-radius: 15px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #ACACFC; vertical-align: top; width: 98%;">Séance 13 (7 mars) - Objectifs : Amélioration de la pince</div>=
  
'''Objectifs: Amélioration de la pince'''
 
  
La semaine passée, j'avais amélioré le système mécanique de notre pince. Aujourd'hui mon objectif était d'y apporter encore quelques modifications, de façon à utiliser le moins de matière possible. En effet, moins nous utilisons de matière, plus la pince sera légère et donc elle aura besoin de moins de puissance pour fonctionner.  
+
La semaine passée, j'avais amélioré le système mécanique de notre pince. Aujourd'hui mon objectif était d'y apporter encore quelques modifications, de façon à utiliser le moins de matière possible. En effet, moins nous utilisons de matière, plus la pince sera légère et donc elle aura besoin de moins de puissance pour fonctionner. Nous sommes partit sur un système qui abaissera la pince quand le robot détectera la balle, et qui permettra par la suite de la faire rouler jusqu'au centre du terrain. Après réflexion, je me suis dit qu'un simple cercle suffirait à capturer la balle. De plus, si nous remplaçons la demi-sphère par un torus, nous utiliserons beaucoup moins de plastique. J'ai réalisé un croquis de ce que je voulais réaliser avec les côtes pour visualiser le final.
Nous sommes partit sur un système qui abaissera la pince quand le robot détectera la balle, et qui permettra par la suite de la faire rouler jusqu'au centre du terrain.  
+
Après réflexion, je me suis dit qu'un simple cercle suffirait à capturer la balle. De plus, si nous remplaçons la demi-sphère par un torus, nous utiliserons beaucoup moins de plastique.
+
[[Fichier:Croquis_pince2.jpg|200px|center]]
J'ai réalisé un croquis de ce que je voulais réaliser avec les côtes pour visualiser le final.
 
  
[[Fichier:croquis_pince2.jpg|200px]]
+
De son côté Nicolas a poursuivi la programmation et voulu faire des tests en connectant le PCB des capteurs sur l’Arduino. A la mise sous tension il a découvert que l’un des capteurs de couleurs ne fonctionnait pas. Après démontage de ce dernier et analyse du circuit il se rendit compte que la GND de ce même capteur n’était connectée à rien. Petit erreur de confection du PCB qu’il corrigea en soudant un fil électrique entre la Pin GND de ce capteur à celle du capteur voisin.
 +
Les tests ont ainsi pu reprendre leur cours et tout fonctionnait bien.
  
De son côté Nico chaud cacao (avoue tu me maudit la mais tu dois dire que tu l'as fais et que tu l'a réimprimer)
 
  
'''séance 14 (10 mars)'''
+
=<div class="mcwiki-header" style="border-radius: 15px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #ACACFC; vertical-align: top; width: 98%;">Séance 14 (10 mars) - Objectifs : Conception Pince</div>=
  
'''Objectifs: Conception Pince '''
+
Comme la semaine précédente j'avais réalisé un croquis de ce que j'avais imaginé pour la pince, mon objectif lors de cette séance était de la modéliser. J'ai donc passé ma séance à la conception de la pince sur freecad. Pour cela, j'ai créé, individuellement, chaque pièce composant la pince puis je les ai assemblées les unes et les autres grâce à la fonction "union". Le résultat obtenu était celui attendu, cependant je me suis dit que l'on pouvait encore minimiser la quantité de plastique. De plus, notre pince mesurait près de 15cm, afin de réduire la taille de l'objet j'ai supprimer une partie de la pièce constituant le levier. Grâce à cela, notre pince mesure à présent 11cm.
 +
Nous avons également récupéré le PCB pour les différents capteurs (couleur, infrarouge..), mais Nicolas s'est rendu compte que les dimensions étaient gênantes. En effet, nous voulions placer ce PCB en dessous du robot, devant les roues avant. Cependant, en le positionnant à cet endroit il dépasserait beaucoup trop et gênerait par rapport aux dimensions de la pince que nous avons choisi. Pour résoudre ce problème, Nicolas a eu l'idée de découper le PCB, ainsi il s'emboîterait plus facilement sous le robot et dépassera moins à l’avant.
 +
 +
[[Fichier:Decoupe_pcb.jpg|200px|center]]
  
Comme la semaine précedente j'avais réalisé un croquis de ce que j'avais imaginé pour la pince, mon objectif lors de cette séance était de la modéliser.
+
=<div class="mcwiki-header" style="border-radius: 15px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #ACACFC; vertical-align: top; width: 98%;">Séance 15 (14 mars) - Objectifs : Programmation</div>=
J'ai donc passé ma séance à la conception de la pince sur freecad. Pour cela, j'ai créé, individuellement, chaque pièce composant la pince puis je les ai assemblée les unes et les autres grâce à la fonction "union".
 
Le résultat obtenu était celui attendu, cependant je me suis dis que l'on pouvais encore minimiser la quantité de plastique. De plus, notre pince mesurait près de 15cm, afin de réduire la taille de l'objet j'ai supprimer une partie de la pièce constituant le levier. Grâce à cela, notre pince mesure à présent 11cm.
 
  
Nous avons également récupéré le PCB pour les différents capteurs (couleur, infrarouge..), mais Nicolas s'est rendu compte que les dimensions étaient gênantes. En effet, nous voulions placer ce PCB en dessous du robot, devant les roues avant. Cependant, en le positionnant à cet endroit il dépasserait beaucoup trop et gênerait par rapport aux dimensios de la pince que nous avons choisit. Pour résoudre ce problème, Nicolas à eu l'idée de découper le PCB, ainsi il s'emboîterait plus facilement sous le robot et dépassera moins sur le devant.  
+
Ayant fini de souder les composants sur le PCB des capteurs et ayant découpé le PCB à la forme adéquate, nous avons pu le fixer sur le robot. Une fois cette étape réalisée, Nicolas a fait les branchements.
 +
Après avoir branchés chaque composant, nous avons refait un test sur le capteur Ultrason. En lançant le programme, nous avons remarqué des erreurs dans les valeurs affichées. En effet, il retournait une distance nulle alors qu’aucun obstacle n’était devant. Nous avons alors pensé que le capteur était défectueux et l’avons remplacé. Après ce changement notre programme retournait enfin des valeurs correctes.
 +
Nicolas à quand même voulut tester le capteur que nous pensions défectueux en le directement à l’Arduino. Il par miracle le capteur « défectueux » ne l’était plus du tout. Le problème ne venait visiblement pas du capteur mais d’un faux contact entre le PCB et l’Arduino.
  
[[Fichier:decoupe_pcb.jpg|200px]]
+
Enfin, lors de ces 2H, notre but était également de s'occuper des capteurs couleurs. Nous avons réalisé plusieurs tests, et après quelques tentatives échouées nous avons obtenu des résultats plus concluant. Notre programme retournait des valeurs qui nous semblaient cohérentes et exploitable.
  
Pour finir cette séance, nous avons soudé quelques composants sur le PCB contenant les connectiques pour les capteurs (ultrason,couleur, infrarouge..) .
 
  
 +
=<div class="mcwiki-header" style="border-radius: 15px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #ACACFC; vertical-align: top; width: 98%;">Séance 16 (18 mars) - Objectifs : Finir le PCB</div>=
  
'''Séance 15 (14 mars)'''
+
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.
'''Objectifs: Programmation '''
 
  
Ayant finit de souder les composants sur le PCB des capteurs, nous avons pu le fixer sur le robot.  
+
[[Fichier:Soudure.jpg|200px|center]][[Fichier:Soudure_pcb_controleur.jpg|200px|center]]
Une fois cette étape réalisée, Nicolas a fait les branchements.  
 
  
Après avoir branchés chaque composant, nous avons refait un test sur le capteur Ultrason. En lançant le programme, nous avons remarqué des erreurs dans les valeurs affichées. Nous avons donc modifié le programme du capteur afin de retrouver les valeurs que nous avions  lors des premiers essais positifs.
+
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 contacts (voire pas de contact du tout).
  
Enfin, lors de ces 2H, notre but était de s'occuper des capteurs couleurs. Nous avons réalisé plusieurs test, et après quelques tentatives échouées nous avons obtenu des résultats concluant. Notre programme retournait des valeurs cohérentes.
 
  
 +
=<div class="mcwiki-header" style="border-radius: 15px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #ACACFC; vertical-align: top; width: 98%;">Séance 17 (21 mars) - Objectifs : Monter le robot avec les PCB</div>=
  
 +
Nous avons fini de souder les composants sur le SHIELD qui prendra place sur l'Arduino. Les PCB des photodiodes ont été préalablement 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 16 (18 mars)'''
+
Dans un second temps, j'ai récupéré la pince que nous avons imprimée à l'imprimante 3D. Celle-ci avais les dimensions nécessaires.
  
'''Objectifs: '''
+
[[Fichier:Pince_finale.jpg|200px|center]]
  
Pendant cette séance, nous nous sommes occupé de l'autre PCB, celui contenant les connectiques pour les ccontrôleurs.  
+
Je suis ensuite allé au Fabricarium afin de visser le servomoteur à la pince.
Ayant reçue le circuit imprimé modifié pour le SHIELD allant sur l'Arduino nous avons donc soudé les composants et connectiques dessus.
+
 
 +
[[Fichier:Visse_pince.jpg|200px|center]][[Fichier:Fixation_pince.jpg|200px|center]]
  
[[Fichier:soudure.jpg|200px]] 
 
  
Le problème que nous pensions régler en changeant le composant dans Fritzing (contrôleur moteur) n'a pas été résolu.
+
=<div class="mcwiki-header" style="border-radius: 15px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #ACACFC; vertical-align: top; width: 98%;">Séance Bonus - Objectifs : recherche du problème causant la surchauffe du boîtier à piles.</div>=
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.
 
  
[[Fichier:soudure_pcb_controleur.jpg|200px]]
 
  
Une fois ceci fait, nous avons soudé toutes les connectiques.
+
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érer 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.
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)'''
+
[[Fichier:Test_support_SM.jpg|200px|center]][[Fichier:Test_support_led.jpg|200px|center]]
  
'''Objectifs''': Monter le robot avec les PCB
+
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.
  
Nous avons fini de souder les composants sur le SHIELD qui prendra place sur l'Arduino.
+
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 n'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é assez 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.
Les PCB des capteurs ont été préalablement 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.
 
  
Dans un second temps, j'ai récupéré la pince que nous avons imprimée à l'imprimante 3D.
+
[[Fichier:shieldFinal.png|300px|center]]
Celle-ci avais les dimensions nécessaires.  
 
  
[[Fichier:pince_finale.jpg|200px]]
 
  
Je suis ensuite allé au fabricarium afin de visser le servo_moteur à la pince.
+
=<div class="mcwiki-header" style="border-radius: 15px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #ACACFC; vertical-align: top; width: 98%;">Séance Bonus - Objectifs : Souder sur le nouveau PCB</div>=
  
[[Fichier:visse_pince.jpg|200px]] [[Fichier:fixation_pince.jpg|200px]]
+
Nous sommes revenus ce mardi pour travailler de nouveau en autonomie. En arrivant les PCB n'étaient pas là. Nous avons donc commencé par souder les phototransistors sur les petits PCB prévus à cet effet.
  
+
[[Fichier:Pcb_avec_led.jpg|200px|center]]
'''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 ce temps, j'ai récupéré les supports que nous avions réimprimés pour les tester. Cette fois-ci, les supports correspondaient à nos attentes. les petits PCB pour les phototransistors peuvent prendre places dans les supports. La fente, auparavant, trop fine est maintenant à la bonne taille.
Pendant que Nicolas essayait de résoudre le problème, de mon côté je suis allée récupérer 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.  
 
  
[[Fichier:test_support_SM.jpg|200px]] [[Fichier:test_support_led.jpg|200px]]
+
[[Fichier:Support_led.jpg|200px|center]]
  
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.  
+
Pour ce qui est du servomoteur, j'avais agrandit les bords censés le bloquer. En modélisant, j'ai oublié d'enlever une partie des bords et le servomoteur ne rentre pas. Nicolas a donc découpé, à la scie, la partie en trop.
  
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 n'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é assez 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.
+
[[Fichier:Support_SM_coupe.jpg|200px|center]]
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)'''
+
Maintenant notre servomoteur est calé et ne bougera pas lorsqu'il activera la pince. Nous avons également programmer notre servomoteur.
  
'''Objectifs''' : Souder sur le nouveau PCB
+
[[Fichier:PrgServoMoteur.png|200px|center]]
  
Nous sommes revenus ce mardi pour travailler de nouveau en autonomie. En arrivant les PCB n'étaient pas là. Nous avons donc commencé par souder les phototransistors sur les petits PCB prévus à cet effet.  
+
Dans la semaine, nous sommes revenus afin de coller les supports sur le robot et tester notre programme du servo-moteur. (Voir vidéo ci-dessous)
  
[[Fichier:pcb_avec_led.jpg|200px]]
+
[[Média:video_pince.mp4]]
  
Pendant ce temps, j'ai récupéré les supports que nous avions réimprimés pour les tester. Cette fois-ci, les supports correspondaient à nos attentes. les petits PCB pour les phototransistors peuvent prendre places dans les supports. La fente, auparavant, trop fine est maintenant à la bonne taille.
+
=<div class="mcwiki-header" style="border-radius: 15px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #ACACFC; vertical-align: top; width: 98%;">Séance 19 (18 avril) - Objectifs : Modifications sur le robot</div>=
  
[[Fichier:support_led.jpg|200px]]
+
Pendant l'interruption pédagogique j'ai (Nicolas) 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 quasiment inutilisable en l'état. Je parvenais cependant à le faire avancer (parfois) uniquement sur une pochette de couleur, une fois sur le parquet il s’arrêtait.
  
Pour ce qui est du servomoteur, j'avais agrandit les bords censés le bloquer.En modélisant, j'ai oublié d'enlever une partie des bords et le servo-moteur ne rentre pas.Nicolas a donc découpé, à la scie, la partie en trop.
+
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ées étaient encore une fois assez aléatoire mais plus grande (ici 8000 contre 150 avant). Nicolas a également entouré les capteurs de scotch pour les protéger de la lumière extérieure qui faussait les résultats.
  
[[Fichier:support_SM_coupe.jpg|200px]]
+
[[Fichier:Voile_capt_coul.jpg|200px|center]]
  
Maintenant notre servomoteur est calé et ne bougera pas lorsqu'il activera la pince.  
+
La fin de la séance nous a également permis de commencer à programmer les phototransistors.
  
[[Fichier:support_avec_SM.jpg|200px]]
 
  
 +
=<div class="mcwiki-header" style="border-radius: 15px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #ACACFC; vertical-align: top; width: 98%;">Séance 20 (25 avril) - Objectifs : programmation des phototransistors</div>=
  
Dans la semaine, nous sommes revenu afin de coller les supports sur le robot.  
+
Durant cette séance, notre but était de faire fonctionner notre code des capteurs infrarouge. Au bout de plusieurs tentatives échouées, nous avons remarqué que les résistances utilisaient n'étaient pas les bonnes. Alors que nous pensions avoir bien mis des 2200 Ohm celles sur nos circuit étaient soit plus grosse soit plus faible. Erreur dû à une mauvaise lecture du code couleur (erreur de débutants…). Nicolas est donc allé chercher de nouvelles résistances, 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ésistances retirées, nous avons pu soudé les nouvelles.
  
[[Fichier:robot_fini.jpg|200px]]  [[Fichier:robot_fini1.jpg|200px]]
+
Pendant que je rédigeais le Wiki, Nicolas a de nouveau testé le programme des phototransistors avec les nouvelles modifications. Le résultat était plus concluant qu'avant. Les valeurs retournées semblaient plus cohérentes. Après avoir fait ce test sur les capteurs infrarouges, il a fallu l'ajouter au programme principal. Une fois les modifications faites, il fallait de nouveau le tester pour vérifier que tout fonctionnait. Nous nous sommes rendu compte que la pince ne se baissait pas complètement, il fallait donc modifier certaines valeurs dans le programme pour régler ce problème. Après modification le robot baissait bien la pince en présence de la balle uniquement.
  
'''Séance 19 (18 avril)'''
+
Après de nouvelles modification le robot parvenait à suivre la balle pour ensuite l’attraper.
  
'''Objectifs: Modifications sur le robot'''
 
  
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.
+
=<div class="mcwiki-header" style="border-radius: 15px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #ACACFC; vertical-align: top; width: 98%;">Séance 21 (2 mai) - Objectifs : Finir les programmes</div>=
  
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).
+
Pour cette dernière séance, notre but était de faire avancer correctement notre robot en fonction de la position de la balle et de la capturer. Nous avons commencé par lancer notre programme pour analyser les différents problèmes du robot. Premièrement, les roues tournaient dans des sens opposés. Comme si un obstacle était constamment devant lui. Il s’est avéré qu’un faux contact était présent au niveau du capteur ultrason et qu’une petite pichenette sur le nez de celui-ci lui remettait les idées en place.
Nicolas à également entouré les capteurs de scotch pour les protéger de la lumière extérieure qui faussait les résultat.
 
  
[[Fichier:voile_capt_coul.jpg|200px]]
+
Nous avons ensuite essayé d’optimiser la réception infrarouge notamment en mettant du scotch bleu sur les phototransistors pour diminuer les parasites de la lumière ambiante. Cette technique nous donnait des valeurs plus faibles mais pas plus fiables, ils ont donc été retirés.
 
La fin de la séance nous a également permis de commencer à programmer les phototransistors.
 
  
 +
[[Fichier:Voile_capteur.jpg|200px|center]]
  
'''Séance 20 (25 avril)'''
+
=<div class="mcwiki-header" style="border-radius: 15px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #ACACFC; vertical-align: top; width: 98%;">Fin du projet</div>=
  
'''Objectifs: programmation des phototransistors '''
+
A ce jour, notre robot est capable de détecter la balle, d'avancer en sa direction et de la capturer. Cependant il ne la détecte que sur de courte distance. Il faudrait pouvoir optimiser la distance de détection pour augmenter celle-ci.
  
Durant cette séance, notre but était de faire fonctionner notre code des capteur infrarouge.
+
Il est aussi capable de s'arrêter lorsqu'il rencontre un obstacle et de le contourner.  
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ésistances, 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. Les valeurs retournées semblaient plus cohérentes.
+
Malheureusement, nous avons manqué de temps pour pouvoir arriver au but final qui était principalement de communiquer avec les autres robots. En effet, nous n'avons pas su connecter le module Xbee qui nous aurait permis de communiquer avec les autres robots.
Après avoir fait ce test sur les capteurs infrarouges, il a fallu l'ajouter au programme principal. Une fois les modifications faites, il fallait de nouveau le tester pour verifier que tout fonctionnait.
+
Nous nous sommes rendu compte que la pince ne se baissait pas complètement, il fallait donc modifier certaines valeurs dans le programme pour régler ce problème.
+
De plus, nous avions fait le choix d'utiliser trois capteurs couleurs mais pas de capteur de ligne pour se repérer sur le terrain. Cependant, les capteurs couleurs donnant des valeurs très aléatoires nous n'avons pas réussi à avoir un suivit de ligne correct. Pour améliorer ce point l'idée serait donc de remplacer les capteurs couleurs par des capteurs de lignes. Nous pourrions éventuellement conserver un capteur couleur. En effet, les lignes ayant des couleurs différentes pour des usages différents, détecter la couleur pourrait être un plus.
(Moreau doit complèter avec les infrarouge)
 
 
 
'''Séance 21 (2 mai)'''
 
 
 
'''Objectifs: Finir les programmes'''
 
 
 
Pour cette dernière séance, notre but était de faire avancer correctement notre robot en fonction de la position de la balle et de la capturer.
 
Nous avons commencé par lancer notre programme pour analyser les différents problèmes du robot. Premièrement, les roues tournaient dans des sens opposés. (Moreau dit ce que t'as fait parce que la il est tard et je suis pas inspirée gros!)
 
 
 
[[Fichier:voile_capteur.jpg|200px]]
 
 
 
 
 
'''Fin du projet'''
 
  
A ce jour, notre robot est capable de détecter la balle, d'avancer en sa direction et de la capturer. Il est aussi capable de s'arrêter lorsqu'il rencontre un obstacleet de le contourner.
+
Ce projet nous aura permis de travailler en groupe, de développer notre autonomie mais également d'acquérir de nouvelles connaissances. Nous avons ainsi découvert les logiciels Fritzing (réalisation de pcb) et Freecad (dessin en 3D). Ce projet nous également permis de comprendre comment faire interagir différents capteurs avec un ordinateur (Arduino).
Malheuresement, nous avons manqué de temps pour pouvoir arriver au but final.
 
Nous n'avons pas su connecter le Xbee qui nous aurait permit de communiquer avec les autres robots, et notre robot ne suit pas les lignes.
 

Version actuelle datée du 20 mai 2016 à 14:48


Vidéo HD

Sommaire


Introduction :

Le projet réalisé par l’ensemble du groupe 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.


Carnet de bord :

Séance 1 (18 janvier 2016) - Objectifs : Choix du robot à confectionner, montage du robot

Après la présentation du projet à réaliser et les instructions des professeurs, nous nous sommes tous regroupés afin de choisir les robots. Sachant qu’il fallait plus de robots joueurs que de robots ramasseurs, chaque groupe a choisi le robot qu'il préférait programmer.

En ce qui nous concerne, nous avons choisi un robot ramasseur. Ensuite, nous avons dû choisir le châssis de notre robot. Deux options s’offraient à nous : un robot 2 ou 4 roues motrices. Nous avons pensé que 2 roues suffiraient pour notre robot ramasseur qui n’a pas besoin d’une . De plus, il nous a semblé qu’il serait 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. De cette manière nous pourront connaître leurs dimensions exactes et pourrons les réutiliser ultérieurement si besoin, et cela sans être obligé de démonter le robot.

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.


Conctru1.jpg
Contru2.jpg
Constru3.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 ArduinoMega 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

L’un des composant les plus important du robot est le capteur ultra-son. C’est ce dernier qui permettra au robot de détecter des obstacles devant lui et ainsi de les éviter. Nous avons donc choisi de programmer ce composant dès le début.

US.jpg

N'ayant quasiment 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 en imbriquant les fonctions les unes dans les autres. 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 connecter à 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 a 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 capteur.

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.

Nous avons voulu consacrer cette séance à programmer un autre composant du robot. La première étape étant de pouvoir connecter le contrôleur moteur et les capteurs couleurs à l’Arduino. Pour ce faire nous avons dû commencer par souder les Pin de connections à chacun de ces composants (capteurs couleurs (x3) et contrôleur moteur).

Capteur couleur.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 pas été fructueuses. Il semblerait que ce capteur couleur soit relativement récent et la documentation le concernant n’est pas très abondante.

Séance 4 (28 janvier) - Objectifs : Améliorer la programmation du capteur ultrason

Lors de cette séance nous voulions améliorer notre programme pour le capteur ultrason. Cependant l’ayant codé sur un autre PC et n’ayant pas sauvegardé le programme sur une clé USB personnelle, nous n'avons pas pu le récupérer. Il a donc fallu tout recommencer à zéro. Nous avons refait des recherches pour le codage. Nous avons finalement retrouvé le même programme que nous avons pu améliorer l’ayant préalablement étudié. A la fin de la séance, notre programme fonctionnait et les valeurs étaient plus précises que la dernière fois. De plus, nous avons ajouté au programme de l'ultrason, un code qui permet au robot d'éviter un obstacle lorsqu'il en détecte un.

PrgUS.png

Séance 5 (1er février) - Objectifs : Montage du capteur ultrason sur le robot et interaction avec les moteurs.

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.

Test US.jpg

Nous avons ensuite tester nos programme. Nous pouvons voir le résultat dans les vidéos ci_dessous.

Média:video_US.mp4 Média:video_US2.mp4

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 connaître directement l’action qu’à notre programme sur les moteurs. De nombreuses recherches internet ont été réalisées 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.

PrgMoteur1.png
PrgMoteur2.png
PrgMoteur3.png


Les idées pour que les moteurs interagissent avec les capteurs couleurs et le capteur ultra-son se mettaient également en place dans nos esprits.

Séance 6 (4 février) - Objectifs : Utilisation des capteurs couleurs et réflexions sur la conception de la pince.

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

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 quasiment 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. Programme qui été en fait fournis par le constructeur pour servir d’exemple . 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 tous les méandres tout de suite et il faudra plusieurs séances avant de pouvoir l’intégrer correctement à notre programme principal.

PrgCouleur1.png
PrgCouleur2.png

Pendant ce temps, 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. Nicolas s'est occupé de la conception du PCB et moi je réfléchissais à celle de la pince. Celle-ci permettra à notre robot de ramasser la balle et à la ramener 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'une sphère en forme de cuillère reliée à un bras (qui servirait de levier), suffirait à capturer la balle et à la faire rouler jusqu'au centre du terrain. Pour réaliser cela, nous utiliserons l'impression 3D. 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 : Utilisation 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 photodiode infrarouge nous aurions 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 (qui vraisemblablement sera devant lui) et d'aller la chercher. C'est pourquoi nous avons choisi 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). Une fois que nous avons su où positionner les capteurs et combien en placer, il a fallu les programmer. Nous avons réalisé les tests à l'aide de la plaque d’essai. Au moment où nous avons dû brancher le capteur sur la plaque, nous nous sommes rendu compte que les pôles de ce capteur étaient 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 phototransistor, nous avons besoin d'une résistance pour éviter sa surcharge.

Resistance.jpg

Pour la choisir la bonne résistance nous nous sommes documenté sur internet et en avons retiré qu’une résistance de 2200 Ohm était la plus adaptée pour cet usage.

Ensuite, nous avons pu brancher puis programmer les phototransistors. Le problème est que notre programme n'a pas fonctionné correctement. En effet, nous pensions qu’une simple lecture des valeurs renvoyées par les photodiodes suffirait. Ce n’était visiblement pas le cas. Les valeurs étaient fixes et ne correspondaient à rien de ce que nous voulions. Ce problème était certainement dû à notre programme, mais pouvais aussi venir d’un facteur inconnu pour le moment.


Séance 9 (22 février) - Objectifs : Modifications du PCB et amélioration de la pince

Pour commencer cette séance nous avons tenté d'optimiser l'espace sur le robot en déplaçant certains composants. Ensuite, Nicolas s'est occupé des modifications à apporter au PCB pour l'améliorer, pendant que je me sensibilisais au logiciel Freecad pour la conception de la pince.

A la séance précédente Nicolas avait commencé à intégrer l’ensemble des composants au logiciel Fritzing pour faire un PCB global. Seulement après discussion avec les professeurs plusieurs choses posaient soucis :

- Les composants étaient disposés de manière aléatoire et les composants étaient connectés entre eux sans organisation (on ne se repérait pas du tout dans le modèle).

- Ne réaliser qu’un seul PCB pour l’ensemble des composants n’était pas une bonne idée car il a pour but de pouvoir souder les composants directement dessus et ainsi réduire les risques de faux contacts.

Il a donc été décidé de faire au moins deux PCB, l’un pour les capteurs qui viendra directement sous le robot, l’autre fera office de shield sur l’Arduino.

De mon côté, je m'occupais de la conception de la pince. Durant mon stage, j'avais utilisé le logiciel Solidworks, pour dessiner cette pince en 3D j'ai dû utiliser le logiciel Freecad. Ne sachant pas comment utiliser le logiciel, j'ai demandé à Erwan de m'expliquer les principales fonctions à utiliser. Jusqu'à la fin de la séance, je me suis familiarisée avec Freecad, j'ai essayé plusieurs fonctions du logiciel (comment créer une forme, comment découper une partie de la pièce ou encore comment fusionner plusieurs pièce). Malgré quelques difficultés, à la fin de la séance j'arrivais à faire ce que je voulais.


Séance 10 (25 février) - Objectifs : Conception de la pince et modification du PCB

Comme lors de la séance précédente, durant ces 2h, Nicolas s'occupait des modifications à apporter aux PCB pendant que je créais la pince sur Freecad.

Modification des PCB :

Nicolas avait voulu faire les PCB chez lui pour que nous puissions avancer plus vite. Mais après vérification par les professeurs il s’est avéré que les PCB ne pourraient pas être imprimés en l’état. En effet, Nicolas avait fait des pistes qui réalisaient des angles à 90°. Ces angles important posent 2 inconvénients :

- Le courant circule moins bien et se « heurte » aux angles importants.

- La gravure serait plus longue et abimerait d’avantage les fraiseuses.

Il a donc fallut reprendre l’ensemble des PCB pour modifier les angles et en faire des angles à 45°. Finalement nous avons pu envoyer les PCB à la gravure.

De mon côté, j'ai commencé à créer la pince en forme de cuillère. Mon but était de créer une demi sphère, de la creuser et de la relier à un bras levier comme ci-dessous. En modélisant, je n'arrivais pas à obtenir un résultat qui convenait, le bras n'était pas dans le même plan que la demi-sphère et n'était donc pas aligné avec elle. Au bout de plusieurs essais, notre pince ressemblait à celle que nous voulions.

Coquis pince.jpg

Séance 11 (29 février) - Objectifs : Modification PCB

Lors de la séance précédente, Nicolas avait envoyé les PCB pour les faire imprimer. Une fois les PCB récupérés, nous avons voulu souder les différents capteurs et contrôleur dessus. Concernant le PCB destiné à accueillir les capteurs couleurs et ultrason nous n’avons pas rencontré de problème (à première vue) et les composants y ont été soudé sans encombre. En revanche le PCB qui prendrait place sur l’Arduino posa davantage de soucis. En effet l’emplacement destiné à recevoir le contrôleur moteur était beaucoup trop large pour celui-ci. Le professeur nous a donc dit d’en faire un nouveau avec cette fois ci le bon composant. De plus, ne sachant pas qu’un plan de masse était préférable sur les PCB (notamment pour éviter à la graveuse de s’user précocement), nous n’en avions pas mis. Le nouveau PCB disposera donc d’un plan de masse.

PCB2.png
PCB1.png

Nicolas en a d'ailleurs profiter pour y inclure le support du module Xbee sur le Shield.


Séance 12 (3 mars) - Objectifs : Modification de la pince et programmation.

Durant cette séance, nous nous sommes demandé si notre pince était mécaniquement correcte. En effet, au niveau du levier il n'y a qu'un seul bras, lorsque celui-ci s’abaissera, l'enveloppe servant à capturer la balle sera-t-elle à la bonne hauteur ? Pour éviter ce problème, j'ai modifié la forme de la pince en ajoutant une partie au levier.

Avec ce système, nous étions sûr que notre pince serait au niveau de la balle. J'ai donc réalisé quelques modifications sur Freecad.

Croquis pince1.jpg

Jusqu'à présent l’ensemble de nos programmes se trouvaient dans des fichiers séparés et fonctionnaient individuellement. Nicolas a donc décidé de tous les regrouper dans un programme commun afin de les faire fonctionner de concert. Cette étape est très longue car nous souhaitons avoir le programme le plus propre possible. Il sera effectivement très long. Une bonne organisation de celui nous permettra de le modifier ultérieurement sans difficulté et de retrouver chacune des fonctions rapidement.


Séance 13 (7 mars) - Objectifs : Amélioration de la pince

La semaine passée, j'avais amélioré le système mécanique de notre pince. Aujourd'hui mon objectif était d'y apporter encore quelques modifications, de façon à utiliser le moins de matière possible. En effet, moins nous utilisons de matière, plus la pince sera légère et donc elle aura besoin de moins de puissance pour fonctionner. Nous sommes partit sur un système qui abaissera la pince quand le robot détectera la balle, et qui permettra par la suite de la faire rouler jusqu'au centre du terrain. Après réflexion, je me suis dit qu'un simple cercle suffirait à capturer la balle. De plus, si nous remplaçons la demi-sphère par un torus, nous utiliserons beaucoup moins de plastique. J'ai réalisé un croquis de ce que je voulais réaliser avec les côtes pour visualiser le final.

Croquis pince2.jpg

De son côté Nicolas a poursuivi la programmation et voulu faire des tests en connectant le PCB des capteurs sur l’Arduino. A la mise sous tension il a découvert que l’un des capteurs de couleurs ne fonctionnait pas. Après démontage de ce dernier et analyse du circuit il se rendit compte que la GND de ce même capteur n’était connectée à rien. Petit erreur de confection du PCB qu’il corrigea en soudant un fil électrique entre la Pin GND de ce capteur à celle du capteur voisin. Les tests ont ainsi pu reprendre leur cours et tout fonctionnait bien.


Séance 14 (10 mars) - Objectifs : Conception Pince

Comme la semaine précédente j'avais réalisé un croquis de ce que j'avais imaginé pour la pince, mon objectif lors de cette séance était de la modéliser. J'ai donc passé ma séance à la conception de la pince sur freecad. Pour cela, j'ai créé, individuellement, chaque pièce composant la pince puis je les ai assemblées les unes et les autres grâce à la fonction "union". Le résultat obtenu était celui attendu, cependant je me suis dit que l'on pouvait encore minimiser la quantité de plastique. De plus, notre pince mesurait près de 15cm, afin de réduire la taille de l'objet j'ai supprimer une partie de la pièce constituant le levier. Grâce à cela, notre pince mesure à présent 11cm. Nous avons également récupéré le PCB pour les différents capteurs (couleur, infrarouge..), mais Nicolas s'est rendu compte que les dimensions étaient gênantes. En effet, nous voulions placer ce PCB en dessous du robot, devant les roues avant. Cependant, en le positionnant à cet endroit il dépasserait beaucoup trop et gênerait par rapport aux dimensions de la pince que nous avons choisi. Pour résoudre ce problème, Nicolas a eu l'idée de découper le PCB, ainsi il s'emboîterait plus facilement sous le robot et dépassera moins à l’avant.

Decoupe pcb.jpg

Séance 15 (14 mars) - Objectifs : Programmation

Ayant fini de souder les composants sur le PCB des capteurs et ayant découpé le PCB à la forme adéquate, nous avons pu le fixer sur le robot. Une fois cette étape réalisée, Nicolas a fait les branchements. Après avoir branchés chaque composant, nous avons refait un test sur le capteur Ultrason. En lançant le programme, nous avons remarqué des erreurs dans les valeurs affichées. En effet, il retournait une distance nulle alors qu’aucun obstacle n’était devant. Nous avons alors pensé que le capteur était défectueux et l’avons remplacé. Après ce changement notre programme retournait enfin des valeurs correctes. Nicolas à quand même voulut tester le capteur que nous pensions défectueux en le directement à l’Arduino. Il par miracle le capteur « défectueux » ne l’était plus du tout. Le problème ne venait visiblement pas du capteur mais d’un faux contact entre le PCB et l’Arduino.

Enfin, lors de ces 2H, notre but était également de s'occuper des capteurs couleurs. Nous avons réalisé plusieurs tests, et après quelques tentatives échouées nous avons obtenu des résultats plus concluant. Notre programme retournait des valeurs qui nous semblaient cohérentes et exploitable.


Séance 16 (18 mars) - Objectifs : Finir le PCB

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.

Soudure.jpg
Soudure pcb controleur.jpg

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 contacts (voire 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 photodiodes ont été préalablement 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.

Dans un second temps, j'ai récupéré la pince que nous avons imprimée à l'imprimante 3D. Celle-ci avais les dimensions nécessaires.

Pince finale.jpg

Je suis ensuite allé au Fabricarium afin de visser le servomoteur à la pince.

Visse pince.jpg
Fixation pince.jpg


Séance Bonus - 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érer 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.

Test support SM.jpg
Test support led.jpg

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 n'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é assez 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.

ShieldFinal.png


Séance Bonus - 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à. Nous avons donc commencé par souder les phototransistors sur les petits PCB prévus à cet effet.

Pcb avec led.jpg

Pendant ce temps, j'ai récupéré les supports que nous avions réimprimés pour les tester. Cette fois-ci, les supports correspondaient à nos attentes. les petits PCB pour les phototransistors peuvent prendre places dans les supports. La fente, auparavant, trop fine est maintenant à la bonne taille.

Support led.jpg

Pour ce qui est du servomoteur, j'avais agrandit les bords censés le bloquer. En modélisant, j'ai oublié d'enlever une partie des bords et le servomoteur ne rentre pas. Nicolas a donc découpé, à la scie, la partie en trop.

Support SM coupe.jpg

Maintenant notre servomoteur est calé et ne bougera pas lorsqu'il activera la pince. Nous avons également programmer notre servomoteur.

PrgServoMoteur.png

Dans la semaine, nous sommes revenus afin de coller les supports sur le robot et tester notre programme du servo-moteur. (Voir vidéo ci-dessous)

Média:video_pince.mp4

Séance 19 (18 avril) - Objectifs : Modifications sur le robot

Pendant l'interruption pédagogique j'ai (Nicolas) 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 quasiment inutilisable en l'état. Je parvenais cependant à le faire avancer (parfois) uniquement sur une pochette de couleur, une fois sur le parquet il s’arrêtait.

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ées étaient encore une fois assez aléatoire mais plus grande (ici 8000 contre 150 avant). Nicolas a également entouré les capteurs de scotch pour les protéger de la lumière extérieure qui faussait les résultats.

Voile capt coul.jpg

La fin de la séance nous a é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 capteurs infrarouge. Au bout de plusieurs tentatives échouées, nous avons remarqué que les résistances utilisaient n'étaient pas les bonnes. Alors que nous pensions avoir bien mis des 2200 Ohm celles sur nos circuit étaient soit plus grosse soit plus faible. Erreur dû à une mauvaise lecture du code couleur (erreur de débutants…). Nicolas est donc allé chercher de nouvelles résistances, 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ésistances retirées, nous avons pu soudé les nouvelles.

Pendant que je rédigeais le Wiki, Nicolas a de nouveau testé le programme des phototransistors avec les nouvelles modifications. Le résultat était plus concluant qu'avant. Les valeurs retournées semblaient plus cohérentes. Après avoir fait ce test sur les capteurs infrarouges, il a fallu l'ajouter au programme principal. Une fois les modifications faites, il fallait de nouveau le tester pour vérifier que tout fonctionnait. Nous nous sommes rendu compte que la pince ne se baissait pas complètement, il fallait donc modifier certaines valeurs dans le programme pour régler ce problème. Après modification le robot baissait bien la pince en présence de la balle uniquement.

Après de nouvelles modification le robot parvenait à suivre la balle pour ensuite l’attraper.


Séance 21 (2 mai) - Objectifs : Finir les programmes

Pour cette dernière séance, notre but était de faire avancer correctement notre robot en fonction de la position de la balle et de la capturer. Nous avons commencé par lancer notre programme pour analyser les différents problèmes du robot. Premièrement, les roues tournaient dans des sens opposés. Comme si un obstacle était constamment devant lui. Il s’est avéré qu’un faux contact était présent au niveau du capteur ultrason et qu’une petite pichenette sur le nez de celui-ci lui remettait les idées en place.

Nous avons ensuite essayé d’optimiser la réception infrarouge notamment en mettant du scotch bleu sur les phototransistors pour diminuer les parasites de la lumière ambiante. Cette technique nous donnait des valeurs plus faibles mais pas plus fiables, ils ont donc été retirés.

Voile capteur.jpg

Fin du projet

A ce jour, notre robot est capable de détecter la balle, d'avancer en sa direction et de la capturer. Cependant il ne la détecte que sur de courte distance. Il faudrait pouvoir optimiser la distance de détection pour augmenter celle-ci.

Il est aussi capable de s'arrêter lorsqu'il rencontre un obstacle et de le contourner.

Malheureusement, nous avons manqué de temps pour pouvoir arriver au but final qui était principalement de communiquer avec les autres robots. En effet, nous n'avons pas su connecter le module Xbee qui nous aurait permis de communiquer avec les autres robots.

De plus, nous avions fait le choix d'utiliser trois capteurs couleurs mais pas de capteur de ligne pour se repérer sur le terrain. Cependant, les capteurs couleurs donnant des valeurs très aléatoires nous n'avons pas réussi à avoir un suivit de ligne correct. Pour améliorer ce point l'idée serait donc de remplacer les capteurs couleurs par des capteurs de lignes. Nous pourrions éventuellement conserver un capteur couleur. En effet, les lignes ayant des couleurs différentes pour des usages différents, détecter la couleur pourrait être un plus.

Ce projet nous aura permis de travailler en groupe, de développer notre autonomie mais également d'acquérir de nouvelles connaissances. Nous avons ainsi découvert les logiciels Fritzing (réalisation de pcb) et Freecad (dessin en 3D). Ce projet nous également permis de comprendre comment faire interagir différents capteurs avec un ordinateur (Arduino).