Binome2015-9

De Wiki de bureau d'études PeiP
Révision datée du 12 mai 2016 à 14:27 par Aduqueno (discussion | contributions) (Résultat final et tests)

Sommaire

Introduction

Le choix de ce bureau d'étude (BE) s'est fait avant tout par passion pour l'électronique et l'informatique. En effet, nous savions grâce à la page wiki que ce projet allait combiner ces deux domaines avec en prime une partie mécanique. L’abandon des Lego Mindstorms nous a également aidé dans notre décision, puisque nous trouvions plus intéressant de concevoir ce robot par nous même.

Après une petite heure de présentation du BE, l'ensemble des groupes s'est concerté pour le choix du projet. Nous nous sommes réparties les différents acteurs du "jeu de balle" de telle sorte qu'il soit possible de réaliser une démonstration à l’issue du BE. Nous avons choisi de travailler sur un robot joueur ainsi qu'une cage de but.

Objectifs du robot


Schéma des objectifs


Fonctions diverses

  • Détecter les lignes extérieures : lorsque le robot se déplacera sur le terrain pour x raison, il ne devra pas dépasser les lignes extérieures du terrain
  • Détecter les obstacles : le robot doit être capable d'éviter les collisions avec son adversaire ou toute autre objet de l'environnement
  • Suivre une ligne : le robot va devoir se servir des lignes pour rentrer à son garage et donc les suivre

Phase de démarrage

  • Recevoir les ordres : il doit être capable de recevoir les ordres venant du ramasseur
  • Sortir du garage : il doit se positionner sur le terrain

Phase de jeu

  • Se déplacer vers la balle : le robot devra être en mesure de capter la balle et de se déplacer vers elle
  • Capturer la balle : un mécanisme devra permettre au robot de saisir la balle
  • Demander l’activation du but : le robot enverra une information pour activer le but
  • Repérer le but adverse : le robot se déplacera sur le terrain pour trouver le but adverse
  • Tirer : un mécanisme permettra au robot d'éjecter la balle
  • Recevoir les ordres : il doit être capable de recevoir les ordres venant du but

Phase finale

  • Retourner au garage : le robot devra se déplacer grâce à son environnement pour parvenir à son garage

Objectifs du but


  • Activer son émetteur infrarouge à la demande d'un joueur
  • Détecter une balle
  • Renvoyer la balle
  • Incrémenter le score
  • Envoyer des messages aux robots

Journal de bord

Ce journal de bord retrace l'histoire de notre robot, de sa conception à sa réalisation. Le but de cette partie n'est pas de raconter en détails nos séances mais de donner une idée de notre progression. La plupart des étapes de ce journal seront développées dans les parties suivantes.


JOUR 1 : 18/01/2016


  • Choix du robot compétiteur
  • Choix du châssis “2 roues” (moins de contraintes)
  • Création d'un document collaboratif
  • Réflexions sur les objectifs du robot (liste des fonctions à réaliser)
  • Première ébauche de l'algorithme “Suivi des lignes“


JOUR 2 : 21/01/2016


  • Test capteur ultrasons (distance)
  • Test capteur RGB (imprécisions)
  • Objectifs séance 3 : soudure, test reste des capteurs et actionneurs


JOUR 3 : 25/01/2016


  • Soudures moteurs et contrôleur
  • Montage du châssis
  • Branchement électrique du contrôleur et des moteurs + renseignements sur le contrôleur
  • Début de réflexion sur le mécanisme de la pince


JOUR 4 : 28/01/2016


  • Programme pour le contrôle des moteurs via le contrôleur (fonctionnel)
  • Premier test sur la réception de signaux infrarouges
  • Le robot tirera grâce à sa vitesse

JOUR 5 : 29/01/2016


  • Programme capteur de lignes
  • Le robot se déplace et esquive les obstacles (1 seul capteur ultrasons)
  • Quelques soucis avec des files défectueux
  • Début d’agencement des éléments sur le châssis


JOUR 6 : 01/02/2016


  • Prise en main du module XBee
  • Allumage d’une LED à distance pour les tests


JOUR 7 : 04/02/2016


  • Programme suiveur de lignes
  • Problème mécanique pour les tests (capteurs pas assez proches du sol)
  • Programme fonctionne théoriquement
  • Soudage capteurs


JOUR 8 : 08/02/2016


  • Premiers essais de PCB (Fritzing)
  • Programme robot télécommandé (à l’aide des touches du PC)


JOUR 9 : 11/02/2016


  • Plan de la pince et mesures
  • Plan du support à capteurs de lignes


JOUR 10 : 22/02/2016


  • Recherche de la balle (3 photo transistors pour le moment)
  • Problème de résistance trop faible
  • Contrôleur qui ne fonctionne pas avec 1 seul ordre moteur


JOUR 11 : 25/02/2016


  • Premiers essais du suiveur de ligne à l'aide de 2 capteurs (il ne gère pas encore les virages)
  • Changement des résistances (Recherche de la balle opérationnelle)
  • Création des pièces de la pince sur Solidworks (support, engrenages, bras de pince)

JOUR 12 : 29/02/2016


  • Réservation de l'imprimante 3D
  • Suiveur de ligne complet avec 4 capteurs (il gère maintenant les virages)


JOUR 13 : 03/03/2016


  • Commencement du PCB sur Fritzing (PCB unique sous forme de shield)
  • Impression du support et des 2 engrenages (problème de dimensionnement de la garde au sol et de la fente)

JOUR 14 : 07/03/2016


  • PCB terminé (il faut maintenant le faire vérifier auprès des enseignants)

JOUR 15 : 10/03/2016


  • Réalisation du circuit électrique du but (photo)
  • Programme du but terminé, encore quelques bricoles à modifier
  • Problème d'incrémentation du score réglé
  • Toujours pas d'accord sur les communications entre robots et buts

JOUR 16 : 14/03/2016


  • Les 3 PCB sont terminés
  • Le suiveur de ligne est complet, le robot s'arrête si un obstacle est sur son chemin (vidéo)
  • Rajouter des trous de perçage sur les 2 PCB non-shield

JOUR 17 : 17/03/2016


  • Modification du PCB contrôleur qui était encore en top et non en bottom
  • Les PCB ont été vérifiés
  • Recherche de la balle complet, le robot cherche sans sortir du terrain


JOUR 18 : 21/03/2016


  • Modification de la recherche de balle, plus performant
  • Réception des 3 PCB
  • Bricolage d'un support de capteurs
  • Montage du support et des capteurs
  • Problème avec le suiveur de lignes, capteurs trop alignés

JOUR 19 : 24/03/2016


  • Les PCB sont imprécis : plan de masse trop proche des connecteurs (courts-circuits, difficultés pour souder)
  • Correction des PCB en grattant les pistes (échec)
  • La pince est opérationnel
  • Le suiveur de lignes refonctionne (déplacement des capteurs)

JOUR 20 : 18/04/2016


  • Les PCB ont été regravés avec plus d'espace
  • PCB principal imprimé en Top, on doit souder de l'autre coté pour corriger
  • Soudures terminés sur le principal
  • Démontage du robot (fils, breadboard ...)
  • Montage du PCB et réagencement du robot (PHOTO)


JOUR 21 : 21/04/2016


  • Soudures terminés sur les 2 autres PCB
  • Recâblage plus propre
  • Premier test avec PCB
  • Les moteurs tournent mais problèmes avec les suiveurs de lignes

JOUR 22 : 25/04/2016


  • Le suiveur de lignes fonctionne correctement avec le PCB
  • Altérations du PCB mère, certaines pistes/pastilles se détachent
  • Installation du PCB suiveur de lignes


JOUR 23 : 28/04/2016


  • Envoie d'un nouveau PCB à graver (en bottom)
  • Ajout d'un cerclage en carton sur la pince
  • Le système de tir est opérationnel


JOUR 24 : 02/05/2016


  • Mise en place des 5 phototransitors
  • Avancement sur le but
  • Installation PCB photo (1 seul phototransistor qui fonctionne)


JOUR 25 : 03/05/2016


  • Le PCB mère réimprimmé est toujours mauvais, on abandonne par manque de temps
  • Découpe de l'ancien PCB mère, on a trouvé les problèmes des phototransitors (pistes et pastilles décollées)
  • Cable management (robot et but)
  • Programme de recherche et de capture fonctionnel
  • But terminé et fonctionnel

Réalisation mécanique

Choix du modèle

Pour cette saison 2015-2016, les robots ne sont plus construits avec le kit de construction Lego Mindstorms. C'est pourquoi, nous avons passé une partie de notre première séance à débattre sur les avantages et inconvénients des deux châssis proposés (2 ou 4 roues motrices). Nous avons finalement opté pour le modèle 2 roues pour les raisons suivantes :

  • Plus léger donc plus mobile
  • Plus maniable grâce à sa roue libre (virage rapide)
  • Moins gourmand en énergie (2 moteurs contre 4)
  • 2 moteurs à contrôler via l'Arduino
  • Moins de risque de patinage

Au final, les avantages en faveur du 4 roues étaient minimes. En théorie, il est censé se déplacer plus rapidement grâce à l'usage de ses 4 moteurs. Seulement, sur un terrain de petite taille, il est préférable que le robot soit maniable et réactif par rapport à son environnement. Ces propos ne sont bien sur que des spéculations. Le temps étant limité, le choix devait se faire rapidement.

Conception de la pince

La pince représente la grosse partie mécanique du projet. Sa réalisation s'est effectuée en plusieurs étapes.

  • Réflexion

On ne s'est pas empressé à réaliser un fichier 3D. On a d'abord fixé les objectifs de cette pince ainsi que les contraintes qui lui seront liées. Pour le mécanisme d'ouverture et de fermeture, on a choisi un système composé de deux engrenages avec au- dessus de l'un d'eux, un servomoteur. La balle étant sphérique, il nous a semblé judicieux de réaliser les bras de la pince de manière circulaire. Concernant le mécanisme d'éjection, nous avons fait le choix de ne pas en faire mais d'éjecter la balle grâce à une accélération soudaine du robot. Cet ensemble sera maintenu sur un support qui lui-même sera fixé au châssis du robot à l'aide d'une "mâchoire". En ce qui concerne les contraintes, le robot doit être capable de distinguer les ondes infrarouges du but et de la balle. Comme solution, on a décidé de positionner les phototransistors sur le devant de la pince, nous évitant ainsi la réalisation d'un système pour cacher la balle.

  • Mesures et dessins

Cette étape est primordiale pour commencer la conception 3D. On a réalisé quelques esquisses sur papier (voir photos) représentant plusieurs vues de la pince. On a ensuite pris les mesures nécessaires pour les reporter sur les schémas.

  • Conception 3D

Ayant déjà eu des expériences avec la modélisation 3D, on a pu sauter l'étape de l’apprentissage. On a choisi, par habitude, d'utiliser le logiciel Solidworks pour concevoir les pièces. Mis à part quelques difficultés pour dessiner des pièces courbées, nous n'avons rencontré aucun problème majeur lors de la réalisation.

  • Impression 3D et montage

Fichiers au bon format (STL), créneau réservé, direction le Fabricarium pour l'étape la plus concrète : l'impression. Pour notre première visite, un élève en 4ème année nous a gentiment expliqué le fonctionnement des deux imprimantes. Compte tenu de notre besoin de précision sur les pièces, il nous a conseillé plusieurs réglages comme un taux de remplissage bas. Pour cette première impression, on avait choisi de ne faire que le support et les engrenages, ce qui nous aurait permis d'enfin fixer nos capteurs. Mais malheureusement, le support n'était pas dimensionné correctement, la barre du bas était trop basse et trop fine. On a donc repris les mesures et revu le modèle 3D.

On a par la suite appris que l'imprimante 3D était en panne pour 2 semaines. Heureusement, le groupe de Kévin Descamps et d'Antoine Gosse nous a gentiment donné le premier modèle de leur pince (les 2 mâchoires). Pour la fixer on a apporté quelques modifications à notre support mal dimensionné. On a placé des entretoises dans les bras de la pince puis on a disposé les extrémités dans des trous plus large préalablement percés sur le support. Pour assurer la stabilité du mécanisme, on a bricolé 2 pièces en bois, l'une servant à maintenir le servomoteur et l'autre un des bras.

Conception du support capteurs

Le support des capteurs est intégré au support de la pince. Au départ, il s'agissait d'une simple barre en plastique située au ras du sol sur laquelle on pouvait venir visser les capteurs de lignes. Mais son mauvais dimensionnement (la barre touche le sol et est beaucoup trop fine pour accueillir des trous de perçage) et la panne de l'imprimante 3D nous ont poussé à réfléchir à une solution alternative. On a décidé de sectionner le bas du support et d'y mettre à la place une barre en bois que l'on a récupéré. Cette pièce est attachée par 2 vis sur les bras du support et comporte 4 trous qui permettent la fixation des suiveurs de lignes.

Réalisation informatique/électronique

Circuits imprimés

Afin d'éviter un amas de câbles au dessus du robot, nous avons réalisé des circuits imprimés (PCB). Durant les 19 premières séances, nous avons travaillé exclusivement sur une platine d'expérimentation plus souvent appelé "breadboard". Elle nous a permis d’expérimenter des montages et de tester nos différents capteurs très simplement et surtout rapidement. Nous nous sommes occupés des PCB à partir de la 13ème séance. Au départ, il était question d'un unique PCB que l'on aurait branché comme un shield entre l'Arduino et le module ZigBee. Puis, toujours dans l'optique de simplifier le câblage au maximum, on a pris la décision d'en concevoir 3.

PCB du contrôleur des moteurs : il s'agit de notre PCB mère, les 2 autres PCB y seront reliés. On retrouve sur cette carte un emplacement pour souder le contrôleur moteurs (1) ainsi qu'un autre pour le capteur ultrasons (2). En (3), il s'agit de 2 connecteurs sur lesquels arrivent les fils des piles. Cette source alimente à la fois l'Arduino (Vin), les moteurs et les 2 autres PCB.

PCB des phototransistors : ce PCB est déporté à l'avant du robot. Il permet d'alimenter les 5 photo transistors et d'en recueillir les informations.

PCB des suiveurs de lignes : également déporté à l'avant du robot, il alimente les 4 capteurs et recueille les informations.


Ces 3 circuits imprimés ont été réalisés à l'aide du logiciel Fritzing. Ce logiciel n'est guère utilisé dans le monde professionnel mais il a le mérite d'être simple d'utilisation, ce qu'il nous fallait pour ne pas perdre trop de temps. La première tentative de fabrication fut un échec, en effet, le plan de masse était connecté à certains endroits aux pistes ainsi qu'aux connecteurs (voir image ci-dessous). Pour pallier à ce problème, on a dans un premier temps essayé de gratter le cuivre. Bien que cette solution était fonctionnelle, il était toujours très difficile de souder les composants sans étaler de l'étain sur le PCB. Finalement, nous avons modifié sous Fritzing l'écart entre le plan de masse et les pistes (voir image ci-dessous).

Plus tard, on s'est aperçu que le PCB mère avait été gravé en top. Pour ne pas le réimprimer une troisième fois, on a décidé de le retourner et donc de souder les composants sur le coté cuivré. De ce fait, nous devions laisser un espace entre le composant et la pastille pour y mettre l'étain. Ça n'a pas été facile mais au final le résultat était satisfaisant. Néanmoins, après plusieurs d'utilisations et donc de sollicitations, les pistes et les pastilles ont commencé à s'enlever occasionnant ainsi des problèmes sur nos programmes. A quelques jours de notre présentation vidéo, nous avons réimprimé le PCB en bottom mais encore une fois celui-ci est sorti en top. On a contrôlé et comparé notre fichier Fritzing avec les autres groupes, et apparemment, chose que nous ne savions pas, il fallait mettre le modèle Arduino en top. Afin de rattraper notre erreur, on a découpé notre PCB pour récupérer les connecteurs femelles de l'Arduino.

Voici à présent quelques images annotées de nos PCB.

Fonctions du robot

Dans cette partie, nous détaillerons l'ensemble des fonctions du robot. Pour ce faire, nous parlerons pour chaque fonction des différents composants électroniques utilisés et de l'élaboration du programme associé. Ces programmes seront présents de manière simplifiés pour une lecture rapide mais ils seront également disponibles en téléchargement.


Sortie du garage


Prochainement ...


Déplacement vers la balle


Capteur ultrasons

Fil rouge : alimentation 5V du capteur.

Fil noir : il s'agit du fil de masse.

Fil vert : tension qui varie selon l'intensité du rayonnement infrarouge captée par le phototransistor. La valeur de la cette tension est lue par une entrée analogique sur l'Arduino.


Description

Pour attraper la balle, le robot doit d'abord être en mesure de la trouver et de s'en approcher le plus possible. Pour cela, nous avons positionné 5 phototransistors sur le devant du robot afin d'élargir son "champ de vision". De base, le robot avance tout droit. Il se déplace selon la tension retournée par le dispositif (résistance + phototransistor). Lorsqu'il capte une ligne extérieur, il fait marche arrière et change son angle, ce qui lui permet de parcourir le terrain.

Programmation

 while (chercher balle)
 {
   if (ligne détectée)
   {
     marche arrière pendant 1.5s
     if (photo_droite supérieur)
     {
       Rotation à droite
     }
     else
     {
       Rotation à gauche
     }
   }
   if (photo_droite supérieur)
   {
      Avancer sur la droite
   }
   if (photo_gauche supérieur)
   {
      Avancer sur la gauche
   }
   else
   {
     Aller tout droit
   }
 }


Problèmes

Du fait de la faible portée des phototransistors, nous avons modifié notre programme de base pour que le robot cherche la balle en parcourant le terrain même lorsqu'il ne reçoit plus d'informations venant des phototransitors.


Détecter un obstacle


Capteur ultrasons

Fil rouge : alimentation 5V du capteur.

Fil noir : il s'agit du fil de masse.

Fil vert : le trig permet de déclencher une mesure lorsqu'une impulsion de 10 µs au minimum lui parvient.

Fil orange: le echo envoie une impulsion de durée variable selon la distance qui sépare le capteur de l'obstacle.

Pour calculer la distance qui sépare le capteur ultrasons de son obstacle, on utilise la formule suivante : Distance = Temps / 58

Cette formule se retrouve également. La vitesse du son étant approximativement 340 m/s ou 34 000 cm/s on a : Distance (cm) = 34 000 * Temps (s) soit encore Distance = 34 000 * 10^-6 * Temps (µs) = 0.034 * Temps (µs).

Comme l'onde ultra-sonore parcoure un aller-retour, il faut diviser cette distance par 2. Ainsi Distance = 0.017 * Temps (µs) ou encore Distance = Temps (µs) / 58.


Description

La détection d'obstacles fait parti des fonctions diverses du robot. Elle sera active durant la phase de recherche et le retour au garage afin de ne pas percuter le robot adverse ou tout autre objet de l'environnement. Dans le cadre de la recherche, si le robot détecte un obstacle à 15 cm, il change de direction et repart alors que pour le suivi de ligne, il s’arrête tant que l'objet et devant lui. Le capteur ultrasons est placé au dessus de la pince et pointe légèrement vers le sol de telle sorte qu'il ne se capte pas lui même.

Programmation

Envoyer une impulsion de 10µs
Lire la valeur du echo
Convertir la valeur echo en cm


Problèmes

Le relevé des distances nous a causé quelques problèmes pour les valeurs très grandes ou à l’inverse très petites. La capteur plante et renvoie 0 constamment quelque soit la distance. Il est nécessaire de reset l'Arduino. La fiche technique indique une plage d'utilisation de 2 cm à 5 m mais ne précise pas son dysfonctionnement dans le cas ou ses valeurs sont dépassées. Un petit tour sur les forums nous a permis de voir que ce problème était connu de tous et qu'il n'y avait pas de solutions. Au final, dans la pratique, le robot ne sera pas confronté à ce genre de configuration.


Capture de la balle


Description

Lorsque le robot est assez proche de la balle, il doit être en mesure de la capturer. Pour cela, nous avons mis un 5ème phototransistor à l’intérieur de la pince qui va venir commander le servomoteur.

Programmation

 while (chercher balle)
 {
   if (photo > seuil)
   {
     Fermer la pince
   }
 }


Problèmes

On a du faire face à des problèmes d'exposition lumineuse qui venaient perturber la fermeture de la pince (fermeture trop tôt).


Communication sans fil


Pour expérimenter la communication sans fil avec XBee, nous avons créé un programme permettant de contrôler le robot à distance grâce aux touches du clavier d'un PC. Cette fonctionnalité n'a aucun intérêt concret dans le projet mais elle a nous a permis d'en apprendre davantage sur la communication série.

Concernant la communication entre robots et buts, celle-ci aurait du s’effectuer à l'aide de messages contenant également les identifiants :

  • MATCH_START : Robot ramasseur => Joueurs
  • BUT1_ON : Robot joueur => But 1
  • BUT1_OFF : Robot joueur => But 1
  • BUT2_ON : Robot joueur => But 2
  • BUT2_OFF : Robot joueur => But 2
  • GOAL : But 1/2 => Robot ramasseur / joueur

Malheureusement, nous ne nous sommes pas concertés assez tôt. La fin du BE est vite arrivée et nous avons consacré le peu d'heures qu'ils nous restaient à faire fonctionner notre robot pour la présentation vidéo.


Repérage du but adverse


Prochainement ...


Tir au but

Description

On a fait le choix de ne pas réaliser de système mécanique pour le tir mais d'utiliser ce qu'on avait déjà en notre posséssion : une pince et des roues motorisées. Pour tirer, le robot s'arrête, il ouvre la pince puis fait une petite accélération et se stop net. Ainsi, la balle est propulsée vers l'avant, suivant la direction du robot.

Programmation

Ouverture de la pince
Mise en marche des moteurs
Délai de 1s
Arrêt des moteurs

Problèmes

Aucun problème n'a été constaté sur cette partie.


Retour au garage


Suiveur de lignes

Fil rouge : alimentation 5V du capteur.

Fil noir : il s'agit du fil de masse.

Fil vert : ce fil correspond à la sortie du capteur. Il est branché sur une entrée analogique et envoie des valeurs comprises entre 0 et 1023 selon l'intensité du noir.


Description

Le retour au garage s'effectue grâce à 4 capteurs de lignes qui vont permettre au robot de suivre une ligne pour se rendre à son garage. Au niveau du garage, la couleur de la ligne est différente et peut être différenciée du noir, ce qui lui permet ainsi de se garer. Nous avons choisi d'opérer avec 4 suiveurs afin d'accroître la vitesse du robot. Nous en avons 2 centraux qui permettent une correction douce du robot, les 2 moteurs tournent mais l'un est ralenti. Ceux aux extrémités sont utiles pour les virages plus importants comme les angles droits du terrain. Dans ce cas, un des 2 moteurs est complètement à l’arrêt.

Programmation

 while (rentrer au garage)
 {
   Lecture des données
   while (cptd < seuil && cptdd < seuil && cptg < seuil && cptgg < seuil)
   {
     Même vitesse des moteurs
     Lecture des données
   }
   if (cptd >= seuil && cptdd <= seuil && cptgg <= seuil)
   {
     Moteur gauche tourne
     Moteur droit ralenti
   }
   if (cptg >= seuil && cptdd <= seuil && cptgg <= seuil)
   {
     Moteur gauche ralenti
     Moteur droit tourne
   }
   if(cptdd >= seuil)
   {
     while(cptd < seuil)
     {
       Moteur gauche tourne
       Moteur droit à l’arrêt
       Lecture des données
     }
   }
   if(cptgg >= seuil)
   {
     while(cptg < seuil)
     {
       Moteur gauche à l’arrêt
       Moteur droit tourne
       Lecture des données
     }
   }
 }

Problèmes

Pour optimiser au maximum, il nous a fallu modifier les nombreux paramètres de l'algorithme comme les seuils de détection et les délais des moteurs. On a également du abaisser les capteurs de lignes pour qu'ils soient plus proche du sol et qu'ils puissent sortir des valeurs cohérentes quelque soit la luminosité ambiante. Lorsque l'on a réalisé le support, on a oublié de mettre les capteurs latéraux en retrait par rapport à ceux du centre. Le robot ne parvenait plus à tourner correctement en angle droit. Une fois la modification apportée, tout refonctionnait comme avant.

Résultat final et tests

Vue 1
Vue 2
Vue 3


Voici des photos du robot tel que nous l'avons présenté lors de la vidéo.

But

Réalisation mécanique

Plans du but


Au départ, il était question de réaliser le but avec la découpeuse laser du Fabricarium. Seulement, avec tout le travail que nous avions en salle, on reportait chaque semaine la découpe. Les plans vectoriels ont été réalisés avec Adobe Illustrator mais n'ont pas été utilisés. On s'est servi d'un panneau de contreplaqué sur lequel on a scié les différents éléments du but que l'on a ensuite assemblé avec des équerres et des vis.

Réalisation électronique

Affichage du score


Suiveur de lignes

Fil rouge : alimentation 5V du capteur.

Fil noir : fil de masse.

Fil vert : horloge du bus I2C (SCL).

Fil bleu : transfert des données du bus I2C (SDA).


Description

L'affichage du score se fait grâce à un afficheur 7 segments (4 digits) contrôlé à l'aide d'un Arduino UNO. On a choisit d'utiliser l'interface I2C pour communiquer afin d'économiser le nombre de câbles.

Programmation

Le programme consiste à incrémenter des nombres sur l'afficheur en fonction des données recueillis par l'Arduino et plus précisément le capteur ultrasons qui lui est connecté.

Problèmes

Il nous a fallu prendre en main la librairie Wire qui n'est pas simple d'utilisation.


Détection de la balle


Description

Nous avons utilisé un capteur à ultrasons relié à l'Arduino. Il est placé sur une des faces latérales du but. Lorsque celui-ci est activé par un robot compétiteur, le capteur se calibre en prenant une mesure devant lui. Ainsi, quand il détectera une variation de cette distance, cela voudra dire que la balle est entrée. L'afficheur se chargera d'incrémenter le score de 1 point.

Programmation

dist_init = distance sans obstacles
while(but activé)
 if (dist_init - dist > 4)
  incrémentation du score
  désactivation du but

Problèmes

Ayant déjà pris en main le capteur à ultrasons du robot, celui-ci ne nous a pas posé de problème.

Résultat final et tests

Inclure des images et vidéos

Conclusion

Impressions du robot

Plus qu'à faire parler Maurice ...

Impressions de Lucas

Libre a toi ...

Impressions d'Antoine

  • Apport de connaissances
  • Tenir des délais
  • Trouver des solutions
  • Travailler en autonomie
  • Liberté offerte sur le robot
  • Pluridisciplinaires (mécanique, informatique, électronique)
  • Travail d'équipe, répartition efficace des tâches
  • Projet ludique
  • Investissement important
  • Envie de projet perso :)
  • Remerciements