Binome2015-1 : Différence entre versions

De Wiki de bureau d'études PeiP
 
(157 révisions intermédiaires par 4 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
= Tâches des éléments à réaliser =
+
<include nopre noesc src="/home/pedago/ppeip/include/video-Robot1-2015-iframe.html" />
 +
__TOC__
 +
<br style="clear: both;">
 +
=<div class="mcwiki-header" style="border-radius: 15px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #22bdbd; vertical-align: top; width: 98%;"> Introduction </div>=
  
Tâches du robot compétiteur :
+
Notre binôme est formé par Simon Feutrier et Maëva Delaporte.
* trouver la balle
 
* la récupérer
 
* la lancer dans le but
 
* trouver le but
 
* ne pas sortir du terrain
 
  
 +
Pour le BE IMA football de Peip, le but était de faire s'affronter deux robots compétiteurs, que l'un d'un des deux marque un but, puis un robot ramasseur viendrait prendre la balle et la déposer au milieu du terrain pour le match suivant.
  
= Matériel disponible =
 
  
Choix des composants du robot compétiteur:
+
Cette page wikipédia est comme un journal de bord où nous expliquons nos avancés et les problèmes rencontrés.
* un châssis deux roues
 
* un arduino MEGA
 
* un capteur ultrason
 
* une plaque d'essais
 
* capteur de couleur
 
* contrôleur (monte)
 
* phototransistor
 
  
 +
=<div class="mcwiki-header" style="border-radius: 15px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #22bdbd; vertical-align: top; width: 98%;"> Compte rendu des séances  </div>=
  
== Détection de la balle ==
+
==<div class="mcwiki-header" style="border-radius: 15px; padding: 10px; font-weight: bold; text-align: center; font-size: 80%; background: #EEEEFF; vertical-align: top; width: 99%;"> Séance 1 : 18/01/16 </div>==
* Phototransistor IR
 
* Position ?? (1x milieu / 2x côtés)
 
* Caches noirs devant et derrière pour éviter la réflexion
 
  
  
 +
Le projet nous a été présenté par les professeurs lors de cette séance. Après avoir écouter la liste des différentes facettes du BE, nous nous sommes mis d'accord avec le reste de la classe pour répartir équitablement les joueurs, les ramasseurs et également connaître qui ferait les buts et le terrain.
  
= Séances =
+
Dans notre binôme, nous avons choisi de travailler sur le robot compétiteur dont les tâches sont les suivantes :
 +
* Trouver la balle et le but grâce à l'Infrarouge
 +
* Récupérer et lancer la balle par le biais d'une pince à faire sois même
 +
* Ne pas sortir du terrain délimité par des lignes
 +
* Retourner à son "garage" pour ne pas interférer dans le travail du robot ramasseur
  
== Séance 1 ==
 
  
[[Fichier:12595991 1109848662389011 1297369555 n.jpg|vignette|alt=Le robot|left|Montage du châssis.]]
+
Le concept paraît simple et nous pensions que le travail à effectuer le serai également. Mais c'était une lourde erreur de sous estimer la tâche qui nous attendait alors.
  
Le projet nous a été présenté par les professeurs lors de cette séance. L'objectif est de créer un jeu de foot en utilisant la robotique.
+
==<div class="mcwiki-header" style="border-radius: 15px; padding: 10px; font-weight: bold; text-align: center; font-size: 80%; background: #EEEEFF; vertical-align: top; width: 99%;"> Séance 2 : 21/01/16 </div>==
Ce jeu sera composé de robot-joueurs qui vont devoir récupérer la balle et la tirer dans des buts également créés par nous.
 
Le jeu contiendra également des robots ramasseurs qui devront venir chercher la balle dans les buts et la remettre à sa position initiale.
 
Ces robots se déplaceront sur un terrain délimité par des lignes, qui devra aussi être construit par nos soins.
 
Nous devrons programmer et câbler nous même le robot ainsi que mettre en œuvre les différentes interactions avec les autres joueurs, le terrain et les buts.
 
De plus, tous les robots devront se replacer dans un "garage" à la fin de leur mission.
 
  
== Séance 2 ==
 
  
 
Durant cette séance, nous avons débuté le montage de la structure du robot.
 
Durant cette séance, nous avons débuté le montage de la structure du robot.
Le montage des pièces nous a pris beaucoup de temps car celles-ci ne s'imbriquaient pas parfaitement et que la notice n'était pas très claire.
+
Le '''montage du châssis''' nous a pris beaucoup de temps car celles-ci ne s'imbriquaient pas parfaitement et que la notice n'était pas très claire.
 
Nous avons monté le support des piles, les roues ainsi que soudé des fils sur les bornes des moteurs.
 
Nous avons monté le support des piles, les roues ainsi que soudé des fils sur les bornes des moteurs.
Pour finir, nous avons découvert le logiciel arduino en langage C qui assurera le bon fonctionnement des modules une fois transférer sur la carte.
 
  
== Séance 3 ==
+
Puis, nous avons découvert le '''logiciel Arduino''' en langage C qui assurera le bon fonctionnement des modules une fois transférés sur l'Arduino Mega.
  
Cette séance a été centrée le contrôleur.
 
Tout d'abord, nous avons soudé les broches sur le contrôleur puis nous avons étudier le processeur pour comprendre l'utilité des différents branchements pour bien câbler l'Arduino Mega avec ce composant. La difficulté résidait sur les différents types de connexion sur l'Arduino : broches analogiques, digitales, PWM, PWM ~, etc. D'un autre côté nous avons compris le fonctionnement de PWA, PWB pour contrôler la vitesse, A1O, A2IN pour le courant dans les roues...
 
Ensuite nous nous sommes fixé comme objectif de faire rouler le robot pendant cette séance.
 
Pour cela, nous avons travaillé sur le codage des moteurs par l'intermédiaire du contrôleur. Nous nous sommes beaucoup servi du site internet de Arduino entre-autres pour assimiler les différentes fonctions, bibliothèques d'Arduino.
 
A la fin de la séance nous pouvions moduler la vitesse du robot, inverser le sens mais aussi la direction du joueur.
 
L'objectif de nos prochaines séances est d'explorer et observer les composants dans le but de tout faire fonctionner ensemble.
 
  
== Séance 4 ==
+
[[Fichier:12595991 1109848662389011 1297369555 n.jpg|center||vignette|upright=1.6|Montage du châssis]]
 +
 
 +
==<div class="mcwiki-header" style="border-radius: 15px; padding: 10px; font-weight: bold; text-align: center; font-size: 80%; background: #EEEEFF; vertical-align: top; width: 99%;"> Séance 3 : 25/01/16 </div>==
 +
 
 +
Cette séance a été centrée le contrôleur, voici nos étapes :
 +
*Souder les broches sur le contrôleur puis
 +
*Comprendre et réaliser le câblage du contrôleur avec les moteurs et l'Arduino Mega
 +
**Il a fallu connaître les différents types de connexion sur l'Arduino : broches analogiques, digitales, PWM, PWM ~, etc
 +
**Cela nous a permis de comprendre le fonctionnement de PWA, PWB pour contrôler la vitesse, A1O, A2IN pour le courant dans les roues...
 +
 
 +
 
 +
Après les branchements, place au codage:
 +
*Nous avons travaillé sur le codage des moteurs par l'intermédiaire du contrôleur
 +
**Utilisation nécessaire du site internet de Arduino pour saisir les différentes fonctions et le codage Arduino
 +
 
 +
 
 +
Résultat, nous pouvions moduler la vitesse du robot, inverser le sens mais aussi la direction du joueur.
 +
 
 +
Pour les prochaines séances, nous avons décider de découvrir chaque composant un à un avant de les rassembler pour un programme final.
 +
 
 +
==<div class="mcwiki-header" style="border-radius: 15px; padding: 10px; font-weight: bold; text-align: center; font-size: 80%; background: #EEEEFF; vertical-align: top; width: 99%;"> Séance 4 : 28/01/16  Mission détecteur d'ultrason </div>==
 +
 
 +
Le détecteur d'ultrason permet au robot
 +
*d'éviter les obstacles comme les joueurs, les buts ou des objets étrangers au jeu
 +
*d'aider à trouver et attraper la balle
 +
 +
D'abord, nous avons soudé et branché du détecteur d’ultrason sur l'Arduino.
 +
Puis, à l'aide d'Arduino IDE, nous avons codé le capteur de sorte que le robot s’arrête lorsqu'il voit un obstacle à moins de 10cm de lui.
 +
 
 +
 
 +
Le câblage a été plutôt facile car il n'y avait que 4 broches.
 +
Cependant, le code a été cette fois plus difficile mais grâce a internet, nous avons pu utilisé la valeur de la tension aux bornes du détecteur proportionnelle à la distance de l'obstacle pour la transformer en une distance en centimètre de l'obstacle.
 +
 
  
Lors de ces 2 heures nous avons étudié le détecteur d'ultrason.
 
Celui-ci permettra au robot d'éviter les obstacles comme les joueurs, les buts ou des objets étranger au jeu.
 
A nouveau, nous avons procédé a la soudure et au branchement du détecteur d’ultrason sur l'Arduino.
 
Puis, à l'aide d'Arduino IDE, nous avons codé le capteur de sorte que le robot s’arrête de tourner lorsqu'il voit un obstacle à moins de 10cm de lui.
 
Sur ce composant le câblage a été plutôt facile car il n'y avait que 4 broches. Cependant, le code a été cette fois plus difficile car on ne récupérait pas tout de suite l'information sur la distance entre la voiture et l'objet, on avait tout d'abord la distance que parcourt l'onde pour aller et revenir au joueur.
 
Ce que nous obtenions était la valeur de la tension aux bornes du détecteur proportionnelle à la distance de l'obstacle. Grâce a internet, nous avons pu utilisé cette valeur pour la transformé en une distance en centimètre de l'obstacle.
 
 
Point important, la courbure des broches fait que le composant bouge sur la plaque et provoque donc des erreurs de mesures ce qui fausse la détection d'obstacles. Pour cela nous devons trouver un système pour fixer cet élément.
 
Point important, la courbure des broches fait que le composant bouge sur la plaque et provoque donc des erreurs de mesures ce qui fausse la détection d'obstacles. Pour cela nous devons trouver un système pour fixer cet élément.
  
== Séance 5 ==
+
==<div class="mcwiki-header" style="border-radius: 15px; padding: 10px; font-weight: bold; text-align: center; font-size: 80%; background: #EEEEFF; vertical-align: top; width: 99%;"> Séance 5 : 29/01/16 </div>==
  
Dans cette séance, c'est sur le détecteur de couleur, RGB sensor, que nous nous sommes penchés.
+
Le détecteur de couleur, RGB sensor,
Sur ce composant nous retrouvons une fois de plus les pins communs VIN, GROUND...
+
*découverte 1 : ce composant possédait des pins particuliers : SDA et SCl qui ne peuvent se brancher que sur des emplacements prévus à cet effet sur l'Arduino;
Ce composant possédait des pins particuliers : SDA et SCl qui ne peuvent se brancher que sur des emplacements prévus à cet effet sur l'Arduino.
+
*découverte 2 : le dernier pin utilisé était LED qui permet d'allumer la LED du composant pour ainsi mieux détecter la couleur.
Le dernier utilisé était LED qui permet d'allumer la LED du composant, dans l'optique de mieux détecter la couleur.
+
 
Pour ce composant c'est le professeur qui nous a aidé en nous montrant le programme pour connaître le "taux" de rouge, bleu et vert détecté par le capteur. En effet, le programme était beaucoup trop compliqué et aurait nécessité trop de connaissances et de temps pour le réaliser tout seul.
+
 
Nous avons donc dû télécharger un exemple depuis internet que nous avons modifié pour pour ne garder que la fonction de détection et d'affichage de la couleur qui nous intéressait.
+
Pour ce composant, le programme était beaucoup très compliqué donc, sous conseil de M. Redon, nous avons télécharger un exemple depuis internet que nous avons modifié pour pour ne garder que la fonction de détection et d'affichage de la couleur qui nous intéressait.
 
Lors des tests pour voir comment se comportait ce composant, nous avons remarqué que indépendamment de la couleur devant son capteur, il détectait plus de rouge que de bleu ou de vert.
 
Lors des tests pour voir comment se comportait ce composant, nous avons remarqué que indépendamment de la couleur devant son capteur, il détectait plus de rouge que de bleu ou de vert.
Pour la construction du terrain il faudrait donc éviter d'utiliser des obstacles, des lignes rouges.
+
Pour la construction du terrain il faudrait donc éviter d'utiliser des lignes rouges.
 +
 
 +
 
 +
En accord avec la séance 4, nous avons ajouté des broches sur le détecteur d'ultrason pour le maintenir fixe. Nous en avons aussi profité pour ajouter des broches et des "caches" thermiques sur les fils des piles et des moteurs pour les allonger et éviter de tirer dessus lors de leur connexion avec la plaque d'essai.
 +
 
 +
==<div class="mcwiki-header" style="border-radius: 15px; padding: 10px; font-weight: bold; text-align: center; font-size: 80%; background: #EEEEFF; vertical-align: top; width: 99%;"> Séance 6 : 01/02/16 </div>==
 +
 
 +
Le capteur de lignes noir et blanc,
 +
* câblage : il se branche sur un port analogique,
 +
* codage : utilisation de l'exemple déjà disponible sur le logiciel, ça a été relativement rapide à comprendre et à adapter à notre problème.
 +
 
 +
Point important : on a appris (à nos dépends) que le capteur doit être très près des ligne pour une meilleure optimisation : environ 3 mm.
 +
 
 +
Le code réaliser pendant la séance, nous permet simplement d'obtenir la valeur captée d'un seul capteur, il faut encore suivre les lignes à notre robot et à ajouter d'autres capteurs pour les virages.
 +
 
 +
==<div class="mcwiki-header" style="border-radius: 15px; padding: 10px; font-weight: bold; text-align: center; font-size: 80%; background: #EEEEFF; vertical-align: top; width: 99%;"> Séance 7 : 04/02/16 </div>==
 +
 
 +
Nous avons décidé de faire un programme pour le suivi de lignes.
 +
Pour cela, à l'avant de notre robot, nous avons fixé un capteur couleur et deux capteurs noir et blanc.
 +
 
 +
Première étape, nous avons relevé les valeurs seuils:
 +
* Nous avons remarqué que le capteur noir et blanc affichait une valeur supérieur à 700 quand il était sur une ligne noire et inférieure à 700 quand il ne l'était pas, sa valeur seuil vaut donc 700.
 +
* Pour le capteur RGB, c'est légèrement différent, il affiche 4 valeurs à l'écran : le taux de rouge, de vert, de bleu et la luminosité. Nous avons remarqué que la luminosité est ce qui varie le plus quand il passe du terrain à une ligne et nous avons donc choisi de travailler avec.
 +
 
 +
Deuxième étape, écrire les grandes lignes du programme avant de coder pour ne pas se mélanger les pinceaux:
 +
Notre idée était simple, tant que le RGB captait une ligne il avançait tout droit (les deux roues à la même vitesse) et quand l'un des capteurs noir et blanc situés de part et d'autre du RGB captait une ligne, le robot tournait jusqu'à ce que le RGB soit de nouveau au milieu
 +
 
 +
Ensuite, il a fallu le transcrire en code sur Arduino
 +
 
 +
==<div class="mcwiki-header" style="border-radius: 15px; padding: 10px; font-weight: bold; text-align: center; font-size: 80%; background: #EEEEFF; vertical-align: top; width: 99%;"> Séance 8 : 08/02/16 </div>==
 +
 
 +
La pince,
 +
* objectif : attraper la balle, la lancer dans le but.
 +
* réflexion : ajout d'un toit à notre pince pour cacher l'émission d'IR de la balle et capter plus facilement le but,
 +
* schématisation de notre idée : voir photo
 +
 
 +
==<div class="mcwiki-header" style="border-radius: 15px; padding: 10px; font-weight: bold; text-align: center; font-size: 80%; background: #EEEEFF; vertical-align: top; width: 99%;"> Séance 9 : 11/02/16 Fritzing </div>==
 +
 
 +
Le logiciel fritzing,
 +
* Objectif : réaliser un circuit imprimé pour alléger le câblage entre nos éléments, et diminuer les problèmes de faux contacts causés par l'ensemble des fils;
 +
* Première étape : sélectionner les différents composants et les relier entre eux par le biais d'une platine d'essai,
 +
** Problème : certains composants sont absents tels que le RGB sensor;
 +
** Solution : utilisation d'inkscape pour les dessiner et les ajouter au logiciel.
 +
 
 +
 
 +
[[Fichier:Vue rgb sensor.PNG|left||vignette|upright=1.6|Dessin du RGB Sensor sur inkscape]]
 +
[[Fichier:Vue schématique rgb.PNG|center||vignette|upright=1.6|Vue schématique du RGB sensor]]
 +
 
 +
==<div class="mcwiki-header" style="border-radius: 15px; padding: 10px; font-weight: bold; text-align: center; font-size: 80%; background: #EEEEFF; vertical-align: top; width: 99%;"> Séance 10 : 22/02/16 </div>==
 +
 
 +
Nous avons décidé de créer deux circuits imprimés distincts :
 +
* but : optimiser le circuit, réduire la quantité de câbles;
 +
* le shield composé des liaisons pour les moteurs, les piles, le contrôleur et le capteur ultrason; il sera situé en haut à l'arrière du robot;
 +
* l'autre PCB contiendra les liaisons pour 3 phototransistors et les 2 capteurs ligne; lui, sera plus bas et à l'avant de la voiture pour être au plus près de ses composants.
 +
 
 +
==<div class="mcwiki-header" style="border-radius: 15px; padding: 10px; font-weight: bold; text-align: center; font-size: 80%; background: #EEEEFF; vertical-align: top; width: 99%;"> Séance 11 : 25/02/16 </div>==
 +
 
 +
Le phototransistor infrarouge,
 +
* objectif : détecter la balle qui émet des ondes infrarouges grâce à ses LEDs;
 +
* câblage : difficile à comprendre, il faut récupérer l'information donné par le Phototransistor après le passage d'une résistance 2200 Ohms et surtout ne pas oublier de mettre en commun le ground du Phototransistor et celui de l'Arduino sinon les valeurs sont fausses;
 +
* émission : nous sommes passés du mode d'émission alternatif vers continu pour que les valeurs détectées soient toujours dans le même intervalle.
 +
 
 +
==<div class="mcwiki-header" style="border-radius: 15px; padding: 10px; font-weight: bold; text-align: center; font-size: 80%; background: #EEEEFF; vertical-align: top; width: 99%;"> Séance supplémentaire  </div>==
 +
 
 +
La pince : le retour,
 +
* Utilisation d'un logiciel de modélisation 3D blender
 +
** Nous avons vérifié toutes les dimensions, et évidé les parties inutiles pour alléger;
 +
** Nous avons mis un "plafond" pour que les détecteurs infrarouges ne détectent pas en même temps la balle et le but;
 +
* But : utiliser un servo-moteur qui sera fixé sur une des deux pinces pour faire tourner les deux,
 +
** La deuxième pince sera reliée à la première par l'intermédiaire d'engrenages;
 +
* Impression,
 +
** Impression 3D : pour la pince;
 +
** Découpe laser : pour les engrenages, plus précis et plus rapide.
 +
 
 +
 
 +
[[Fichier:PINCE_ouverte.png|left||vignette|upright=1.6|Pince ouverte]]
 +
[[Fichier:Engrenage laser.JPG|right||vignette|upright=1|Impression laser des engrenages]]
 +
[[Fichier:PINCE fermée.png|center||vignette|upright=1.6|Pince fermée]]
 +
 
 +
==<div class="mcwiki-header" style="border-radius: 15px; padding: 10px; font-weight: bold; text-align: center; font-size: 80%; background: #EEEEFF; vertical-align: top; width: 99%;"> Séance 12 : 29/03/16 </div>==
 +
 
 +
Sur cette séance nous avons terminé en grande partie le programme pour le robot suive les lignes :
 +
Nous avons rajouter des conditions et avons utilisé des intervalles de valeurs car le RGB sensor n'est pas très précis et n'envoie pas suffisamment de valeurs pour que le robot réagisse vite même sans délai.
 +
Nous avons également des problèmes pour faire les tests puisqu'une roue roule constamment plus vite que l'autre, le robot ne reste donc jamais droit.
 +
Une fois de plus nous avons fait un check up complet du robot : fils, soudures, composants, piles pour savoir ce qui peut dysfonctionné.
 +
 
 +
Une fois les différents problèmes résolu le programme fonctionne plus bien et le robot tourne correctement. malgré tout il reste certains cas ou le robot s'arrête dans le blanc et ne fait plus rien ou que le robot continu tout droit même s'il capte une ligne sur le côté et que le RGB est sur du blanc.
 +
 
 +
==<div class="mcwiki-header" style="border-radius: 15px; padding: 10px; font-weight: bold; text-align: center; font-size: 80%; background: #EEEEFF; vertical-align: top; width: 99%;"> Séance 13 : 03/03/16 </div>==
 +
 
 +
Le servomoteur,
 +
* câblage : utilisation d'un digital PWM sur l'Arduino Mega;
 +
* codage :  utilisation d'un programme déjà existant à notre disposition sur le logiciel,
 +
** problème : en téléversant le programme nous avons vu que le servo-moteur fait des tours complets et des demi tours sans qu'on ne sache pourquoi.
 +
 
 +
Il faudra régler le problème la prochaine séance, le visser à la pince et tester le bon fonctionnement des deux.
 +
 
 +
==<div class="mcwiki-header" style="border-radius: 15px; padding: 10px; font-weight: bold; text-align: center; font-size: 80%; background: #EEEEFF; vertical-align: top; width: 99%;"> Séance 14 : 07/03/16 </div>==
 +
 
 +
Les deux circuits imprimés (PCB) sur fritzing sont achevés :
 +
* Durant la séance : rectifications avant impression
 +
** Changement dans l'emplacement des composants pour otpimiser le PCB;
 +
** Les fils ne doivent pas se croiser;
 +
** Eviter les angles de droits et privilégier les angles à 45°
 +
 
 +
Objectif pour la prochaine séance, le montrer aux professeurs et leur demander comment les imprimer.
 +
 
 +
==<div class="mcwiki-header" style="border-radius: 15px; padding: 10px; font-weight: bold; text-align: center; font-size: 80%; background: #EEEEFF; vertical-align: top; width: 99%;"> Séance 15 : 10/03/16 </div>==
 +
 
 +
La fin de fritzing,
 +
* Le professeur a vérifié que les PCB étaient bien conformes à l'impression
 +
* Création d'un plan de masse en cuivre qui composera le fond de la plaque pour relier tous les Grounds ensemble;
 +
** Important, il a fallu enlever des éléments de la masse "orphelins" : c'est à dire qu'ils ne devraient pas apparaîtrent et doivent donc être supprimés.
 +
 
 +
 
 +
[[Fichier:Pcb shield.PNG|left||vignette|upright=1.6|Vu sur fritzing du PCB shield]]
 +
[[Fichier:Pcb capteurs.PNG|center||vignette|upright=1.6|Vu sur fritzing du PCB capteurs]]
 +
 
 +
==<div class="mcwiki-header" style="border-radius: 15px; padding: 10px; font-weight: bold; text-align: center; font-size: 80%; background: #EEEEFF; vertical-align: top; width: 99%;"> Séance 16 : 14/03/16 </div>==
 +
 
 +
Nous commençons à réunir dans un même programme les différents codes pour chaque composant,
 +
* codage d'un programme contenant le contrôle des moteurs, la détection des lignes et la détection des ultrasons;
 +
* problème : en plaçant le robot sur l'ancien terrain pour nos tests nous avons remarqué qu'il s'arrête régulièrement (le rythme correspond au délai entre chaque valeur de mesure de distance des obstacle). Cela n'est pas cohérent avec notre objectif de programmation, il faudra donc le modifier lors de la séance suivante.
 +
Il nous reste beaucoup de composants à ajouter mais la motivation est présente !
 +
 
 +
==<div class="mcwiki-header" style="border-radius: 15px; padding: 10px; font-weight: bold; text-align: center; font-size: 80%; background: #EEEEFF; vertical-align: top; width: 99%;"> Séance 17 : 17/03/16 </div>==
 +
 
 +
Réception du PCB shield pour l'Arduino,
 +
* Début de la soudure du PCB, ça prend plus de temps qu'il n'y paraît,
 +
* Problème, on a appris à la fin de la séance que ça ne fonctionnait pas car la marge entre le plan de masse et le circuit était trop faible;
 +
** Première solution : gratter les fils de cuivre au cutter mais ce n'est pas l'idéal;
 +
** Deuxième solution : il est possible de changer la marge de sécurité sur fritzing malheureusement on l'a appris après une sacré perte de temps.
 +
 
 +
==<div class="mcwiki-header" style="border-radius: 15px; padding: 10px; font-weight: bold; text-align: center; font-size: 80%; background: #EEEEFF; vertical-align: top; width: 99%;"> Séance 18 : 21/03/16 </div>==
 +
 
 +
Finalement nous étions loin d'en avoir fini avec fritzing,
 +
* Dernièrement nous avons eu un problème avec les marges de sécurité du plan de masse qui étaient trop petites, il a fallu les modifier;
 +
* Deuxième lancement d'impression du shield.
 +
 
 +
 
 +
Mais il fallait aussi relancer le PCB avec les capteurs. Nous avons décidé d'en profiter pour le modifier afin qu'il corresponde mieux à l'emplacement des différents composants :
 +
 
 +
On a choisit de le diviser :
 +
** Premier PCB capteurs IR : avec les phototransistors, les résistances, et le servo-moteur;
 +
** Deuxième PCB capteurs lignes : avec les deux capteurs ligne et le capteur couleur.
 +
 
 +
 
 +
[[Fichier:Pcb lignes.PNG|left||vignette|upright=1.6|Fritzing, PCB dédié aux capteurs lignes]]
 +
[[Fichier:Pcb ir.PNG|right||vignette|upright=1.6|Fritzing, PCB dédié aux phototransistors]]
 +
[[Fichier:Schéma pcb ir.PNG|center||vignette|upright=1.6|Fritzing,vu schématique du PCB dédié aux phototransistors]]
 +
 
 +
==<div class="mcwiki-header" style="border-radius: 15px; padding: 10px; font-weight: bold; text-align: center; font-size: 80%; background: #EEEEFF; vertical-align: top; width: 99%;"> Séance 19 : 18/04/16 </div>==
 +
 
 +
PCB shield, encore et toujours,
 +
* Réception du PCB shield qui viendra s’emboîter à l'Arduino,
 +
** Cette fois ci, la marge est bien suffisante pour souder sans faire trop de bourdes;
 +
* Rassemblement des broches et des composants nécessaires à la soudure;
 +
* Atelier soudure : souder chaque broche prend du temps surtout pour un débutant,
 +
** Point à soulever : Sur fritzing il n'était pas possible d'avoir le bon espacement entre les pattes du contrôleur moteur, il a donc fallu le souder de biais des deux côtés (image).
 +
 
 +
 
 +
[[Fichier:Pcb avant après.JPG|left||vignette|upright=1.6|Le PCB shield après et avant]]
 +
[[Fichier:Pcb soudé.JPG|center||vignette|upright=1.6|Presque entièrement soudé]]
 +
 
 +
 
  
 +
==<div class="mcwiki-header" style="border-radius: 15px; padding: 10px; font-weight: bold; text-align: center; font-size: 80%; background: #EEEEFF; vertical-align: top; width: 99%;"> Séance 20 : 25/04/16 Vide </div>==
  
En accord avec la séance 4, nous avons ajouté un intermédiaire entre la plaque et le détecteur pour éviter qu'il ne bouge beaucoup. Cependant, cette solution est temporaire car elle permet de réduire seulement un peu la mobilité. Dans cet objectif de fixation, nous en avons profité pour ajouter des broches et des "caches" thermiques sur les fils des piles et des moteurs pour les allonger et éviter de tirer dessus lors de leur connexion avec la plaque d'essai.
+
Nous avons décider de modifier notre pince, en effet elle était trop lourde pour le robot donc nous allons la réimprimer en diminuant le remplissage. Mais quitte à la ré-imprimer autant l'améliorer, nous avons donc intégré les engrenages directement sur la pince et l'un des engrenages, celui fixé au servo-moteur, sera plus épais pour être sûr du bon emboîtement des deux.
  
== Séance 6 ==
+
Nous avons donc lancé l'impression sur l'imprimante 3D de polytech mais l'impression a échoué. L'imprimante est HS, nous allons devoir attendre sa réparation pour réserver un autre créneau.
  
Cette fois, c'est l'utilisation du logiciel Fritzing qui a été privilégiée.
+
==<div class="mcwiki-header" style="border-radius: 15px; padding: 10px; font-weight: bold; text-align: center; font-size: 80%; background: #EEEEFF; vertical-align: top; width: 99%;"> Séance 21 : 02/05/16 Le drame</div>==
En effet, la première étape a été de sélectionner les différents composants et de les relier entre eux par le biais de la plaque d'essai.
 
Seulement, le problème ici était l'absence de certains composants tels que le RGB sensor. Nous avons donc utilisé inkscape pour le dessiner et l'ajouter au logiciel, ce qui nous a occupé un certain temps.
 
Grâce à Fritzing, nous allons pouvoir réaliser un circuit imprimé en vue d'alléger le câblage entre nos éléments. Il devrait également diminuer les problèmes de faux contacts causés par l'ensemble des fils.
 
  
== Séance 7 ==
+
En arrivant, nous avons lancé le programme du robot pour continuer les tests plus rien ne fonctionnait. Il a fallu passer en revu tous les composants, les câbles, les soudures, les piles pour essayer de trouver le problème.
  
== Séance 8 ==
+
Nous avons découvert que certaines soudures semblait laisser passer le courant de manière aléatoire et que les ramifications de câbles (pour des questions de longueurs) ont beaucoup de problèmes de faux contacts, sans doute au niveau des liaisons.
  
== Séance 9 ==
+
C'est là qu'est intervenu l'impression du second PCB, le PCB capteurs IR.
  
Pour compléter notre collection de capteurs, il fallait travailler sur le capteur de lignes noir et blanc. Avec seulement trois broches, il était facile de le connecter à l'Arduino. Il y avait les habituels Ground et VIN, ainsi que un câble pour la communication avec l'Arduino. Celui-ci se branche sur un port analogique.
+
Nous avons ajouté également, durant cette séance, un levier de contrôle ON/OFF. Pour cela nous avons souder un levier sur des pins pour ne laisser passer le courant que dans une certaine position du levier. La soudure à été difficile car la pièce est très petite et la pièce difficile d'accès mais le résultat fonctionne très bien.
Pour ce qui est du codage, on s'est servi de l'exemple déjà disponible sur le logiciel, ça a été relativement rapide à comprendre et à adapter à notre problème.
 
Cependant, au vu des valeurs obtenues on a pensé avoir un problème. On a ensuite appris que le capteur doit être très près des ligne pour une meilleure optimisation : environ 3 mm.
 
Il nous reste encore à faire suivre les lignes à notre robot et à ajouter d'autres capteurs pour les virages.
 
  
== Séance 10 ==
+
Nous avons donc décidé de nous concentré sur le PCB pour pouvoir éliminé le plus possible ce problème.
 +
Nous avons pu ainsi supprimer beaucoup de câbles et notamment brancher directement le contrôleur ce qui évitera tout problème de faux contact.
 +
Comme prévu le robot fonctionne mieux qu'avant. Les fils devaient donc en effet occasionner des pertes d'énergie, ou des courts-circuits.
  
Lors de cette séance nous nous sommes concentré sur la détection infrarouge. l'objectif est ainsi de détecter la balle qui émet dans ce domaine d'onde. Le circuit nous a pris un peu de temps car il est difficile à comprendre, en effet pour savoir ce que détecte la led on doit brancher le Ground sur l'Arduino pour connaître la valeur qu'elle renvoie : cela n'est pas intuitif. Également, nous avons dû effectuer quelques modifications sur la balle car elle clignotait ce qui signifie qu'elle n'avait plus assez de pile. De plus, nous sommes passés le mode d'émission d'onde d'alternatif vers continu pour que les valeurs détectées soient toujours dans le même intervalle.
+
==<div class="mcwiki-header" style="border-radius: 15px; padding: 10px; font-weight: bold; text-align: center; font-size: 80%; background: #EEEEFF; vertical-align: top; width: 99%;"> Séance 22 : 03/05/16 </div>==
  
== Séance 11 ==
+
Nos avons voulu pouvoir enfin testé correctement notre detection d'infrarouge ainsi que la pince. Pour cela nous avons décidé d'installer le modèle de pince qui est trop plat au niveau de l'engrenage en attendant de pouvoir imprimé la nouvelle si on le peut.
  
Pour optimiser au mieux le circuit et réduire la quantité de câbles, nous avons réfléchi pour le PCB et nous avons décidé de créer deux circuits imprimés distincts.
+
Cela a été compliqué car d'une part le professeur a remarqué que notre servo-moteur ne pouvait pas fonctionnait avec le programme car nous avions un servo-moteur continue. Après en avoir changé il a fallut réfléchir à fixer la pince. Le servo-moteur a été placé entre les deux plaques en plastique du robot à l'aide de barre en métal et la deuxième a été fixé a une pièce relié à une autre barre en métal à mis hauteur (même hauteur que l'autre morceau de pince) qui se fixe normalement sur le servo-moteur.  
* Tout d'abord le shield qui sera composé des liaisons pour le moteur, les piles, le contrôleur et le capteur ultrason. Il sera situé en haut à l'arrière du robot.
 
* L'autre PCB contiendra les liaisons pour 3  infrarouges et les 2 capteurs RGB. Lui, sera plus bas et à l'avant de la voiture pour être au plus près de ses composants.
 
  
== Séance Supplémentaire ==
+
Une fois que cela été terminé, nous avons réalisé tous les branchement servo-moteurs et détecteurs infra-rouges sur le PCB et l'Arduino.
 +
Lorsque nous avons testé notre programme 2 des 3 detecteurs IR gardait la valeur 0. Nous avons donc testé 1 à 1 tous les éléments pour savoir si le problème venait d'une mauvaise soudure, d'un composant grillé, d'un manque de batterie, etc. Sur les conseils du professeur nous avons ensuite débranché le servo-moteur pour voir si il n'y avait simplement pas trop de composant pour le courant accessible. En effet 2 des 3 leds IR ont commencé à correctement détecter la balle. Nous devons donc rajouter une série de pile pour envoyé suffisamment de courant ou de tension à tous les appareils. Pour cela nous avons récupérer un boitier de pile que nous avons soudé en parallèle avec les piles déjà installés.
  
Hors des séances, nous avons créé la pince qui servira à récupérer et lancer la balle. Nous avons créé cette dernière grâce à l'utilisation d'un logiciel de modélisation 3D blender. Nous avons fait en sorte de vérifier toutes les dimensions ainsi que d'évider les parties inutiles. De plus, nous avons créé un "plafond" pour que les détecteurs infrarouges ne détectent pas en même temps la balle et le but. Pour finir, nous comptons utiliser un servo-moteur qui sera fixé sur une des deux pinces pour les faire tourner. La deuxième pince sera reliée à la première par l'intermédiaire d'engrenages. Pour ceux-ci nous envisageons 2 techniques : l'impression 3D ou la découpe laser qui a l'avantage d'être plus précise et moins gourmande en temps mais qui ne peux imprimer des pièces qu'en 2 dimensions. Nous avons donc opté pour la découpe laser pour les engrenages, et l'impression 3D pour la pince.
+
Comme l'imprimante de Polytech était HS, nous nous sommes tournés vers Leroy Merlin mais notre pince ne passe pas, elle est trop grande. Nous sommes donc allé chez Top Office, l'impression est lancée.
  
A ajouter : photos de l'engrenage et de la pince (avant et après impression)
+
==<div class="mcwiki-header" style="border-radius: 15px; padding: 10px; font-weight: bold; text-align: center; font-size: 80%; background: #EEEEFF; vertical-align: top; width: 99%;"> Séance 22 : 09/05/16 </div>==
  
== Séance 12 ==
+
L'impression a TopOffice a échoué et nous ne pourrons donc pas avoir la nouvelle version de la pince.
 +
Heureusement nous avons une version "raté" qui devrait pouvoir suffire si nous arrivons à aligné les engrenages trop fins.
 +
Nous avons beaucoup d'objectifs sur cette séance :
 +
*Monter la pince
 +
*Faire un programme qui réunisse toutes les conditions pour que le robot s'adapte
 +
*Régler le problème des LED
  
Durant cette séance nous avons codé le servomoteur. Avant cela, il a évidemment fallu le brancher; 3 fils: Ground, VIN et un digital PWM.
+
Nous avons malheureusement eu encore des problèmes durant cette séance :
En ce qui concerne le code, nous avons utilisé un programme déjà existant à notre disposition sur le logiciel.
+
*le servo-moteur tire énormément de courant et empêche donc les autres composants de circuler correctement : nous ne pouvons pas testé la pince en même temps que la détection IR si le robot n'est pas brancher à l'ordinateur
Ce qui a été un peu plus délicat, c'était la modification du code. En effet, quand on a tenté de changer l'angle de rotation, le servo a fait des tours complets et des demi tours sans qu'on sache pourquoi. Mais après quelques minutes d'intense réflexion, on a réglé le problème et tout fonctionne très bien maintenant. Reste encore à le visser à la pince et tester le bon fonctionnement des deux.
+
*l’interrupteur s'est dessoudé nous devons donc enlever le PCB de l'Arduino et le ressouder ce qui est délicat
  
== Séance 14 ==
+
==<div class="mcwiki-header" style="border-radius: 15px; padding: 10px; font-weight: bold; text-align: center; font-size: 80%; background: #EEEEFF; vertical-align: top; width: 99%;"> Séance supplémentaire et vidéo </div>==
  
* Nous avons terminé les deux circuits imprimés (PCB) sur fritzing.
+
Nous sommes venues malgré tout le matin à 8 heures car il nous reste beaucoup de travail:
Nous avons bien avancé durant cette séance puisque nous avons terminé l'arrangement du deuxième circuit imprimé; c'est a dire que nous avons modifié l'orientation des composants ainsi quel a position des fils pour que aucun fils ne se croisent sur le PCB ainsi que tous soient bien relié au Ground, au VIN et également pour que les électrons puissent bien circuler en évitant de mettre des angles droits
+
*En fin de mâtiné tous les détecteurs IR fonctionnent enfin. Le problème vient en fait des branchement de fils femelles directement sur les pins des composants. Les pins doivent être légèrement plus petits que les fils mâles. Une fois que nous avons soudé des pins mâles sur des câbles mâles tous les détecteurs fonctionnent.
Ce circuit imprimé sera placé à l'avant du véhicule pour être au plus proche des led infrarouges et des détecteurs de couleurs et lignes.
+
*Sur l'après-midi, il nous reste peu de temps mais nous complétons le programme en testant enfin la balle. Malheureusement il y a encore des problèmes de "puissance". Nous devrions tous ressoudés sur le même modèle pour nos composants mais la salle est occupé pour des oraux et nous ne pouvons donc souder. Nous devons faire notre vidéo avec le véhicule branché en espérant qu'il y est suffisamment de courant.
Pendant ce temps, nous avons également testé le capteur d'intensité de gris qui permettra au robot de suivre les contours du terrain. Celui-ci fonctionne a l'inverse, c'est a dire qu'il s'arrête lorsqu'il voit une ligne mais il sera facile de le changer lors de la prochaine séance.
 
  
== Séance 15==
+
Vidéo :
 +
* un fil s'est débranché mais nous avons réussie a le faire tenir. Malgré tout à notre grand désespoir rien a fonctionné. Il ne suis pas la balle pour la capturer contrairement à nos tests sur la table. Nous avons également voulu montrer qu'il suit les lignes mais il n'a pas assez de courant pour ne tourner (ralentir une roue et en accélérer une autre bloque le robot).
  
Pendant cette séance nous avons enfin pu finalisé fritzing : en effet, le professeur a vérifié que les PCB étaient bien conforme pour la réalisation.
+
=<div class="mcwiki-header" style="border-radius: 15px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #22bdbd; vertical-align: top; width: 98%;"> Conclusion </div>=
De plus nous avons placé la masse, en cuivre, qui composera le fond de la plaque pour relier tous les Ground ensemble. Nous avons aussi du enlever des éléments de la masse "orphelins" : c'est a dire qu'il ne devrait pas apparaître et doivent donc être supprimé un par un.
 
  
Nous avons également ajouter sur notre robot le détecteur d'ultrason. Un programme contenant le contrôle des moteurs, la détection des lignes et la détection des ultrasons a ainsi été complété pour le robot. Un problème est survenue lorsque nous abvons placé le robot sur l'ancien terrain pour nos test : en effet le robot s'arrête régulièrement (le rythme correspond au délai entre chaque valeur de mesure de distance des obstacle). Cela n'est pas cohérent avec notre objectif de programmation, il faudra donc le modifier lors de la première séance.
+
Pour commencer, nous aimerions dire que nous sommes toujours rester 4 heures au lieu de 2 dans la salle pour travailler sur ce projet qui nous a passionné. De plus nous sommes venues d'autre jours et avons travaillé chez nous sur ce robot.
  
Ainsi le robot dispose désormais de plus de tâche et le programme est complété de manière régulière en ajoutant uniquement un composant à chaque fois pour mieux faire interagir les programmes sur Arduino ensemble.
+
Nous avons été très heureux de participer à ce projet concret qui nous a permis de découvrir beaucoup de domaines : l'électronique, la programmation de robot, la modélisation, l’infographie et même la mécanique.
 +
Nous avons particulièrement apprécié découvrir le langage de programmation pour la robotique, l'Arduino, les différents composants qui sont très utiles dans beaucoup d'applications, ainsi que la soudure et bien d'autres choses comme Inkscape en passant par Fritzing ou encore l'impression 3D.
  
==    ==
+
Ce projet a également été instructif puisque nous avons été confronté à beaucoup de problèmes qui n'étaient pas évident à résoudre étant donné le nombre de facteurs qui pouvaient rentrer en jeu. Nous avons également du être imaginatif et astucieux pour avoir une certaine ergonomie sur le robot et faire tenir les différents composants et surtout la pince.
 +
Nous avons également pu travailler en groupe puisque nous avons échanger pour se donner des astuces, des idées et faire en sorte que les différents robots soient cohérents.
  
 +
Malgré tout nous sommes vraiment déçu de ne pas avoir pu finir notre robot pour qu'il fonctionne pour la vidéo surtout pour qu'il respecte le cahier des charges et ainsi marquer des buts et sortir du terrain. Nous sommes convaincus qu'avec plus de temps nous aurions pu terminé ce projet qui nous a tenu à cœur.
  
A ajouter
+
Pour conclure ce BE nous sera très utile dans le futur quelque soit la spécialité électronique que nous rejoindrons. Nous avons ainsi acquis de nombreuses connaissance et nous garderons un bon souvenir de ce projet qui nous a donné un bonne aperçu de la spécialité IMA.
* Créer la pince en 3D + photos (+refaire pince)
 
* Réaliser et imprimer des engrenages en découpe laser + photos
 
* Réaliser les 2 PCB (+ soudures)
 
* Programme arduino suivre les lignes ( + vidéo ?)
 
* Problèmes rencontrés : pour la pince ( et solution apportées )
 
* différentes manières de procéder pour programme arduino et celle qu'on a choisi, pourquoi
 

Version actuelle datée du 19 janvier 2018 à 13:33


Vidéo HD


Introduction

Notre binôme est formé par Simon Feutrier et Maëva Delaporte.

Pour le BE IMA football de Peip, le but était de faire s'affronter deux robots compétiteurs, que l'un d'un des deux marque un but, puis un robot ramasseur viendrait prendre la balle et la déposer au milieu du terrain pour le match suivant.


Cette page wikipédia est comme un journal de bord où nous expliquons nos avancés et les problèmes rencontrés.

Compte rendu des séances

Séance 1 : 18/01/16

Le projet nous a été présenté par les professeurs lors de cette séance. Après avoir écouter la liste des différentes facettes du BE, nous nous sommes mis d'accord avec le reste de la classe pour répartir équitablement les joueurs, les ramasseurs et également connaître qui ferait les buts et le terrain.

Dans notre binôme, nous avons choisi de travailler sur le robot compétiteur dont les tâches sont les suivantes :

  • Trouver la balle et le but grâce à l'Infrarouge
  • Récupérer et lancer la balle par le biais d'une pince à faire sois même
  • Ne pas sortir du terrain délimité par des lignes
  • Retourner à son "garage" pour ne pas interférer dans le travail du robot ramasseur


Le concept paraît simple et nous pensions que le travail à effectuer le serai également. Mais c'était une lourde erreur de sous estimer la tâche qui nous attendait alors.

Séance 2 : 21/01/16

Durant cette séance, nous avons débuté le montage de la structure du robot. Le montage du châssis nous a pris beaucoup de temps car celles-ci ne s'imbriquaient pas parfaitement et que la notice n'était pas très claire. Nous avons monté le support des piles, les roues ainsi que soudé des fils sur les bornes des moteurs.

Puis, nous avons découvert le logiciel Arduino en langage C qui assurera le bon fonctionnement des modules une fois transférés sur l'Arduino Mega.


Montage du châssis

Séance 3 : 25/01/16

Cette séance a été centrée le contrôleur, voici nos étapes :

  • Souder les broches sur le contrôleur puis
  • Comprendre et réaliser le câblage du contrôleur avec les moteurs et l'Arduino Mega
    • Il a fallu connaître les différents types de connexion sur l'Arduino : broches analogiques, digitales, PWM, PWM ~, etc
    • Cela nous a permis de comprendre le fonctionnement de PWA, PWB pour contrôler la vitesse, A1O, A2IN pour le courant dans les roues...


Après les branchements, place au codage:

  • Nous avons travaillé sur le codage des moteurs par l'intermédiaire du contrôleur
    • Utilisation nécessaire du site internet de Arduino pour saisir les différentes fonctions et le codage Arduino


Résultat, nous pouvions moduler la vitesse du robot, inverser le sens mais aussi la direction du joueur.

Pour les prochaines séances, nous avons décider de découvrir chaque composant un à un avant de les rassembler pour un programme final.

Séance 4 : 28/01/16 Mission détecteur d'ultrason

Le détecteur d'ultrason permet au robot

  • d'éviter les obstacles comme les joueurs, les buts ou des objets étrangers au jeu
  • d'aider à trouver et attraper la balle

D'abord, nous avons soudé et branché du détecteur d’ultrason sur l'Arduino. Puis, à l'aide d'Arduino IDE, nous avons codé le capteur de sorte que le robot s’arrête lorsqu'il voit un obstacle à moins de 10cm de lui.


Le câblage a été plutôt facile car il n'y avait que 4 broches. Cependant, le code a été cette fois plus difficile mais grâce a internet, nous avons pu utilisé la valeur de la tension aux bornes du détecteur proportionnelle à la distance de l'obstacle pour la transformer en une distance en centimètre de l'obstacle.


Point important, la courbure des broches fait que le composant bouge sur la plaque et provoque donc des erreurs de mesures ce qui fausse la détection d'obstacles. Pour cela nous devons trouver un système pour fixer cet élément.

Séance 5 : 29/01/16

Le détecteur de couleur, RGB sensor,

  • découverte 1 : ce composant possédait des pins particuliers : SDA et SCl qui ne peuvent se brancher que sur des emplacements prévus à cet effet sur l'Arduino;
  • découverte 2 : le dernier pin utilisé était LED qui permet d'allumer la LED du composant pour ainsi mieux détecter la couleur.


Pour ce composant, le programme était beaucoup très compliqué donc, sous conseil de M. Redon, nous avons télécharger un exemple depuis internet que nous avons modifié pour pour ne garder que la fonction de détection et d'affichage de la couleur qui nous intéressait. Lors des tests pour voir comment se comportait ce composant, nous avons remarqué que indépendamment de la couleur devant son capteur, il détectait plus de rouge que de bleu ou de vert. Pour la construction du terrain il faudrait donc éviter d'utiliser des lignes rouges.


En accord avec la séance 4, nous avons ajouté des broches sur le détecteur d'ultrason pour le maintenir fixe. Nous en avons aussi profité pour ajouter des broches et des "caches" thermiques sur les fils des piles et des moteurs pour les allonger et éviter de tirer dessus lors de leur connexion avec la plaque d'essai.

Séance 6 : 01/02/16

Le capteur de lignes noir et blanc,

  • câblage : il se branche sur un port analogique,
  • codage : utilisation de l'exemple déjà disponible sur le logiciel, ça a été relativement rapide à comprendre et à adapter à notre problème.

Point important : on a appris (à nos dépends) que le capteur doit être très près des ligne pour une meilleure optimisation : environ 3 mm.

Le code réaliser pendant la séance, nous permet simplement d'obtenir la valeur captée d'un seul capteur, il faut encore suivre les lignes à notre robot et à ajouter d'autres capteurs pour les virages.

Séance 7 : 04/02/16

Nous avons décidé de faire un programme pour le suivi de lignes. Pour cela, à l'avant de notre robot, nous avons fixé un capteur couleur et deux capteurs noir et blanc.

Première étape, nous avons relevé les valeurs seuils:

  • Nous avons remarqué que le capteur noir et blanc affichait une valeur supérieur à 700 quand il était sur une ligne noire et inférieure à 700 quand il ne l'était pas, sa valeur seuil vaut donc 700.
  • Pour le capteur RGB, c'est légèrement différent, il affiche 4 valeurs à l'écran : le taux de rouge, de vert, de bleu et la luminosité. Nous avons remarqué que la luminosité est ce qui varie le plus quand il passe du terrain à une ligne et nous avons donc choisi de travailler avec.

Deuxième étape, écrire les grandes lignes du programme avant de coder pour ne pas se mélanger les pinceaux: Notre idée était simple, tant que le RGB captait une ligne il avançait tout droit (les deux roues à la même vitesse) et quand l'un des capteurs noir et blanc situés de part et d'autre du RGB captait une ligne, le robot tournait jusqu'à ce que le RGB soit de nouveau au milieu

Ensuite, il a fallu le transcrire en code sur Arduino

Séance 8 : 08/02/16

La pince,

  • objectif : attraper la balle, la lancer dans le but.
  • réflexion : ajout d'un toit à notre pince pour cacher l'émission d'IR de la balle et capter plus facilement le but,
  • schématisation de notre idée : voir photo

Séance 9 : 11/02/16 Fritzing

Le logiciel fritzing,

  • Objectif : réaliser un circuit imprimé pour alléger le câblage entre nos éléments, et diminuer les problèmes de faux contacts causés par l'ensemble des fils;
  • Première étape : sélectionner les différents composants et les relier entre eux par le biais d'une platine d'essai,
    • Problème : certains composants sont absents tels que le RGB sensor;
    • Solution : utilisation d'inkscape pour les dessiner et les ajouter au logiciel.


Dessin du RGB Sensor sur inkscape
Vue schématique du RGB sensor

Séance 10 : 22/02/16

Nous avons décidé de créer deux circuits imprimés distincts :

  • but : optimiser le circuit, réduire la quantité de câbles;
  • le shield composé des liaisons pour les moteurs, les piles, le contrôleur et le capteur ultrason; il sera situé en haut à l'arrière du robot;
  • l'autre PCB contiendra les liaisons pour 3 phototransistors et les 2 capteurs ligne; lui, sera plus bas et à l'avant de la voiture pour être au plus près de ses composants.

Séance 11 : 25/02/16

Le phototransistor infrarouge,

  • objectif : détecter la balle qui émet des ondes infrarouges grâce à ses LEDs;
  • câblage : difficile à comprendre, il faut récupérer l'information donné par le Phototransistor après le passage d'une résistance 2200 Ohms et surtout ne pas oublier de mettre en commun le ground du Phototransistor et celui de l'Arduino sinon les valeurs sont fausses;
  • émission : nous sommes passés du mode d'émission alternatif vers continu pour que les valeurs détectées soient toujours dans le même intervalle.

Séance supplémentaire

La pince : le retour,

  • Utilisation d'un logiciel de modélisation 3D blender
    • Nous avons vérifié toutes les dimensions, et évidé les parties inutiles pour alléger;
    • Nous avons mis un "plafond" pour que les détecteurs infrarouges ne détectent pas en même temps la balle et le but;
  • But : utiliser un servo-moteur qui sera fixé sur une des deux pinces pour faire tourner les deux,
    • La deuxième pince sera reliée à la première par l'intermédiaire d'engrenages;
  • Impression,
    • Impression 3D : pour la pince;
    • Découpe laser : pour les engrenages, plus précis et plus rapide.


Pince ouverte
Impression laser des engrenages
Pince fermée

Séance 12 : 29/03/16

Sur cette séance nous avons terminé en grande partie le programme pour le robot suive les lignes : Nous avons rajouter des conditions et avons utilisé des intervalles de valeurs car le RGB sensor n'est pas très précis et n'envoie pas suffisamment de valeurs pour que le robot réagisse vite même sans délai. Nous avons également des problèmes pour faire les tests puisqu'une roue roule constamment plus vite que l'autre, le robot ne reste donc jamais droit. Une fois de plus nous avons fait un check up complet du robot : fils, soudures, composants, piles pour savoir ce qui peut dysfonctionné.

Une fois les différents problèmes résolu le programme fonctionne plus bien et le robot tourne correctement. malgré tout il reste certains cas ou le robot s'arrête dans le blanc et ne fait plus rien ou que le robot continu tout droit même s'il capte une ligne sur le côté et que le RGB est sur du blanc.

Séance 13 : 03/03/16

Le servomoteur,

  • câblage : utilisation d'un digital PWM sur l'Arduino Mega;
  • codage : utilisation d'un programme déjà existant à notre disposition sur le logiciel,
    • problème : en téléversant le programme nous avons vu que le servo-moteur fait des tours complets et des demi tours sans qu'on ne sache pourquoi.

Il faudra régler le problème la prochaine séance, le visser à la pince et tester le bon fonctionnement des deux.

Séance 14 : 07/03/16

Les deux circuits imprimés (PCB) sur fritzing sont achevés :

  • Durant la séance : rectifications avant impression
    • Changement dans l'emplacement des composants pour otpimiser le PCB;
    • Les fils ne doivent pas se croiser;
    • Eviter les angles de droits et privilégier les angles à 45°

Objectif pour la prochaine séance, le montrer aux professeurs et leur demander comment les imprimer.

Séance 15 : 10/03/16

La fin de fritzing,

  • Le professeur a vérifié que les PCB étaient bien conformes à l'impression
  • Création d'un plan de masse en cuivre qui composera le fond de la plaque pour relier tous les Grounds ensemble;
    • Important, il a fallu enlever des éléments de la masse "orphelins" : c'est à dire qu'ils ne devraient pas apparaîtrent et doivent donc être supprimés.


Vu sur fritzing du PCB shield
Vu sur fritzing du PCB capteurs

Séance 16 : 14/03/16

Nous commençons à réunir dans un même programme les différents codes pour chaque composant,

  • codage d'un programme contenant le contrôle des moteurs, la détection des lignes et la détection des ultrasons;
  • problème : en plaçant le robot sur l'ancien terrain pour nos tests nous avons remarqué qu'il s'arrête régulièrement (le rythme correspond au délai entre chaque valeur de mesure de distance des obstacle). Cela n'est pas cohérent avec notre objectif de programmation, il faudra donc le modifier lors de la séance suivante.

Il nous reste beaucoup de composants à ajouter mais la motivation est présente !

Séance 17 : 17/03/16

Réception du PCB shield pour l'Arduino,

  • Début de la soudure du PCB, ça prend plus de temps qu'il n'y paraît,
  • Problème, on a appris à la fin de la séance que ça ne fonctionnait pas car la marge entre le plan de masse et le circuit était trop faible;
    • Première solution : gratter les fils de cuivre au cutter mais ce n'est pas l'idéal;
    • Deuxième solution : il est possible de changer la marge de sécurité sur fritzing malheureusement on l'a appris après une sacré perte de temps.

Séance 18 : 21/03/16

Finalement nous étions loin d'en avoir fini avec fritzing,

  • Dernièrement nous avons eu un problème avec les marges de sécurité du plan de masse qui étaient trop petites, il a fallu les modifier;
  • Deuxième lancement d'impression du shield.


Mais il fallait aussi relancer le PCB avec les capteurs. Nous avons décidé d'en profiter pour le modifier afin qu'il corresponde mieux à l'emplacement des différents composants :

On a choisit de le diviser :

    • Premier PCB capteurs IR : avec les phototransistors, les résistances, et le servo-moteur;
    • Deuxième PCB capteurs lignes : avec les deux capteurs ligne et le capteur couleur.


Fritzing, PCB dédié aux capteurs lignes
Fritzing, PCB dédié aux phototransistors
Fritzing,vu schématique du PCB dédié aux phototransistors

Séance 19 : 18/04/16

PCB shield, encore et toujours,

  • Réception du PCB shield qui viendra s’emboîter à l'Arduino,
    • Cette fois ci, la marge est bien suffisante pour souder sans faire trop de bourdes;
  • Rassemblement des broches et des composants nécessaires à la soudure;
  • Atelier soudure : souder chaque broche prend du temps surtout pour un débutant,
    • Point à soulever : Sur fritzing il n'était pas possible d'avoir le bon espacement entre les pattes du contrôleur moteur, il a donc fallu le souder de biais des deux côtés (image).


Le PCB shield après et avant
Presque entièrement soudé


Séance 20 : 25/04/16 Vide

Nous avons décider de modifier notre pince, en effet elle était trop lourde pour le robot donc nous allons la réimprimer en diminuant le remplissage. Mais quitte à la ré-imprimer autant l'améliorer, nous avons donc intégré les engrenages directement sur la pince et l'un des engrenages, celui fixé au servo-moteur, sera plus épais pour être sûr du bon emboîtement des deux.

Nous avons donc lancé l'impression sur l'imprimante 3D de polytech mais l'impression a échoué. L'imprimante est HS, nous allons devoir attendre sa réparation pour réserver un autre créneau.

Séance 21 : 02/05/16 Le drame

En arrivant, nous avons lancé le programme du robot pour continuer les tests plus rien ne fonctionnait. Il a fallu passer en revu tous les composants, les câbles, les soudures, les piles pour essayer de trouver le problème.

Nous avons découvert que certaines soudures semblait laisser passer le courant de manière aléatoire et que les ramifications de câbles (pour des questions de longueurs) ont beaucoup de problèmes de faux contacts, sans doute au niveau des liaisons.

C'est là qu'est intervenu l'impression du second PCB, le PCB capteurs IR.

Nous avons ajouté également, durant cette séance, un levier de contrôle ON/OFF. Pour cela nous avons souder un levier sur des pins pour ne laisser passer le courant que dans une certaine position du levier. La soudure à été difficile car la pièce est très petite et la pièce difficile d'accès mais le résultat fonctionne très bien.

Nous avons donc décidé de nous concentré sur le PCB pour pouvoir éliminé le plus possible ce problème. Nous avons pu ainsi supprimer beaucoup de câbles et notamment brancher directement le contrôleur ce qui évitera tout problème de faux contact. Comme prévu le robot fonctionne mieux qu'avant. Les fils devaient donc en effet occasionner des pertes d'énergie, ou des courts-circuits.

Séance 22 : 03/05/16

Nos avons voulu pouvoir enfin testé correctement notre detection d'infrarouge ainsi que la pince. Pour cela nous avons décidé d'installer le modèle de pince qui est trop plat au niveau de l'engrenage en attendant de pouvoir imprimé la nouvelle si on le peut.

Cela a été compliqué car d'une part le professeur a remarqué que notre servo-moteur ne pouvait pas fonctionnait avec le programme car nous avions un servo-moteur continue. Après en avoir changé il a fallut réfléchir à fixer la pince. Le servo-moteur a été placé entre les deux plaques en plastique du robot à l'aide de barre en métal et la deuxième a été fixé a une pièce relié à une autre barre en métal à mis hauteur (même hauteur que l'autre morceau de pince) qui se fixe normalement sur le servo-moteur.

Une fois que cela été terminé, nous avons réalisé tous les branchement servo-moteurs et détecteurs infra-rouges sur le PCB et l'Arduino. Lorsque nous avons testé notre programme 2 des 3 detecteurs IR gardait la valeur 0. Nous avons donc testé 1 à 1 tous les éléments pour savoir si le problème venait d'une mauvaise soudure, d'un composant grillé, d'un manque de batterie, etc. Sur les conseils du professeur nous avons ensuite débranché le servo-moteur pour voir si il n'y avait simplement pas trop de composant pour le courant accessible. En effet 2 des 3 leds IR ont commencé à correctement détecter la balle. Nous devons donc rajouter une série de pile pour envoyé suffisamment de courant ou de tension à tous les appareils. Pour cela nous avons récupérer un boitier de pile que nous avons soudé en parallèle avec les piles déjà installés.

Comme l'imprimante de Polytech était HS, nous nous sommes tournés vers Leroy Merlin mais notre pince ne passe pas, elle est trop grande. Nous sommes donc allé chez Top Office, l'impression est lancée.

Séance 22 : 09/05/16

L'impression a TopOffice a échoué et nous ne pourrons donc pas avoir la nouvelle version de la pince. Heureusement nous avons une version "raté" qui devrait pouvoir suffire si nous arrivons à aligné les engrenages trop fins. Nous avons beaucoup d'objectifs sur cette séance :

  • Monter la pince
  • Faire un programme qui réunisse toutes les conditions pour que le robot s'adapte
  • Régler le problème des LED

Nous avons malheureusement eu encore des problèmes durant cette séance :

  • le servo-moteur tire énormément de courant et empêche donc les autres composants de circuler correctement : nous ne pouvons pas testé la pince en même temps que la détection IR si le robot n'est pas brancher à l'ordinateur
  • l’interrupteur s'est dessoudé nous devons donc enlever le PCB de l'Arduino et le ressouder ce qui est délicat

Séance supplémentaire et vidéo

Nous sommes venues malgré tout le matin à 8 heures car il nous reste beaucoup de travail:

  • En fin de mâtiné tous les détecteurs IR fonctionnent enfin. Le problème vient en fait des branchement de fils femelles directement sur les pins des composants. Les pins doivent être légèrement plus petits que les fils mâles. Une fois que nous avons soudé des pins mâles sur des câbles mâles tous les détecteurs fonctionnent.
  • Sur l'après-midi, il nous reste peu de temps mais nous complétons le programme en testant enfin la balle. Malheureusement il y a encore des problèmes de "puissance". Nous devrions tous ressoudés sur le même modèle pour nos composants mais la salle est occupé pour des oraux et nous ne pouvons donc souder. Nous devons faire notre vidéo avec le véhicule branché en espérant qu'il y est suffisamment de courant.

Vidéo :

  • un fil s'est débranché mais nous avons réussie a le faire tenir. Malgré tout à notre grand désespoir rien a fonctionné. Il ne suis pas la balle pour la capturer contrairement à nos tests sur la table. Nous avons également voulu montrer qu'il suit les lignes mais il n'a pas assez de courant pour ne tourner (ralentir une roue et en accélérer une autre bloque le robot).

Conclusion

Pour commencer, nous aimerions dire que nous sommes toujours rester 4 heures au lieu de 2 dans la salle pour travailler sur ce projet qui nous a passionné. De plus nous sommes venues d'autre jours et avons travaillé chez nous sur ce robot.

Nous avons été très heureux de participer à ce projet concret qui nous a permis de découvrir beaucoup de domaines : l'électronique, la programmation de robot, la modélisation, l’infographie et même la mécanique. Nous avons particulièrement apprécié découvrir le langage de programmation pour la robotique, l'Arduino, les différents composants qui sont très utiles dans beaucoup d'applications, ainsi que la soudure et bien d'autres choses comme Inkscape en passant par Fritzing ou encore l'impression 3D.

Ce projet a également été instructif puisque nous avons été confronté à beaucoup de problèmes qui n'étaient pas évident à résoudre étant donné le nombre de facteurs qui pouvaient rentrer en jeu. Nous avons également du être imaginatif et astucieux pour avoir une certaine ergonomie sur le robot et faire tenir les différents composants et surtout la pince. Nous avons également pu travailler en groupe puisque nous avons échanger pour se donner des astuces, des idées et faire en sorte que les différents robots soient cohérents.

Malgré tout nous sommes vraiment déçu de ne pas avoir pu finir notre robot pour qu'il fonctionne pour la vidéo surtout pour qu'il respecte le cahier des charges et ainsi marquer des buts et sortir du terrain. Nous sommes convaincus qu'avec plus de temps nous aurions pu terminé ce projet qui nous a tenu à cœur.

Pour conclure ce BE nous sera très utile dans le futur quelque soit la spécialité électronique que nous rejoindrons. Nous avons ainsi acquis de nombreuses connaissance et nous garderons un bon souvenir de ce projet qui nous a donné un bonne aperçu de la spécialité IMA.