Binome2015-5

De Wiki de bureau d'études PeiP
Révision datée du 6 mai 2016 à 21:06 par Pribeiro (discussion | contributions) (Séance 5 : 29/01/16)
LE RONALDUINO


Introduction :

Le projet de cette saison consiste à réaliser un jeu de balle entre des robots que nous allons construire nous même. Notre binôme a choisi de travailler sur le robot joueur ainsi que les cages de buts. La clé pour l'aboutissement du projet consiste a un travail d'équipe afin de pouvoir mettre en commun les avancées de chacun, c'est dans ce but que nous tenons cette page régulièrement actualisée au fil des séances de cours et de recherche personnelle.


Objectifs principaux

Certaines contraintes vont devoir être respectées pour réaliser le robot joueur et la cage de but. Nous allons donc essayer de les respecter pour atteindre les objectifs fixés à la fin de la saison et avoir un matériel fonctionnel :

Pour le robot joueur :

  • Construction du châssis fourni à la première séance.
  • Disposition des capteurs sur le chassis (capteur IR, ultrason, de ligne)
  • Partie programmation :
    • Codes liés aux moteurs.
    • Code lié a la détection d'obstacles par UltraSon.
    • Code lié a la détection de la balle par Infrarouge.
    • Code lié a la détection des lignes.
    • Mise en place de la communication radio entre les robots et les cages de buts par module Xbee.
    • Rassembler tous les codes pour former le programme final.
  • Conception mécanique :
    • Réalisation du système de pince.
    • Réalisation du système de tir.
  • Réalisation du PCB pour réduire le nombre de fils et par conséquent les faux contacts.

Pour la cage de but :

  • Construction de la structure du but.
  • Fixation des capteurs IR et émetteurs IR sur la cage de but.
  • Fixation de l'afficheur sur la cage de but.
  • Réalisation du programme permettant d'émettre et recevoir un signal infra-rouge en pulser.

L'ordre à suivre pour les différentes étapes a été réfléchi et nous en sommes venu a la conclusion qu'il est primordial de réaliser les tâches dans l'ordre défini précédemment. Celui ci nous permettra de nous adapter progressivement au langage Arduino et de travailler chacun parallèlement en nous répartissant les tâches sur des étapes différentes pour avancer plus rapidement. La mise en commun de nos travaux aboutira ensuite à un robot joueur et des cages de buts fonctionnelles .

Descriptif des séances :

Dans un soucis de préserver une trace écrite du contenu de nos séances , nous tenons à jour cette section et décrivons brièvement le contenu de chaque jour. Le travail personnel n'est pas décrit dans cette section .

Séance 1 : 18/01/16

La première séance a principalement consisté à l'établissement du cahier des charges. Nous avons écrit une liste contenant le matériel nécessaire, les contraintes auxquelles sera soumis le robot ainsi que les différentes options possibles pour les résoudre. Nous avons décidé de débattre tout d'abord les contraintes mécaniques, nous avons donc dessiné un premier système de pince, ainsi qu'un système de tir. Les pièces nécessaires à ces systèmes seront imprimées en 3D ou coupées au laser. Nous avons également convenu que le châssis a 2 roues convenait mieux à notre projet, en raison de sa plus grande maniabilité.

Séance 2 : 21/01/16

La seconde séance nous a permis de construire le châssis 2 roues et de commencer à programmer sur l'Arduino Mega. Nous avons pu écrire l'algorithme permettant la mesure de la distance par ultrason ainsi que le contrôle global du servomoteur à utiliser grâce a la librairie associée.

Séance 3 : 25/01/16

  • Découverte du logiciel freecad.
  • Dessin des engrenages pour la pince du robot.

Séance 4 : 28/01/16

  • Impression 3D des engrenages grâce au logiciel Cura.
  • Dessin des barres dentées pour la pince grâce au logiciel Freecad.

Séance 5 : 29/01/16

  • Création d'une maquette en carton pour tester le système de récepteurs infrarouge avec un arduino UNO.
  • Codage du programme contrôlant les récepteurs infrarouge.

Séance 6 : 01/02/16

  • essai d'impression d'une première pince 3D. Cette impression fut peu concluante mais nous a permis de comprendre le fonctionnement de l'imprimante 3D, mieux maitriser le logiciel freecad pour dessiner les pièces et de voir quels etaient les problemes de notre système.
  • Installation des recepteurs infrarouge sur le robot.

Séance 7 : 04/02/16

  • Travail sur le problème des recepteurs infrarouges qui ne fonctionnent pas. Nous obtenons par moment des valeurs mais n'arrivons pas à faire marcher le systeme correctement.
  • Réalisation sur freecad d'une nouvelle pince qui doit être plus efficace. Nous attendons donc de pouvoir l'imprimer pour la tester.

Séance 8 : 08/02/16

  • Résolution du problème des recepteurs infrarouges ne fonctionnant pas normalement.

Nous avons du démonter tout le circuit pour rebrancher les recepteurs un par un et finalement, obtenir un résultat satisfaisant. Nous réglerons le programme pour localiser la balle durant une autre séance.

  • Nous avons commencé à utiliser les capteurs noir et blanc mais pour l'instant, ceci ne fonctionne pas bien sauf en collant les capteurs à la surface voulut.

Séance 9 : 11/02/16

Séance 10 : 22/02/16

  • Impression des derniers composants de la pince. Il ne manque plus que les taquets sur lesquels les roues dentées vont tourner. Nous les réaliserons en bois.

Séance 11 : 25/02/16

Début de la réalisation des 3 circuits imprimés a réaliser . Le premier concerne le contrôleur moteur , le module XBee ainsi que le capteur Ultrason . Un second PCB sera disposé de façon a concentrer les connections reliés aux capteurs infrarouges . Et enfin , un troisième sera placés sur le châssis inférieur du robot et servira a connecter les deux servomoteurs utilisés pour le système de tir et la pince , et les capteurs de lignes .

Nous avons également pu mettre en avant une contrainte supplémentaire concernant les capteurs infrarouges : ils renvoient une valeur même lorsque la balle n'est pas présente . Cette contrainte sera surmontée dans la prochaine séance .

Séance 12 : 03/03/16

La pince est fonctionnelle . Elle a été réalisée grâce a un système d'engrenages , un premier engrenage étant connecté a un servomoteur qui actionne le mouvement suivi par les 3 autres engrenages . Deux barrettes dentées sont reliés aux roues dentés des extrémités

Séance 13 : 07/03/16

Nous avons fini par contourner la contrainte des valeurs incohérentes des capteurs InfraRouge en réalisant un nombre conséquent d'acquisitions (500 acquisitions consécutives) , qui sont stockés dans un tableau . Afin de confirmer la présence de la balle et non d'une autre source infrarouge temporaire , on vérifie que lorsqu'une valeur est enregistrée, elle est suivi par une autre valeur plus ou moins élevée . Si c'est le cas , la balle est présente sinon , il s'agit de parasites . La prochaine séance sera entièrement consacrée a la détection de la balle et au PCB.

Séance 14 : 10/03/16

Cette séance à été entièrement consacrée a la détection de la balle . Nous avons pu mettre au point le système de détection de balle énoncé lors du résumé de la séance précédente : nous avons ainsi rencontrés quelques problèmes , liés dans certains cas à une sortie de la capacité de mémoire de l'arduino , soit a des valeurs erratiques dues a la lumière du jour . Le capteur situé à l'avant retournait ainsi continuellement une valeur (petite , mais assez pour faire croire au programme que la balle est présente ) .

Séance 15 : 14/03/16

Nous avons continués a mettre au point le programme consistant a détecter la balle . Quelques problèmes liés à la sortie de mémoire ont été réglés en réalisant moins de tours de boucles ( ce qui inclus une petite perte de précision ) . Concernant les PCB , nous avons finalement réalisés 3 PCB concernant respectivement les capteurs de lignes , à plaquer sur le châssis inférieur , les servomoteurs , à mettre prés de la pince , et finalement , le PCB principal à utiliser sur l'Arduino et contenant les composants principaux .

Séance 16 : 17/03/16

Le programme pour la détection de la balle est au point , il ne détecte que la balle pulsée a 600 Hz , et aucune source non pulsée . Il ne manque plus qu'à l'intégrer au programme principal . Le problème rencontré précédemment était simplement dû au fait que la balle n'était pas pulsée ( les autres binômes travaillant sans modulation de signal) . La gravure du PCB à quant a elle été interrompue en raison d'un problème de format , nous ne l'avons appris qu'à la fin de la séance , nous allons donc nous pencher dessus pour le faire valider à la prochaine séance .

Séance 17 : 21/03/16

Le problème du PCB était que les fichiers n'étaient pas au bon format . Nos enseignants nous ont expliqués comment soumettre le PCB sous un bon format , ce qui a été fait . Nous avons pu recevoir le PCB principal deux heures plus tard , les deux autres rencontrant toujours un problème dont la source reste à déterminer car le rendu sur le visualiseur Gerber ne montrer pas de problèmes pour nous (Le mail de refus précise un problème de drills ) . Nous avons terminés le programme visant a orienter le robot selon la puissance de la puissance du signal envoyé par la balle . Nous nous sommes alors penchés sur les capteurs de lignes , que nous avons entièrement finis lors de cette séance : le robot ne sort pas des zones délimités . A la rencontre d'une ligne noire , il recule puis change d'angle . Cependant un problème majeur a été rencontré : le rafraîchissement des valeurs n'est parfois pas assez rapide et si elle ne se fait pas alors que le robot traverse une ligne , elle n'est pas détectée . Une solution consiste a prendre un des capteurs et le placer a l'arrière du robot . Nous allons en discuter lors de la prochaine séance . Un autre problème à été mis en avant : du fait du nombre élevé de composants , si les piles ne sont pas entièrement chargés , l'Arduino ne tourne pas , et s'ils ont passés plus d'une heure à alimenter les tests , elles ne fonctionnement plus que par intermittence .

Séance 18 : 18/04/16

La séance à permis de régler quelques incertitudes avec les capteurs infrarouges . Les autres capteurs sont entièrement finalisé . Il ne manque que le PCB et le Xbee sur le robot . Le code régissant le fonctionnement des cages des buts a été mis en place . Il ne manque plus qu'à découper les cages .

Séance 19 : 25/04/16

Finalisation du but. Test de mise en place du Xbee. Sans succés car manque de temps. programmation permettant au robot de suivre une ligne pour rentrer au garage.

Séance 20 : 02/05/16

Dernière séance, nous avons essayé de régler les derniers problèmes dans le programme avant de tourner la vidéo. Cependant certains problèmes ont persisté et le système de détection de balle marchait encore moins bien que précédemment malheureusement.

Partie Mécanique :

La pince

Pour fabriquer cette pince, nous avons utilisés les logiciels Freecad pour le dessin et Cura, UP pour l'impression 3D.

Les objectifs de la pince

  • pouvoir s'écarter un maximum afin de faciliter la prise de la balle (pas trop non plus pour ne pas géner le déplacement du robot)
  • se refermer suffisamment pour saisir la balle (6.5cm)
  • Permettre au système de tir de lancer la balle lorsque la pince est fermée afin de guider la balle. De plus, le tir doit être assez puissant.
  • N'utiliser qu'un seul servomoteur

Les éléments de la pince

  • 2 serres
  • 4 roues dentées
  • 4 taquets servant d'axe de rotation aux roues
  • la structure principale de la pince.
Petite roue dentée
Grande roue dentée
Structure haute
Structure basse
Taquets
Serre



Le fonctionnement de la pince

Pour actionner la pince, il suffit de mettre en route 1 servo-moteur (numéro 1 sur le rendu final vu du dessus). Celui ci va alors faire tourner la grande roue dentée de gauche qui va elle même actionner le système d'engrenage composé de 2 petites roues dentées. Celles ci servent à écarter suffisamment les 2 grandes roues dentées ainsi qu'à les faire tourner dans le sens inverse l'une de l'autre. Ce système d'engrenage va alors faire tourner la grande roue dentée de droite. Les deux serres qui sont chacune reliée à une grande roue dentée par un système de crémaillère vont alors pouvoir se rapprocher ou s'écarter.

Les deux serres ont dû être décalée l'une de l'autre en hauteur afin de leur permettre de se rapprocher au maximum en largeur et de pouvoir saisir la balle (6.5cm). Pour décaler les deux serres en hauteur, il a donc fallut construire un système de taquets permettant d'échelonner les engrenages (bien visible sur le rendu final vu de dérrière).

Les problèmes rencontrés

  • les 2 serres, les 4 roues dentées ainsi que la structure principale ont pu être dessinées sur Freecad puis imprimées grâce à l'imprimante 3D du Fabricarium. Mais les 4 taquets n'ont pas pu être imprimés par imprimante 3D car ceux ci étaient trop fins et de forme cylindrique ce que l'imprimante a plus de mal à produire.

Les 4 taquets ont donc été réalisés en découpant un long clou de diamètre voulu (3.5mm) et un tuyau de diamètre légèrement supérieur.

découpe du clou
assemblage roue et axe de rotation
rendu final
  • L'espace calculé sur les serres était légérement insuffisant, il a donc fallut poncer afin de faire rentrer la structure basse dans la serre. Cette dernière coulissant le long de la partie entrant dans la serre.
  • Nous avons dû modifier plusieurs fois la taille des roues dentées afin d'obtenir l'écartement de pince maximum. Car plus les serres peuvent s'écarter, plus cela sera facile de saisir la balle.
  • Placer le moteur et le bloquer car si celui ci n'est pas bloqué, la roue ne tourne pas et c'est le moteur qui tourne sur lui même. Celui ci a donc été bloqué grâce à une enveloppe faite en contreplaqué puis peinte en noir pour l'esthétique.

Le système de tir

propulseur


Le système de tir est composé de:

  • un propulseur est constitué d'une crémaillère ainsi que d'une surface d'appui. De plus, un ressort a été ajouté dans l'espace vide de la crémaillère (numéro 3 sur le rendu final vu du dessus) afin d'augmenter sa puissance. Ce ressort est piégé entre deux zone d'appui (noté en vert sur le rendu final vu du dessus). Mais cela n'est pas visible car caché par une piece de couleur rose qui permet de garder le ressort droit lorsqu'il est compréssé.
  • un support permettant de relier la roue dentée et le propulseur.
  • une roue dentée dont certaines dents ont été supprimées.


Le tir se déroule donc en deux actions, on arme tout d'abord le tir en faisant tourner le moteur (moteur 1 sur le rendu final vu du dessus) jusqu'à la dernière dent de la roue grâce au moteur qui est collé à la roue dentée. Puis, on introduit la balle entre les pinces. Enfin, on fait un tour de roue afin de propulser la balle grâce au ressort se situant dans le propulseur. Le tour de roue permettant aussi de recharger le propulseur pour le prochain tir.

Le système de tir à été fixé sur la structure basse de la pince en essayant de faire dépasser la pince le moins possible du robot. En effet, celle ci pourrait géner le robot dans son déplacement.

La pince finale

Les moteurs ne sont pas présents sur la représentation graphique de la pince. Cela permet une meilleure visibilité et une meilleure compréhension du système. ceux-ci sont indiqué à l'aide de numéro sur le rendu final vu du dessus.

le rendu final :

vu de derriere
vu du dessus
vu de face


Réalisation du PCB

PCB Capteurs de lignes

La réalisation du PCB est une étape majeure de notre projet : elle permet d'éviter les nombreux faux contacts rencontrés sur la plaque d'essai , de rendre plus compacte la disposition des composants , mais surtout , sa réalisation nous a permis d'en apprendre plus sur les circuits imprimé et de nous familiariser avec la méthode à suivre . La première version du PCB n'était pas du tout fonctionnelle car nous ne savions pas que les fils ne peuvent pas se croiser , information qui nous a rapidement été donné et nous nous sommes empressés de réaliser un PCB fonctionnel . En une semaine , nous avions conclus notre premier PCB principal où étaient inclus tout les composants de notre robot . Nos enseignants nous ont proposés de faire plusieurs cartes afin d'alléger le nombre de fils sur le robot ( chose que nous tentons d'éviter , d'où le choix d'un PCB au lieu de la plaque d'essai ) . Le premier envoi de la carte a l'impression s'est soldé par une erreur due au format , en effet , nous n'avions remplacé que le format du drill par .drd et laissé les autres dans leurs format exporté de Fritzing . Cette erreur a retardée l'impression d'une semaine de plus .

PCB Capteurs de lignes

Nous avons fait vérifié nos fichiers par un visualiseur Gerber avant de procéder à la validation de la demande d'impression . Le viewer Gerber permet de s'assurer que notre PCB sera bien interprété par la machine en nous imprimant a l'écran les différent fichiers exportés un a un : ainsi , nous pouvons voir les positionnement des drills , des pastilles , le plan de masse et les connexions .

Les circuits imprimés ont ainsi été reçus très rapidement .

Programmation :

La partie programmation est le gros lot du projet . Utilisant une plateforme Arduino Mega , nous avons dû nous familiariser avec le langage arduino , qui consiste en une simplification du langage C . Nous avons donc suivi quelques cours dispensés par plusieurs plateformes d'éducation en ligne afin de connaître les principales subtilités du langage .

Contrôle du moteur

Le premier programme que nous avons réalisé fût celui du contrôle moteur . Chaque moteur étant connecté a une sortie PWM et digitale , nous avons dû renvoyer un signal analogique pour le contrôle de la vitesse ( valeur allant de 0 à 255 ) , l'entrée digitale étant utilisée pour faire tourner la roue dans le sens horaire ou trigonométrique . Le programme réalisé est très simple et répond a toute nos attentes :

 void avancer(int moteur,boolean direct,int vitesse)
 {
 
   //avance par defaut
   boolean montre = HIGH;
   boolean trigo = LOW;
   if(!direct){ //si boolean nul , recule
     montre = LOW;
     trigo = HIGH;
   }
 
   if(moteur == 1) //moteur 1 selon les branchement
   {
     digitalWrite(AIN1,montre); //AIN1 cntrol le sens du courant 
     digitalWrite(AIN2,trigo); //AIN2 aussi autre sens
     analogWrite(PWMA,vitesse); //control vitesse analogique pr garder une vitesse stable (asservis)
   }
   else
   {
     digitalWrite(BIN1,montre);
     digitalWrite(BIN2,trigo);
     analogWrite(PWMB,vitesse);
   }
     
 }
 //Tourner
 //tourner(0,75); //tourbne a fguahce
 //tourner(1,75); //tourne a droite
 void tourner(boolean sens,int vitesse)
 {
   if(sens)
   avancer(1,1,vitesse);
   avancer(2,1,vitesse);
   if(!sens)
   avancer(1,0,vitesse);
   avancer(2,0,vitesse);
   
 }
 void arret()
 {
   digitalWrite(STBY,LOW); //standby off
 }
 //démarrer
 void demarrer()
 {
   digitalWrite(STBY,HIGH); //standby on
 }

Nous avons donc divisé le tout en trois fonctions principales permettant de mettre en marche ou d'arrêter le moteur et d'avancer et une fonction secondaire utilisant les précédentes , permettant de tourner .

Détection d'obstacles par UltraSon

Nous nous sommes ensuite penchés sur la partie détection ultrason , qui s'est également traduite par un code simple mesurant la distance entre un objet et le capteur ultrason par émission d'impulsions :

 float distanceUltraSon(int trig,int echo)
 {
   digitalWrite(trig,HIGH);
   delayMicroseconds(10);
   digitalWrite(trig,LOW);
   unsigned long pulsation = pulseIn(echo,HIGH);/*duree de l'etat 
   car echo change si il recoit un signal */
   if(pulsation>3000)//signal perdu
     {
     return 0.0;
     }
   else{
     pulsation = pulsation/2; //division de laller retour
     
     float tmps = pulsation/1000000.0; //conversion en sec
     float dist = (tmps*340)*100.0; //formule de base en cm
     
     return dist;}   
 }

Recherche de la balle

Vient ensuite la partie de la détection de la balle InfraRouge par les phototransistor . Cette partie est celle qui nous a posée le plus de problèmes car nous les phototransistor renvoyaient continuellement des données brouillés par la lumière ambiante : il était donc impossible de différencier ces valeurs de celle de la balle ,sauf si celle-ci était vraiment très proche des capteurs . Dans un premier temps , nous avons reliés ces capteurs a une résistance de 330 Ohm et avons simplement utilisé un analogRead afin de recevoir la valeur renvoyée . Cette méthode fut rapidement abandonnée à cause du problème énoncé précédemment . Nous nous sommes alors penchés sur un programme plus complexe qui nous permettrait de capter simplement les signaux infrarouges pulsés . Le principe est le suivant : pendant un petit laps de temps , nous réalisons un grand nombre d'acquisitions et enregistrons les valeurs dans un tableau . Sachant que la balle est pulsée (supposons une pulsation a 600 Hz) , elle renvoie une valeurs chaque deux millisecondes environ dans le meilleur des cas , ce qui se traduit par une successions de valeurs positives et négatives . Le lumière renvoyée par le soleil par exemple , n'est quant a elle , pas pulsée , il s'agit donc de valeurs continues et très variables . Ainsi , notre programme vérifie si deux valeurs qui se suivent sont très proches . Si oui , il s'agit de la balle , sinon , il s'agit d'une autre source de lumière .


Ce code fonctionne parfaitement lorsque le robot n'est pas en mouvement . Lorsqu'il l'est , les valeurs sont erronés et le robot tourne sur lui même , ou suit des mauvaises directions .

Ce système fonctionne très bien. La lumière du jour ou d'une lampe n'est pas détectée, cependant avec une télécommande de télévision on arrive à attirer le robot. voir vidéo :

Détections des bords du terrain

La partie concernant les capteurs de lignes à été réalisée rapidement . Le capteur de lignes renvoi des valeurs différentes selon qu'il soit positionné au dessus d'une ligne noire ou du terrain blanc . Il suffit ainsi de connaître ces deux valeurs et de faire tourner le robot lorsqu'il renvoi une valeur associée a une ligne noire . Cependant, nous avons rencontré un obstacle majeur : si le robot avance trop rapidement sur une ligne , les valeurs des capteurs de lignes ne sont pas rafraîchies assez rapidement et la ligne n'est donc pas détectée .

Problèmes rencontrés et résolution

Nous avons dû faire face a de nombreux problèmes durant notre bureau d'étude , que nous avons résolu plus ou moins facilement en fonction de la nature du problème . Cette section les énumères en décrivant la nature du problème , l'élément concerné et la méthode de résolution .

  • Capteur Ultrason :

Le capteur Ultrason en lui même ne présentait pas de problèmes particuliers , ni son code qui renvoyait une valeur adéquate. C'est les faux contacts dû a la plaque d'essai qui erronnait le plus souvent les valeurs , soit en ne renvoyant quasiment rien du tout, soit en renvoyant constamment une même valeur . Ce problème est réglé par la mise en place du PCB , supprimant les faux contacts .

  • Capteurs Infrarouge :

La détection de balle par les capteurs infrarouge est la partie qui nous a pris le plus de temps a résoudre en raison de nombreux problèmes que nous n'avions pu résoudre rapidement . En effet , les capteurs infrarouge , comme leur nom l'indique , captent le rayonnement infrarouge . Cependant , ce rayonnement est présent dans toute les sources lumineuses tels que le soleil , la lumière émise par une ampoule , et également , en moindre intensité , par le corps humain . Ainsi , a moins que la balle ne se trouve a une distance inférieure a 5 centimètre des capteur , les valeurs renvoyé par les différents capteur disposés de part et d'autre du robot sont toutes un peu prés les même . Nous nous sommes donc penchés sur un programme ne prenant en compte que les signaux infrarouge modulés afin de ne pas capter les signaux parasites . Ce programme nous a pris jusqu’à 5 séances a mettre en place car nous captions toujours quelques valeurs parasites . Nous avons alors tentés de changer les résistances afin d'obtenir des valeurs adéquates et nous avons conclus que la résistance de 330 Ohm est l'idéale car elle permet de ne pas recevoir de signal trop faible mais le signal renvoyé par la balle est quand même pris en compte par le programme .

Vient maintenant la disposition des capteurs : nous avons disposé 5 capteurs . Deux aux extremités arrière du robot , et 3 disposés devant , dont deux sont positionnés aux extrémités et un est centré . Ce système permet une bonne précision et une détection de la balle a n'importe quel endroit . En effet , si nous n'avions pas disposés de capteurs a l'arrière , le robot aurait effectué une rotation complète avant de trouver la balle par ses capteurs avant . Nous avons également disposés des petits cache entre les capteurs afin d'augmenter la précision et éviter que plusieurs capteurs ne reçoivent un signal simultanément .

  • Capteurs de ligne :

Le majeur problème qui s'est révélé avec les capteurs de ligne concerne le temps de rafraîchissement des valeurs . En effet , le programme tournant seul détecte parfaitement les lignes , mais l'ajout du programme de recherche de la balle limite les détections en raison du temps qu'il prend a stocker les valeurs dans un tableau de plus de 100 cases . Cependant , ce problème peut être partiellement résolu en limitant la vitesse du robot . Ainsi , il passera sur une ligne plus lentement et aura ainsi le temps de détecter le changement de valeur tout en cherchant la balle par ses capteurs infrarouge .

  • Réalisation du PCB :

Les problèmes liés au PCB sont dûs au fait que nous n'avions jamais réalisé un PCB avant . Il a suffit qu'on nous explique ce que nous pouvions et ne pouvions pas faire afin de réaliser un PCB fonctionnel .

  • Réalisation de la pince :

Les taquets qui ont tout d'abord été imprimé avec l'imprimante 3D, ne convenaient pas car ils étaient déformés. L'imprimante 3D ayant du mal à réaliser ces formes arrondis. Cela nous a donc permis d'en apprendre plus sur le fonctionnement de cette imprimante. Ceux ci ont donc finalement été réalisé grâce à des gros clous et un bout de tuyau. Nous avons aussi du modifier la taille des roues dentées qui au départ été trop petite. En effet, nous avons voulut maximiser la largeur d'écartement des pinces pour faciliter la prise de la balle.

  • Réalisation du système de tir :

Nous avons eu un problème de puissance de tir. En effet, nous avions tout d'abord prévu d'utiliser la crémaillère seule. Mais le moteur n'était finalement pas assez rapide et la balle n'avançait que très peu lors du tir. Nous avons donc décidé d'utiliser un ressort et une roue dentée dont nous avons retiré certaines dents. Cela permet donc d'armer le système de tir et de tirer avec une bonne puissance.

Réalisation de la cage de but

Aspect Mécanique

La partie mécanique de la réalisation de la cage de but comprend la réalisation de la forme voulue pour le but en une matière solide et accessible . Nous nous sommes ainsi tourné sur des plaques de bois MDF de 3 mm d'épaisseur notamment en raison de son abondance dans l'établissement . Nous avons décidés de réaliser le but en forme rectangulaire . Nous avions tous d'abord réfléchis sur la possibilité de placer un filet couvrant tout le but sauf la partie supérieure , avant de décider d'en placer uniquement sur les côtés . Ce choix est uniquement motivé par l'aspect esthétique . Nous avons également placé des encoches afin de pouvoir emboîter les différentes parties du but pour éviter d'avoir a utiliser de la colle ou encore de visser . La cage de but a été dessinée sur Inkscape afin de pouvoir découper au laser la plaque MDF . Le résultat sur le logiciel était le suivant :

PCB Capteurs de lignes

Le rendu après découpe et assemblage est le suivant :

Aspect Electronique

Le matériel utilisé pour la réalisation de la cage de but est constitué de 6 émetteurs infrarouge , un afficheur 7 segment , un transistor et deux phototransistor .

Les deux photo-transistor sont positionnés sur chaque coté du but de façon a détecter l'entrée de la balle . L'afficheur 7 segments incrément le score lorsque les photo-transistors détectent la balle . Trois émetteurs infrarouge sont positionnés sur le toit , deux sur les cotés afin de délimiter le but, et le dernier est positionné sur le milieu de la partie arrière du but . Le circuit a été fixé sous le toit du but de manière a ne pas gêner l’accès de la balle . Nous avons schématisés les connections sous Fritzing , a l'exception de l'afficheur 7 segments qui n'est pas disponible sous ce logiciel :

Schéma Fritzing pour le but

Les trois émetteurs reliés aux transistor émettent un signal pulsé a 1000 Hz . La motivation du choix de connecter ces émetteurs au transistor est notamment de pouvoir les alimenter par un unique pin de l'Arduino en amplifiant le courant qui en provient afin d'alimenter les trois émetteurs de la même manière . L'utilité de cet aspect sera détaillé dans la partie concernant la programmation . Les trois autres émetteurs sont reliés a différents pins et ne sont pas pulsés : ils émettent en continu . Nous avons choisis de placer ces deux types d'émission dans notre but afin que les autres groupes puissent également l'utiliser , étant le seul groupe qui se base sur une émission pulsée . Les photo-transistors sont connectés aux entrées analogiques de l'arduino , lorsque la balle traverse le but , elle est détectée par ce premier photo-transistor . Le second sert a vérifier si la balle est toujours dans le but afin d'éviter d'incrémenter continuellement le score . L'afficheur 7 segments est utilisé en communication série . Nous l'alimentons directement sur la sortie 3.3 V de l'Arduino . Enfin , nous avons placé le récepteur Xbee (non représenté sur le schéma) , mais il n'est pas utilisé car nous l'avons reçu tardivement .