CageBut2014-4 : Différence entre versions

De Wiki de bureau d'études PeiP
(Circuit imprimé)
(Circuit imprimé)
Ligne 164 : Ligne 164 :
 
Une fois la partie programmation de la balise par arduino termminée nous avons dû réaliser le circuit imprimé de cette balise. A partir d'un schéma initial réalisé sur le logiciel Eagle que nous avons modifiée, afin d'obtenir une meilleure répartition des composants sur la carte, nous avons envoyé notre PCB au service de Polytech consacré à sa fabrication.  
 
Une fois la partie programmation de la balise par arduino termminée nous avons dû réaliser le circuit imprimé de cette balise. A partir d'un schéma initial réalisé sur le logiciel Eagle que nous avons modifiée, afin d'obtenir une meilleure répartition des composants sur la carte, nous avons envoyé notre PCB au service de Polytech consacré à sa fabrication.  
  
[[Fichier:SchemaPCB.jpeg|300px|thumb|left|Répartition des composants sur la carte]]
+
[[Fichier:SchemaPCB.jpeg|300px|thumb|left|Répartition des composants sur la carte]] [[Fichier:WP 20150423 001.jpg|300px|thumb|center|Répartition des composants sur la carte]]
  
 
L'étape suivante consista à souder les différents composants et à tester la carte, elle fonctionne, il faut maintenant programmer le microcontroleur pour la balise devienne autonome. Pour cela on utilise un AT Tiny Programmer qui est une petite carte qui permet de compiler notre programme dans le microcontroleur.
 
L'étape suivante consista à souder les différents composants et à tester la carte, elle fonctionne, il faut maintenant programmer le microcontroleur pour la balise devienne autonome. Pour cela on utilise un AT Tiny Programmer qui est une petite carte qui permet de compiler notre programme dans le microcontroleur.

Version du 25 mai 2015 à 09:08

Introduction

Le bureau d'étude est une initiation pédagogique nous mettant en situation concrète avec des objectifs précis à remplir, précurseurs de projets professionnels tels que nous en aurons plus tard en tant qu'ingénieur au sein d'une équipe. Nous avons choisi le Bureau d'Etude ima par curiosité des domaines de l'informatique et de l'électronique et pour conforter ou non nos choix dans les spécialités que propose le réseau Polytech.

Ce bureau d'étude a pour objectif final de faire jouer une partie de football à des robots LEGO Mindstorm™. Les rôles des robots sont répartis selon différents binômes, chaque binôme étant amené à échanger avec les autres afin que la coordination entre les robots soit la plus parfaite possible. Chaque binôme aura donc pour tâche de s'occuper soit :

  • d'un robot ramasseur de balle (2 au total)
  • d'une cage de buts (2 au total)
  • de robots de compétition (4 au total)

Il y a aussi un neuvième "robot" qui joue le rôle d'arbitre. Il s'agit d'un ordinateur relié en Bluetooth avec tous les autres robots permettant le bon déroulement du match (exemple, après un but, l'arbitre demande à la cage concernée de libérer la balle).


Nous avons choisi de réaliser une cage de but, nos principales lignes directrices pour ce projet sont :

  • Un but correctement dimensionné de largeur 50 cm en accord avec le but adverse (DELANOY et CLEMENT) pour permettre de meilleures chances à la balle de rentrer au vu de son diamètre ( 75 mm ).
  • Une balise infrarouge capable d'émettre tout en étant différentiable de l'autre cage et de la balle, cette balise doit pouvoir être paramétrable.
  • Un système de détection ( capteur ultrasons ) et d'expulsion de la balle ( impliquant un capteur de contact).
  • Une programmation pour communiquer avec les autres intervenants ( robots joueurs, ramasseur de balle, arbitre ).

Nous avons choisi ce rôle car il est très polyvalent, alliant programmation, création d'un PCB, fabrication de la cage via une découpeuse laser.

Le Mécanisme du but

1er prototype du mécanisme
Nous avons d'abord eu l'idée d'un robot fonctionnant avec un seul moteur, le faire tourner dans un sens bloquant la balle et dans l'autre, avec une vitesse supérieure, la libérant. Ce projet a fini par être abandonné suite à de nombreuses complications techniques liées au moteur. En effet il était particulièrement difficile de faire revenir le moteur à sa position initiale, même en ajoutant des capteurs de contact l'armature ne revenait jamais exactement à sa place. Les LEGO du prototype étant moins lourds que l'armature finale en bois ou plastique.Nous nous sommes dis que le projet était perfectible. De plus le système n'était pas assez rigide pour supporter le poids de la cage. Le système de blocage étant à améliorer mais il fallait ajouter un autre moteur pour expulser la balle.



Mécanisme final




Le nouveau robot ainsi réalisé comporte deux moteurs, le premier s'occupe de bloquer la balle, le second ne fait que la renvoyer. Le premier constitue une sorte de crochet se rabattant sur la balle après qu'elle soit détectée par le capteur ultrason (situé sur la ligne du but). La balle est ainsi bloqué au fond du but contre un système fixe prévu à cet effet. La balle immobilisée, le crochet se relève jusqu'à rencontrer le capteur de contact qui déclenche sa remise en position initiale. Pendant cela, le deuxième moteur chargé du fonctionnement du percuteur se met en marche et permet l'expulsion de la balle hors du but. Nous avons réalisé des tests, le percuteur expulse la balle assez rapidement pour un franchissement de quelques millimètres en raccord avec l'épaisseur du terrain. Le percuteur se remet alors en place sans problème car le moteur réalise un angle faible.


Media:Robot final.mp4--Media:Bascule contact final.mp4




Le programme

Ci-dessous le programme du robot NXT. Ce programme que nous avons écrit permet à notre but de remplir différentes tâches: détecter la balle, la bloquer dans la cage et l'en éjecter. Une fois connecté à l'arbitre par bluetooth, l'arbitre lui demande de s'identifier, ce qu'il fait en lui envoyant le code correspondant aux cages. LA balle pouvant se trouver dans un but au début d'une partie la première instruction de l'arbitre à la cage et d'éjecter ce que notre robot réalise qu'il ait a balle ou non. Lorsque la balle rentre dans notre but, elle est détecté par le capteur infrarouge et notre robot la bloque et averti le robot arbitre d'un but. La balle ne sera éjectée que lorsque l'arbitre le lui aura demandé. Puis le jeu peut reprendre.

#define NEAR 50 //cm
//Actors
#define TYPE  0
//#define SEEKER
//#ifdef SEEKER
//#define TYPE  2
#define TYPE_BUT       0
//Mailboxes
#define MAILBOX_ACTEUR 1
#define MAILBOX_ARBITRE 2
//Messages
#define CODE_REQTYPE  0 
#define CODE_EJECTER  1
#define CODE_BUT      3 
task main()
{   
    int result;
    string buffer;
    SetSensorTouch(IN_2);
    SetSensorLowspeed(IN_4);
    while(true)
    {
      result=ReceiveMessage(MAILBOX_ACTEUR,true,buffer);
     
      if(result==0)
      {
      int requete=StrToNum(buffer);
      if(requete==CODE_REQTYPE)
        {
        TextOut(0,LCD_LINE1,"TYPE SENT");
        string type;
        type=NumToStr(TYPE_BUT);
        SendMessage(MAILBOX_ARBITRE+10,type);
        }
      if(requete==CODE_EJECTER)
        {
        TextOut(0,LCD_LINE2,"EJECT BALL");
        OnRev (OUT_C,100);
      Wait (150);
      OnFwd (OUT_C,100); 
      Wait (150);
      Off (OUT_C);
      Wait (1000);
      OnFwd(OUT_A, 50); 
      Wait(250);
      Off (OUT_A); 
      while(SensorUS(IN_4)>NEAR);
      string type1;
      type1=NumToStr(CODE_BUT);
      SendMessage(MAILBOX_ARBITRE+10,type1);
      Wait (200) ; //petite pause le tps que la balle arrive
      OnFwd (OUT_A,50); //moteur sup. se rabaisse pour bloquer balle
      Wait (150);
      Off (OUT_A);
      Wait (1000);
      OnRev(OUT_A, 20); // moteur sup. se relève, balle libre de partir
      while (Sensor(IN_2) != 1) {}
      }
      }
     
    }
}

La Balise infrarouge

Une fois notre robot terminé nous nous sommes attelés à la conception de la balise infrarouge. Nous avons réalisé la balise en s'inspirant du modèle suivant, en y rajoutant un bouton poussoir et une LED rouge qui va nous permettre de savoir "où" nous nous situerons par rapport au réglage de la fréquence des LED infra-rouges. C'est simple, une pression sur le bouton fait clignoter la LED rouge une fois, un appui prolongé sur le bouton (3 secondes dans notre cas) fait clignoter la LED 4 fois: on entre dans un "menu" dans lequel on peut alors configurer la période de fonctionnement des LED infrarouges. Pour refermer ce "menu" il faut à nouveau appuyer 3 secondes sur le bouton, la LED va à nouveau clignoter mais cette fois autant de fois que le bouton a été enfoncé. Pour configurer la période des infrarouges il faut appuyer un certain nombre de fois. Par exemple: 5 appuis, les infrarouges vont fonctionner à 1200Hz pendant 2,5s puis s'interrompre pendant 1s et recommencer jusqu'à ce que ce paramètre soit modifié. A noter que la pause d'une seconde n'est pas paramétrable avec le bouton.

Schéma du circuit de la plaque sans la LED rouge
Photographie de la plaque d'essais avec ces différents voyants d'activité. La LED verte correspond à la mise sous tension de la plaque et la LED rouge nous indique quelles actions ont été entraînées suite à nos appuis sur le bouton.



















Circuit imprimé

Une fois la partie programmation de la balise par arduino termminée nous avons dû réaliser le circuit imprimé de cette balise. A partir d'un schéma initial réalisé sur le logiciel Eagle que nous avons modifiée, afin d'obtenir une meilleure répartition des composants sur la carte, nous avons envoyé notre PCB au service de Polytech consacré à sa fabrication.

Répartition des composants sur la carte
Répartition des composants sur la carte

L'étape suivante consista à souder les différents composants et à tester la carte, elle fonctionne, il faut maintenant programmer le microcontroleur pour la balise devienne autonome. Pour cela on utilise un AT Tiny Programmer qui est une petite carte qui permet de compiler notre programme dans le microcontroleur. La programmation de la balise étant terminée il faut maintenant fabriquer le PCB / circuit imprimé de celle-ci. Pour cela on utilise le logiciel EAGLE puis on l'envoie au service de polytech chargé de sa fabrication via un protocole.

Réalisation du but

A ce jour, nous avons choisi le plexiglas comme matériau principal de la cage, apportant une véritable structure au but tout en laissant apercevoir le mécanisme. La cage aura une largeur de 50 cm et une profondeur de 25 cm. L'armature démarrera à hauteur du percuteur jusqu'à l'arrière en recouvrant la majorité du robot,et en finissant en forme arrondie. Le robot principal sera maintenu au centre du but par des barres transversales fixés aux deux faces de cotés du but par un système d'emboîtement d'encoches.

Concernant le mécanisme du robot, une première pièce longue sera fixé au premier moteur sur le crochet recouvrant ainsi toute la largeur du but. L'idée est la même pour le moteur de répulsion où une deuxième pièce sera fixé sur le percuteur obtenant ainsi un percuteur de 50 cm de large. On pourra également placer une mini-plaque sur la pièce du robot sur laquelle la balle vient se percuter, munie d'un système amortissant le choc ( mousse ou autre).

Circuit imprimé

La programmation de la balise étant terminée il faut maintenant fabriquer le PCB / circuit imprimé de celle-ci. Pour cela on utilise le logiciel EAGLE puis on l'envoie au service de polytech chargé de sa fabrication via un protocole.