Binome2017-8 : Différence entre versions

De Wiki de bureau d'études PeiP
 
(153 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
Robot proie totalement autonome et de petite taille.
+
<include nopre noesc src="/home/pedago/ppeip/include/video-Robot_Binome08_2017-iframe.html" />
Réalisation de la carte et shield
+
__TOC__
 +
[[Fichier:Robot Vincent Dubois.jpg|200px|right]]
 +
<br style="clear: both;">
 +
 
 +
 
 +
=<div class="mcwiki-header" style="border-radius: 7px; padding: 7px; font-weight: bold; text-align: center; font-size: 80%; background: #8D8D8D; vertical-align: top; width: 98%;"> Introduction </div>=
 +
 
 +
A l’occasion de ce bureau d’étude, j’ai décidé de réaliser un robot communiquant « proie » miniature et entièrement autonome. Étant seul pour ce projet, j’ai préféré ne pas m’attarder sur la partie télécommande (Raspberry Pi) du robot.
 +
J’ai décidé de travailler autour de trois grands axes :
 +
* Réalisation de la carte électronique.
 +
* Découpe et impression 3D du châssis.
 +
* Programmation du robot.
 +
 
 +
=<div class="mcwiki-header" style="border-radius: 7px; padding: 7px; font-weight: bold; text-align: center; font-size: 80%; background: #8D8D8D; vertical-align: top; width: 98%;"> Cahier des charges </div>=
 +
 
 +
 
 +
 
 +
=<div class="mcwiki-header" style="border-radius: 7px; padding: 7px; font-weight: bold; text-align: center; font-size: 80%; background: #8D8D8D; vertical-align: top; width: 98%;"> PCB </div>=
 +
 
 +
[[Fichier:PCB_Vincent_Dubois.png|300px|thumb|left]]
 +
 
 +
La conception de la carte de A à Z aurait été trop ambitieux étant donné le nombre de séances et les connaissances nécessaires en électronique. J'ai donc décidé de reprendre le modèle déja existant des années précédentes. Toujours dans un soucis de taille, j'ai enlevé toutes la partie contrôleur de moteur qui n'est d'aucune utilité dans mon cas (propulsion uniquement avec les servomoteurs). J'ai également remplacé le suiveur de ligne par un capteur Hall sans oublier d'ajouter une résistance (10k) entre la sortie et l'alimentation du capteur. Enfin, j'ai essayé de diminuer au maximum les dimensions de la carte en comblant la place laissée par le contrôleur de moteur.
 +
 
 +
[[Fichier:PCB_Vincent-Dubois.jpg|200px|thumb|center|PCB final]]
 +
 
 +
La version finale du PCB :  [[Média:PCB_Vincent-Dubois.zip]]
 +
 
 +
Pour ce qui est du soudage des composants : tous les composants surfaciques ont été soudé au four et les composants traversants au fer.
 +
 
 +
=<div class="mcwiki-header" style="border-radius: 7px; padding: 7px; font-weight: bold; text-align: center; font-size: 80%; background: #8D8D8D; vertical-align: top; width: 98%;"> Châssis </div>=
 +
 
 +
[[Fichier:Chassis_Vincent_Dubois.png|400px|thumb|left|Modèle SVG du châssis]]
 +
Comme énoncé dans le cahier des charges, le robot doit avoir la taille la plus petite possible pour éviter d’être facilement repérable. Je suis donc parti sur une forme circulaire à 2 étages.
 +
Afin de gagner du temps sur sa conception, le châssis a été entièrement découpé au laser sur une plaque de 3mm d'épaisseur (et non imprimé en 3D).
 +
L'étage du dessus est entièrement circulaire. Des trous ont été prévu à l'avant afin de fixer le PCB à l'aide de petites entretoises permettant de le surélever légèrement.
 +
La plaque du dessous est également circulaire avec deux dégagements pour les roues à l'arrière. Elle inclut des emplacements pour fixer la roue folle à l'avant, ainsi que pour le support des servo-moteurs placés à l'arrière sous la plaque. Ce dernier est imprimé en 3D.
 +
 
 +
[[Fichier:Support_servo-moteur.jpg|thumb|200px|center|Support servo-moteurs]]
 +
 
 +
La batterie est placée entre les deux étages et est maintenue à l'aide de "T" traversants les deux plaques.
 +
Le sonar est également maintenue par des "T" à l'avant du robot.
 +
Le maintien des deux plaques ensemble est réalisé par 3 entretoises placées en périphérie.
 +
Les roues sont aussi réalisées à la découpe laser même si on pourra les remplacer par d'autres imprimées en 3D en plastique souple.
 +
 
 +
Le modèle de découpe final et le support de servomoteurs: [[Média:Châssis_Vincent-Dubois.zip]]
 +
 
 +
=<div class="mcwiki-header" style="border-radius: 7px; padding: 7px; font-weight: bold; text-align: center; font-size: 80%; background: #8D8D8D; vertical-align: top; width: 98%;"> Programmation </div>=
 +
 
 +
Le code final consiste en une boucle dans laquelle chaque fonction est appelée à différent moment. Chacune de ces fonctions à un rôle bien précis et cible généralement un seul composant du robot.
 +
 
 +
=='''Avancer'''==
 +
 
 +
  void avancer(int vitesse1, int vitesse2) {
 +
    servo1.write(90+vitesse1);
 +
    servo2.write(90-vitesse2);
 +
  }
 +
 
 +
=='''Sonar'''==
 +
 
 +
  float sonar() {
 +
    digitalWrite(trig_pin, HIGH);
 +
    delayMicroseconds(10);
 +
    digitalWrite(trig_pin, LOW);
 +
    long temps = pulseIn(echo_pin, HIGH);
 +
    float distance = (temps/2)*(340.0/1000);
 +
    return distance;
 +
  }
 +
 
 +
=='''TSOP'''==
 +
 
 +
  int Tsop() {
 +
    if (irrecev.decode(&results)) {
 +
      int val = results.value;
 +
      irrecev.resume();
 +
      return val;
 +
    }
 +
    return 0;
 +
  }
 +
 
 +
=='''Emetteur IR'''==
 +
 
 +
  void IR() {
 +
    iremet.sendNEC(2, 32);
 +
    irrecev.enableIRIn();
 +
  }
 +
 
 +
=='''Capteur Hall'''==
 +
 
 +
  int Hall() {
 +
    if (digitalRead(hall_pin) == 0) {
 +
      return 1;
 +
    }
 +
    return 0;
 +
  }
 +
 
 +
=<div class="mcwiki-header" style="border-radius: 7px; padding: 7px; font-weight: bold; text-align: center; font-size: 80%; background: #8D8D8D; vertical-align: top; width: 98%;"> Déroulement des séances </div>=
 +
 
 +
=='''15/01/2018'''==
 +
 
 +
Présentation du projet
 +
+ Découverte des outils (informatique et matériel) et des robots des années précédentes.
 +
+ Établissement du cahier des charges (dans les grandes lignes).
 +
 
 +
=='''16/01/2018'''==
 +
 
 +
Prise en main du logiciel Fritzing pour la création de la carte électronique.
 +
Ne voulant pas perdre trop de temps sur la création de la carte, je décide de reprendre un modèle déjà existant tout en le modifiant pour mon propre robot.
 +
+ Découverte du modèle existant et lecture de la documentation du microcontrôleur.
 +
 
 +
=='''18/01/2018'''==
 +
 
 +
Choix du capteur a effet Hall avec le binôme 4 (US1881 fonctionnant pour un champs magnétique de 0,5 à 9,5 mT). Ce composant possède 3 pattes : une pour l’alimentation, une pour la masse et une pour la sortie digitale. Il ne faut pas oublier de relier l’alimentation et la sortie par une résistance de 10kΩ.
 +
 
 +
Modifications sur la carte existante :
 +
*Enlever un TSOP car une proie n’a pas besoin d’autant de capteur infrarouge.
 +
*Enlever le contrôleur de moteur car on veut un robot de petite taille donc la propulsion sera gérée par 2 servo-moteurs
 +
*Enlever le détecteur de ligne (obsolète pour notre projet).
 +
*Ajouter le capteur à effet Hall.
 +
 
 +
Le plus gros du travail consiste à réarranger la carte afin de gagné un peu de place et réduire la taille du robot. Il faut néanmoins penser a la difficulté à soudre les composant et donc ne pas trop serrer les connexions sur le PCB.
 +
 
 +
=='''19/01/2018'''==
 +
 
 +
Réorganisation du PCB et vérifivations des connexion en vue d’une impression prochaine.
 +
 
 +
Pour gagner du temps pendant les séances, j'ai décider de commencer la conception du châssis a la maison. Après mure réflexion et quelques croquis je suis arrivé a définir une forme ou chaque élément du robot aurait sa place. La prochaine étape est donc de connaitre exactement la taille de chaque élément (servo-moteurs, batterie, roues, etc...) afin de fixer la taille du chassis
 +
 
 +
=='''22/01/2018'''==
 +
 
 +
Régler les problèmes de connexion sur le PCB à pris plus de temps que prévue. Cette séance est dédié à la finalisation de la carte électronique (orientation des TSOP, modification des connexions trop proches les unes des autres, etc...).
 +
 
 +
+ Prise en main de FreeCAD et Inkscape pour modéliser le chassis.
 +
 
 +
=='''25/01/2018'''==
 +
 
 +
Mesure des éléments du robot (servo moteur = sg90 -> voir datasheet).
 +
+ Début de la modélisation du châssis.
 +
 
 +
=='''26/01/2018 - 29/01/2018'''==
 +
 
 +
Conception châssis.
 +
 
 +
=='''01/02/2018'''==
 +
 
 +
Finalisation du châssis: création d'un unique fichier .svg rassemblant toute les pièces (contours rouges de 0.1mm d'épaisseur).
 +
 
 +
+ Réinitialisation d'une carte Arduino afin de se familiariser avec les composant du robot: controle des servo-moteurs, sonar, ...
 +
 
 +
=='''05/02/2018'''==
 +
 
 +
Découpe laser du châssis au fabricarium + impression support servo-moteurs.
 +
 
 +
Petits problèmes de conception sur le châssis: les encoches pour positionner le PCB sur la plaque du haut n'ont pas été placées dans le bon sens et les petits "T" permettant le maintient de la batterie et du sonar ne sont pas à la bonne taille.
 +
 
 +
=='''08/02/2018 - 12/02/2018'''==
 +
 
 +
Réception du PCB + soudure des composants de surface au four.
 +
 
 +
{| style="float: center; height: 210px; margin-left:0.2em; border: 1px solid #bbb;"
 +
| style="border: 1px solid #bbb;" valign="top" |[[Fichier:08-02-2018.jpg|210px]]
 +
| style="border: 1px solid #bbb;" valign="middle" |[[Fichier:12-02-18.jpg|200px]]
 +
| style="border: 1px solid #bbb;" valign="middle" |[[Fichier:15-02-18.jpg|200px]]
 +
|- style="font-size: 87%; text-align: center;"
 +
| valign="center" | 08/02/2018
 +
| valign="center" | 12/02/2018
 +
| valign="center" | 15/02/2018
 +
|}
 +
 
 +
=='''15/02/2018'''==
 +
 
 +
Soudure au fer des éléments traversants + vérifications.
 +
 
 +
=='''19/02/2018'''==
 +
 
 +
Réception du support servo-moteurs: problème de dimensions.
 +
Modification de la pièce en laissant une marge (0.5mm) pour chaque mesure
 +
+ envoie de la deuxieme impression.
 +
 
 +
=='''22/02/2018'''==
 +
 
 +
Réception nouveau support servo-moteurs : tout est bon.
 +
Montage du châssis + servo + roues + roue folle.
 +
{| style="float: center; height: 210px; margin-left:0.2em; border: 1px solid #bbb;"
 +
| style="border: 1px solid #bbb;" valign="top" |[[Fichier:22-02-2018.jpg|305px]]
 +
| style="border: 1px solid #bbb;" valign="middle" |[[Fichier:22-02-18 (2).jpg|300px]]
 +
|- style="font-size: 87%; text-align: center;"
 +
| valign="center" | 22/02/2018
 +
|}
 +
 
 +
Essais sur le PCB avec des programmes de base: visiblement il y a un problème avec le microcontrôleur. En réduisant les dimensions de la carte, j'ai malencontreusement créé une connexion entre 2 pattes du microcontrôleur.
 +
 
 +
=='''05/03/2018'''==
 +
 
 +
Essais sur une nouvelle carte (piste en trop coupée au cutter) : tout fonctionne parfaitement
 +
+ codage du PCB (contrôle des servos et du sonar)
 +
 
 +
=='''08/03/2018'''==
 +
 
 +
Fixation du PCB sur le robot
 +
+ calibration du temps nécessaire pour réaliser une rotation de 90°
 +
+ essais.
 +
{| style="float: center; height: 210px; margin-left:0.2em; border: 1px solid #bbb;"
 +
| style="border: 1px solid #bbb;" valign="top" |[[Fichier:08-03-18.jpg|205px]]
 +
| style="border: 1px solid #bbb;" valign="middle" |[[Fichier:08-03-18 (2).jpg|250px]]
 +
|- style="font-size: 87%; text-align: center;"
 +
| valign="center" | 08/03/2018
 +
|}
 +
 
 +
=='''12/03/2018'''==
 +
 
 +
Essai des TSOP : problème avec la bibliothèque IRremote.
 +
 
 +
=='''15/03/2018'''==
 +
 
 +
Essai des TSOP : problème de masse. J'ai oublié de connecter un des deux TSOP à la masse sur le PCB
 +
+ Soudure au fer d'un fil de masse
 +
+ essais.
 +
 
 +
{| style="float: center; height: 210px; margin-left:0.2em; border: 1px solid #bbb;"
 +
| style="border: 1px solid #bbb;" valign="top" |[[Fichier:15-03-18.jpg|200px]]
 +
|- style="font-size: 87%; text-align: center;"
 +
| valign="center" | 15/03/2018
 +
|}
 +
 
 +
=='''19/03/2018 et 26/03/2018'''==
 +
 
 +
Codage du PCB (programme final incluant chaque sous programme précédemment réalisés)
 +
 
 +
=='''09/04/2018'''==
 +
 
 +
Problème avec le capteur de Hall: il y a un court circuit entre la masse et la pin 19 (ADC6) du microcontrôleur à laquelle le capteur est relié
 +
+Soudure au fer d'un fil entre la sortie du capteur et la pin 28 (ADC5)
 +
 
 +
{| style="float: center; height: 210px; margin-left:0.2em; border: 1px solid #bbb;"
 +
| style="border: 1px solid #bbb;" valign="top" |[[Fichier:09-04-18.jpg|200px]]
 +
|- style="font-size: 87%; text-align: center;"
 +
| valign="center" | 09/04/2018
 +
|}
 +
 
 +
=='''23/04/2018'''==
 +
 
 +
Finalisation du code
 +
+ derniers ajustements (compensation entre les 2 roues)

Version actuelle datée du 16 juillet 2018 à 15:37


Vidéo HD

Robot Vincent Dubois.jpg



Introduction

A l’occasion de ce bureau d’étude, j’ai décidé de réaliser un robot communiquant « proie » miniature et entièrement autonome. Étant seul pour ce projet, j’ai préféré ne pas m’attarder sur la partie télécommande (Raspberry Pi) du robot. J’ai décidé de travailler autour de trois grands axes :

  • Réalisation de la carte électronique.
  • Découpe et impression 3D du châssis.
  • Programmation du robot.

Cahier des charges

PCB

PCB Vincent Dubois.png

La conception de la carte de A à Z aurait été trop ambitieux étant donné le nombre de séances et les connaissances nécessaires en électronique. J'ai donc décidé de reprendre le modèle déja existant des années précédentes. Toujours dans un soucis de taille, j'ai enlevé toutes la partie contrôleur de moteur qui n'est d'aucune utilité dans mon cas (propulsion uniquement avec les servomoteurs). J'ai également remplacé le suiveur de ligne par un capteur Hall sans oublier d'ajouter une résistance (10k) entre la sortie et l'alimentation du capteur. Enfin, j'ai essayé de diminuer au maximum les dimensions de la carte en comblant la place laissée par le contrôleur de moteur.

PCB final

La version finale du PCB : Média:PCB_Vincent-Dubois.zip

Pour ce qui est du soudage des composants : tous les composants surfaciques ont été soudé au four et les composants traversants au fer.

Châssis

Modèle SVG du châssis

Comme énoncé dans le cahier des charges, le robot doit avoir la taille la plus petite possible pour éviter d’être facilement repérable. Je suis donc parti sur une forme circulaire à 2 étages. Afin de gagner du temps sur sa conception, le châssis a été entièrement découpé au laser sur une plaque de 3mm d'épaisseur (et non imprimé en 3D). L'étage du dessus est entièrement circulaire. Des trous ont été prévu à l'avant afin de fixer le PCB à l'aide de petites entretoises permettant de le surélever légèrement. La plaque du dessous est également circulaire avec deux dégagements pour les roues à l'arrière. Elle inclut des emplacements pour fixer la roue folle à l'avant, ainsi que pour le support des servo-moteurs placés à l'arrière sous la plaque. Ce dernier est imprimé en 3D.

Support servo-moteurs

La batterie est placée entre les deux étages et est maintenue à l'aide de "T" traversants les deux plaques. Le sonar est également maintenue par des "T" à l'avant du robot. Le maintien des deux plaques ensemble est réalisé par 3 entretoises placées en périphérie. Les roues sont aussi réalisées à la découpe laser même si on pourra les remplacer par d'autres imprimées en 3D en plastique souple.

Le modèle de découpe final et le support de servomoteurs: Média:Châssis_Vincent-Dubois.zip

Programmation

Le code final consiste en une boucle dans laquelle chaque fonction est appelée à différent moment. Chacune de ces fonctions à un rôle bien précis et cible généralement un seul composant du robot.

Avancer

 void avancer(int vitesse1, int vitesse2) {
   servo1.write(90+vitesse1);
   servo2.write(90-vitesse2);
 }

Sonar

 float sonar() {
   digitalWrite(trig_pin, HIGH); 
   delayMicroseconds(10);
   digitalWrite(trig_pin, LOW);
   long temps = pulseIn(echo_pin, HIGH);
   float distance = (temps/2)*(340.0/1000);
   return distance;
 }

TSOP

 int Tsop() {
   if (irrecev.decode(&results)) {
     int val = results.value;
     irrecev.resume();
     return val;
   }
   return 0;
 }

Emetteur IR

 void IR() {
   iremet.sendNEC(2, 32);
   irrecev.enableIRIn();
 }

Capteur Hall

 int Hall() {
   if (digitalRead(hall_pin) == 0) {
     return 1;
   }
   return 0;
 }

Déroulement des séances

15/01/2018

Présentation du projet + Découverte des outils (informatique et matériel) et des robots des années précédentes. + Établissement du cahier des charges (dans les grandes lignes).

16/01/2018

Prise en main du logiciel Fritzing pour la création de la carte électronique. Ne voulant pas perdre trop de temps sur la création de la carte, je décide de reprendre un modèle déjà existant tout en le modifiant pour mon propre robot. + Découverte du modèle existant et lecture de la documentation du microcontrôleur.

18/01/2018

Choix du capteur a effet Hall avec le binôme 4 (US1881 fonctionnant pour un champs magnétique de 0,5 à 9,5 mT). Ce composant possède 3 pattes : une pour l’alimentation, une pour la masse et une pour la sortie digitale. Il ne faut pas oublier de relier l’alimentation et la sortie par une résistance de 10kΩ.

Modifications sur la carte existante :

  • Enlever un TSOP car une proie n’a pas besoin d’autant de capteur infrarouge.
  • Enlever le contrôleur de moteur car on veut un robot de petite taille donc la propulsion sera gérée par 2 servo-moteurs
  • Enlever le détecteur de ligne (obsolète pour notre projet).
  • Ajouter le capteur à effet Hall.

Le plus gros du travail consiste à réarranger la carte afin de gagné un peu de place et réduire la taille du robot. Il faut néanmoins penser a la difficulté à soudre les composant et donc ne pas trop serrer les connexions sur le PCB.

19/01/2018

Réorganisation du PCB et vérifivations des connexion en vue d’une impression prochaine.

Pour gagner du temps pendant les séances, j'ai décider de commencer la conception du châssis a la maison. Après mure réflexion et quelques croquis je suis arrivé a définir une forme ou chaque élément du robot aurait sa place. La prochaine étape est donc de connaitre exactement la taille de chaque élément (servo-moteurs, batterie, roues, etc...) afin de fixer la taille du chassis

22/01/2018

Régler les problèmes de connexion sur le PCB à pris plus de temps que prévue. Cette séance est dédié à la finalisation de la carte électronique (orientation des TSOP, modification des connexions trop proches les unes des autres, etc...).

+ Prise en main de FreeCAD et Inkscape pour modéliser le chassis.

25/01/2018

Mesure des éléments du robot (servo moteur = sg90 -> voir datasheet). + Début de la modélisation du châssis.

26/01/2018 - 29/01/2018

Conception châssis.

01/02/2018

Finalisation du châssis: création d'un unique fichier .svg rassemblant toute les pièces (contours rouges de 0.1mm d'épaisseur).

+ Réinitialisation d'une carte Arduino afin de se familiariser avec les composant du robot: controle des servo-moteurs, sonar, ...

05/02/2018

Découpe laser du châssis au fabricarium + impression support servo-moteurs.

Petits problèmes de conception sur le châssis: les encoches pour positionner le PCB sur la plaque du haut n'ont pas été placées dans le bon sens et les petits "T" permettant le maintient de la batterie et du sonar ne sont pas à la bonne taille.

08/02/2018 - 12/02/2018

Réception du PCB + soudure des composants de surface au four.

08-02-2018.jpg 12-02-18.jpg 15-02-18.jpg
08/02/2018 12/02/2018 15/02/2018

15/02/2018

Soudure au fer des éléments traversants + vérifications.

19/02/2018

Réception du support servo-moteurs: problème de dimensions. Modification de la pièce en laissant une marge (0.5mm) pour chaque mesure + envoie de la deuxieme impression.

22/02/2018

Réception nouveau support servo-moteurs : tout est bon. Montage du châssis + servo + roues + roue folle.

22-02-2018.jpg 22-02-18 (2).jpg
22/02/2018

Essais sur le PCB avec des programmes de base: visiblement il y a un problème avec le microcontrôleur. En réduisant les dimensions de la carte, j'ai malencontreusement créé une connexion entre 2 pattes du microcontrôleur.

05/03/2018

Essais sur une nouvelle carte (piste en trop coupée au cutter) : tout fonctionne parfaitement + codage du PCB (contrôle des servos et du sonar)

08/03/2018

Fixation du PCB sur le robot + calibration du temps nécessaire pour réaliser une rotation de 90° + essais.

08-03-18.jpg 08-03-18 (2).jpg
08/03/2018

12/03/2018

Essai des TSOP : problème avec la bibliothèque IRremote.

15/03/2018

Essai des TSOP : problème de masse. J'ai oublié de connecter un des deux TSOP à la masse sur le PCB + Soudure au fer d'un fil de masse + essais.

15-03-18.jpg
15/03/2018

19/03/2018 et 26/03/2018

Codage du PCB (programme final incluant chaque sous programme précédemment réalisés)

09/04/2018

Problème avec le capteur de Hall: il y a un court circuit entre la masse et la pin 19 (ADC6) du microcontrôleur à laquelle le capteur est relié +Soudure au fer d'un fil entre la sortie du capteur et la pin 28 (ADC5)

09-04-18.jpg
09/04/2018

23/04/2018

Finalisation du code + derniers ajustements (compensation entre les 2 roues)