Binome2015-1 : Différence entre versions

De Wiki de bureau d'études PeiP
(Séance 2 : 21/01/16)
(Séance 5 : 29/01/16)
Ligne 70 : Ligne 70 :
 
==<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 5 : 29/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 5 : 29/01/16 </div>==
  
Dans cette séance, c'est sur le détecteur de couleur, RGB sensor, que nous nous sommes penchés.
+
Le détecteur de couleur, RGB sensor,
Sur ce composant nous retrouvons une fois de plus les pins communs VIN, GROUND...
+
*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;
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.
Le dernier utilisé était LED qui permet d'allumer la LED du composant, dans l'optique de mieux détecter la couleur.
+
 
Pour ce composant c'est le professeur qui nous a aidé en nous montrant le programme pour connaître le "taux" de rouge, bleu et vert détecté par le capteur. En effet, le programme était beaucoup trop compliqué et aurait nécessité trop de connaissances et de temps pour le réaliser tout seul.
+
 
Nous avons donc dû 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.
+
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.
 
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 obstacles, des lignes rouges.
+
Pour la construction du terrain il faudrait donc éviter d'utiliser des lignes rouges.
  
  
En accord avec la séance 4, nous avons ajouté un intermédiaire entre la plaque et le détecteur pour éviter qu'il ne bouge beaucoup. Cependant, cette solution est temporaire car elle permet de réduire seulement un peu la mobilité. Dans cet objectif de fixation, nous en avons 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.
+
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.
  
 
==<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 6 : 01/02/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 6 : 01/02/16 </div>==

Version du 9 mai 2016 à 21:41

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

Cette fois, c'est l'utilisation du logiciel Fritzing qui a été privilégiée. En effet, la première étape a été de sélectionner les différents composants et de les relier entre eux par le biais de la plaque d'essai. Seulement, le problème ici était l'absence de certains composants tels que le RGB sensor. Nous avons donc utilisé inkscape pour le dessiner et l'ajouter au logiciel, ce qui nous a occupé un certain temps. Grâce à Fritzing, nous allons pouvoir réaliser un circuit imprimé en vue d'alléger le câblage entre nos éléments. Il devrait également diminuer les problèmes de faux contacts causés par l'ensemble des fils.

Séance 7 : 04/02/16

Séance 8 : 08/02/16

Séance 9 : 11/02/16

Pour compléter notre collection de capteurs, il fallait travailler sur le capteur de lignes noir et blanc. Avec seulement trois broches, il était facile de le connecter à l'Arduino. Il y avait les habituels Ground et VIN, ainsi que un câble pour la communication avec l'Arduino. Celui-ci se branche sur un port analogique. Pour ce qui est du codage, on s'est servi de l'exemple déjà disponible sur le logiciel, ça a été relativement rapide à comprendre et à adapter à notre problème. Cependant, au vu des valeurs obtenues on a pensé avoir un problème. On a ensuite appris que le capteur doit être très près des ligne pour une meilleure optimisation : environ 3 mm. Il nous reste encore à faire suivre les lignes à notre robot et à ajouter d'autres capteurs pour les virages.

Séance 10 : 22/02/16

Lors de cette séance nous nous sommes concentré sur la détection infrarouge. l'objectif est ainsi de détecter la balle qui émet dans ce domaine d'onde. Le circuit nous a pris un peu de temps car il est difficile à comprendre, en effet pour savoir ce que détecte la led on doit brancher le Ground sur l'Arduino pour connaître la valeur qu'elle renvoie : cela n'est pas intuitif. Également, nous avons dû effectuer quelques modifications sur la balle car elle clignotait ce qui signifie qu'elle n'avait plus assez de pile. De plus, nous sommes passés le mode d'émission d'onde d'alternatif vers continu pour que les valeurs détectées soient toujours dans le même intervalle.

Séance 11 : 25/02/16

Pour optimiser au mieux le circuit et réduire la quantité de câbles, nous avons réfléchi pour le PCB et nous avons décidé de créer deux circuits imprimés distincts.

  • Tout d'abord le shield qui sera composé des liaisons pour le moteur, 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 infrarouges et les 2 capteurs RGB. Lui, sera plus bas et à l'avant de la voiture pour être au plus près de ses composants.

Séance supplémentaire

Hors des séances, nous avons créé la pince qui servira à récupérer et lancer la balle. Nous avons créé cette dernière grâce à l'utilisation d'un logiciel de modélisation 3D blender. Nous avons fait en sorte de vérifier toutes les dimensions ainsi que d'évider les parties inutiles. De plus, nous avons créé un "plafond" pour que les détecteurs infrarouges ne détectent pas en même temps la balle et le but. Pour finir, nous comptons utiliser un servo-moteur qui sera fixé sur une des deux pinces pour les faire tourner. La deuxième pince sera reliée à la première par l'intermédiaire d'engrenages. Pour ceux-ci nous envisageons 2 techniques : l'impression 3D ou la découpe laser qui a l'avantage d'être plus précise et moins gourmande en temps mais qui ne peux imprimer des pièces qu'en 2 dimensions. Nous avons donc opté pour la découpe laser pour les engrenages, et l'impression 3D pour la pince.

A ajouter : photos de l'engrenage et de la pince (avant et après impression)

Séance 12 : 29/02/16

Durant cette séance nous avons codé le servomoteur. Avant cela, il a évidemment fallu le brancher; 3 fils: Ground, VIN et un digital PWM. En ce qui concerne le code, nous avons utilisé un programme déjà existant à notre disposition sur le logiciel. Ce qui a été un peu plus délicat, c'était la modification du code. En effet, quand on a tenté de changer l'angle de rotation, le servo a fait des tours complets et des demi tours sans qu'on sache pourquoi. Mais après quelques minutes d'intense réflexion, on a réglé le problème et tout fonctionne très bien maintenant. Reste encore à le visser à la pince et tester le bon fonctionnement des deux.

Séance 13 : 03/03/16

Séance 14 : 07/03/16

  • Nous avons terminé les deux circuits imprimés (PCB) sur fritzing.

Nous avons bien avancé durant cette séance puisque nous avons terminé l'arrangement du deuxième circuit imprimé; c'est a dire que nous avons modifié l'orientation des composants ainsi quel a position des fils pour que aucun fils ne se croisent sur le PCB ainsi que tous soient bien relié au Ground, au VIN et également pour que les électrons puissent bien circuler en évitant de mettre des angles droits Ce circuit imprimé sera placé à l'avant du véhicule pour être au plus proche des led infrarouges et des détecteurs de couleurs et lignes. Pendant ce temps, nous avons également testé le capteur d'intensité de gris qui permettra au robot de suivre les contours du terrain. Celui-ci fonctionne a l'inverse, c'est a dire qu'il s'arrête lorsqu'il voit une ligne mais il sera facile de le changer lors de la prochaine séance.

Séance 15 : 10/03/16

Pendant cette séance nous avons enfin pu finalisé fritzing : en effet, le professeur a vérifié que les PCB étaient bien conforme pour la réalisation. De plus nous avons placé la masse, en cuivre, qui composera le fond de la plaque pour relier tous les Ground ensemble. Nous avons aussi du enlever des éléments de la masse "orphelins" : c'est a dire qu'il ne devrait pas apparaître et doivent donc être supprimé un par un.

Nous avons également ajouter sur notre robot le détecteur d'ultrason. Un programme contenant le contrôle des moteurs, la détection des lignes et la détection des ultrasons a ainsi été complété pour le robot. Un problème est survenue lorsque nous avons placé le robot sur l'ancien terrain pour nos test : en effet le robot 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.

Ainsi le robot dispose désormais de plus de tâche et le programme est complété de manière régulière en ajoutant uniquement un composant à chaque fois pour mieux faire interagir les programmes sur Arduino ensemble.

Séance 16 : 14/03/16

Séance 17 : 17/03/16

Séance 18 : 21/03/16

Séance 19 : 18/04/16

Séance 20 : 25/04/16

Séance 21 : 02/05/16

Lorsque nous sommes arrivées et que nous avons lancé le robot pour continuer les tests plus rien ne marchait. Nous avons donc du passait en revu tous les composants, les cables, les soudures, les piles pour essayer de trouver le problème. nous avons donc découvert qu'une ou deux soudure semblait laissé le courant passé de manière aléatoire et que les câbles composé de plusieurs câbles ont beaucoup de problème de faux contacts, sans doute au niveau des liaisons. Nous avons donc décidé de nous concentré sur le PCB pour pouvoir éliminé le plus possible ce problème. Nous avons récupérer la deuxième version des PCB, en effet la première version possédait pour tous les groupes des trous trop proches les uns des autres. Nous avons réalisé toutes les soudures en dehors des heures de cours. Il nous restait durant cette séance la réalisation d'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 pu ainsi supprimer beaucoup de câbles et notamment brancher directement le contrôleur ce qui évitera tout problème de faux contact.


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

Séance 23 : 09/04/16

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