Binome2015-1

De Wiki de bureau d'études PeiP
Révision datée du 17 mai 2016 à 00:44 par Mdelapor (discussion | contributions) (Séance 18 : 21/03/16)

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

Le robot
Montage du châssis.

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.

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.

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.

Modèle:Infobox V3/Image


Le robot
Pince ouverte.
Le robot
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.

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 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.