Binome2015-1 : Différence entre versions

De Wiki de bureau d'études PeiP
(Séance 2 : 21/01/16)
(Séance 2 : 21/01/16)
Ligne 29 : Ligne 29 :
  
 
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 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.
+
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.
  
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.
+
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.
  
 
==<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>==
 
==<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>==

Version du 15 mai 2016 à 18:14

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 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 le dessiner et l'ajouter au logiciel.

Séance 7 : 04/02/16

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

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 10 : 22/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 11 : 25/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 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.

A ajouter : photos de l'engrenage et de la pince (en 3D/2D et après impression)

Séance 12 : 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 on a vu que le servo-moteur a fait des tours complets et des demi tours sans qu'on 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 13 : 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 14 : 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 15 : 14/03/16

On commence à lier le fonctionnement des composants,

  • 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 : 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 première séance. ????????????????????????????????????????????????????????

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

Séance 16 : 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 17 : 21/03/16

Finalement on était loin d'en avoir fini avec fritzing,

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


Mais il fallait aussi relancer le PCB avec les capteurs. On s'est dit que quitte à relancer l'impression autant le modifier pour le rendre plus pratique.

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.

Séance 18 : 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).
+ image shield avant et après marge de sécurité

Comme prévu le PCB nous a permis d'enlever nombre de câbles et ,ô joie, notre robot fonctionne mieux qu'avant. Les fils devaient occasionner des pertes d'énergie, ou des courts-circuits.

Séance 19 : 25/04/16 Vide

Séance 20 : 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.

On a jouté, 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 (PHOTO !!!!!!!!!!!!!!!). 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. ??????????????????????????????? déjà écrit ailleurs !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Séance 21 : 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. ???????????? ????????????

Conclusion

A ajouter

  • 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