ENIB 2022 - groupe D : CandyGrabber : Différence entre versions

De Les Fabriques du Ponant
Aller à : navigation, rechercher
(Que fait ce projet ?)
 
(50 révisions intermédiaires par 3 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
==photo de l'équipe==
+
==Photo de l'équipe==
[[Fichier:Photoenib2018.jpg|600px]]
+
[[Image:La famille.jpg|300px|left]]
 +
<br clear="left">
  
 
==Que fait ce projet ? ==
 
==Que fait ce projet ? ==
  
Candy Grabber est une pince qui attrape des bonbon dans une boite. Cette pince se déplace grâce à un joystick.
+
Le principe du Candy Grabber est simple. Un joystick permet de déplacer une pince, et le but est que celle-ci attrape les bonbons contenus dans la boite afin de les récupérer.
  
 
==Liste des composants==
 
==Liste des composants==
  
* composant 1
+
'''1. Pour la partie électronique : '''
* composant 2
+
 
* ...
+
* 1 mini breadboard
 +
* 1 carte nano Arduino (avec cable d'alimentation)
 +
* 1 joystick (avec un bouton poussoir intégré)
 +
* 1 paquet de petits câbles de montage (mâle et femelle)
 +
* 1 mini vérin électrique (pour ouvrir ou fermer la pince)
 +
 
 +
 
 +
'''2. Pour le rail :'''
 +
 
 +
Pour le rail vous avez deux possibilités.
 +
 
 +
Pour la première on a besoin de :
 +
* 4 tiges en métal (2 de 30cm et 2 autres de 26cm dans notre cas)
 +
* 1 planches de bois (3mm d'épaisseur)
 +
* 2 servomoteurs
 +
* des élastiques assez grands et fins (100mm de longueur pour 1.8mm de diamètre dans notre cas)
 +
 
 +
Vous trouverez toutes les explications nécessaires pour la fabrication de vos rail dans le lien ci-dessous :
 +
https://www.youtube.com/watch?v=xJyjdwXrtXc
 +
<br>
 +
 
 +
 
 +
Pour la deuxième, on a besoin de :
 +
* 4 tiges en métal (2 de 30cm et 2 autres de 26cm dans notre cas)
 +
* 1 planche de bois (3mm d'épaisseur)
 +
* 4 servomoteurs
 +
* fil de cuivre assez fin (prévoir un peu de longueur) -> privilégier un fil fin autre que du cuivre, car au bout d'un moment le fil de cuivre devient cassant et il faudra le remplacer 😉
 +
* 2 cure-dents
 +
 
 +
 
 +
'''Voici un petit schéma pour illustrer la deuxième méthode :'''
 +
 
 +
''Ici seul le rail supérieur est représenté, le principe est le même pour le rail inférieur.
 +
À noter que c'est le même principe que celui expliqué dans le lien précédent avec quelques modifications 😉''
 +
 
 +
[[Fichier:Schéma vue de dessus d'un rail.png|vignette]]
 +
 
 +
''Vous trouverez le fichier pour la découpe laser en fin de description.''
 +
 
 +
<br>
 +
 
 +
 
 +
'''3. Pour la pince :'''
 +
 
 +
* 3 trombones
 +
* 1 pique à brochette
 +
* 1 planche de bois
 +
* 1 vérins électrique (il faudra adapter le code en conséquence, nous n'avions pas eu le temps de le traiter)
 +
 
 +
Voici un lien pour la fabrication de la pince :
 +
https://www.youtube.com/watch?v=hVH8njs6bKw
 +
<br>
 +
 
 +
''Fichier pour la découpe laser en fin de description.''
 +
 
 +
 
 +
'''4. Pour la boite :'''
 +
 
 +
* pailles (pour faire des piliers pour stabiliser le plateau)
 +
* plexiglas (30cm par 30cm) ou film plastique (30cm par 30cm aussi) pour les vitres
 +
 
 +
''Fichier pour la découpe laser dans la rubrique ci-dessous.''
 +
 
 +
==Découpe Laser==
 +
[[Fichier:Fichier decoupe laser.zip|vignette|tous les fichiers pour la fabrication du Candy Grabber sont là !]]
 +
 
 +
==Câblage électrique==
 +
 
 +
'''* Câblage des servomoteurs'''
 +
[[Fichier:Première partie du câblage .png|vignette]]
 +
 
 +
 
  
 
==Code==
 
==Code==
<pre>
+
<syntaxhighlight lang="C++" line>
ici je pose mon code documenté !
+
 
</pre>
+
/* Inclure la librairie Servo pour manipuler le servomoteur */
 +
#include "Servo.h"
 +
 
 +
/* Créer un objet Servo pour contrôler le servomoteur */
 +
Servo monServomoteur;
 +
Servo monServomoteur2;
 +
 
 +
void setup(){
 +
  // Attache le servomoteur à la broche D9
 +
  monServomoteur.attach(8);
 +
  monServomoteur2.attach(9);
 +
  monServomoteur.write(90);
 +
  monServomoteur2.write(90);
 +
  pinMode(5,INPUT);//activation vérin (dans notre cas une led bleu pour simuler le vérin que l'on a pas)
 +
  pinMode(6,OUTPUT);//activation du moteur (dans notre cas la led rouge) pour la descente de la pince
 +
  pinMode(7,INPUT);//bouton poussoir
 +
  digitalWrite(7,HIGH);//on active la résistance de pull-up du bouton poussoir du joystick
 +
  pinMode(A6,INPUT);//vrx
 +
  pinMode(A7,INPUT);//vry
 +
 
 +
  Serial.begin(9600);
 +
  }
 +
 
 +
void loop() {
 +
  // put your main code here, to run repeatedly:
 +
  int BP=digitalRead(7);
 +
  Serial.println(BP);
 +
  double VRx = analogRead(A6);
 +
  double VRy = analogRead(A7);
 +
  int c;
 +
  int x=0;
 +
  int y=10;
 +
  Serial.println(VRx);
 +
  //if (BP){ //si BP est à 1 donc  non appuyer
 +
   
 +
  //On test la position en x
 +
  if (VRx<400){
 +
    x=1;
 +
  }
 +
  if(VRx>600){
 +
    x=2;
 +
  }
 +
  //on test la position en y
 +
  if (VRy<400){
 +
    y=13;
 +
  }
 +
  if(VRy>600){
 +
    y=16;
 +
  }
 +
  //on definie une variable intermediaire
 +
  c=x+y;
 +
 
 +
  switch (c) {
 +
    //cas 1 gauche
 +
  case 11:
 +
    monServomoteur.write(180);
 +
    monServomoteur2.write(90);
 +
    delay(10);
 +
    break;
 +
    //cas 2 droite
 +
  case 12:
 +
    monServomoteur.write(0);
 +
    monServomoteur2.write(90);
 +
    delay(10);
 +
    break;
 +
    //cas 3 gauche
 +
  case 13:
 +
    monServomoteur2.write(180);
 +
    monServomoteur.write(90);
 +
    delay(10);
 +
    break;
 +
    //cas 4 gauche et gauche
 +
  case 14:
 +
    monServomoteur.write(180);
 +
    monServomoteur2.write(180);
 +
    delay(10);
 +
    break;
 +
    //cas 5 gauche et droite
 +
  case 15:
 +
    monServomoteur.write(0);
 +
    monServomoteur2.write(180);
 +
    delay(10);
 +
    break;
 +
    //cas 6 droite Y
 +
  case 16:
 +
    monServomoteur2.write(0);
 +
    monServomoteur.write(90);
 +
    delay(10);
 +
    break;
 +
    //cas 7 x gauche et y droite
 +
  case 17:
 +
    monServomoteur.write(180);
 +
    monServomoteur2.write(0);
 +
    delay(10);
 +
    break;
 +
    //cas 8
 +
  case 18:
 +
    monServomoteur2.write(0);
 +
    monServomoteur.write(0);
 +
    delay(10);
 +
    break;
 +
  default:
 +
    monServomoteur.write(90);
 +
    monServomoteur2.write(90);
 +
    delay(10);
 +
    break;
 +
}
 +
}
 +
}
 +
 
 +
</syntaxhighlight>
 +
 
 +
==Pistes d'amélioration==
 +
 
 +
Le projet n'a pas été abouti au final. Mais voici des idées pour y parvenir !
 +
 
 +
* '''La pince :'''
 +
Nous n'avons pas eu le temps de mettre en place le système d'ouverture et de fermeture de la pince.
 +
 
 +
Nous voulions utiliser un vérin électrique fixer sur l'élément mobile de la pince. Il faudra juste trouver un moyen de coder le vérin électrique, simulé pour le moment par des leds dans le code. D'ailleurs si vous disposez que de piston électrique il faudra trouver un moyen de les alimenter en 12V et non en 5V comme les servomoteurs.
 +
 
 +
 
 +
* '''Le rail :'''
 +
Notre système de rail n'est pas trop robuste.
 +
 
 +
Pour le perfectionner, nous aurions aimé rajouter des capteurs de fin de course pour éviter de trop forcer sur  les servomoteurs et d'abimer notre système.
 +
Pour plus de robustesse nous aurions du mettre en place un système de courroie et crémaillère pour le rail, car dans notre cas, le fil de cuivre devient cassant au bout d'un moment. Une solution serait de le remplacer par une ficelle fine.
 +
 
 +
'''NB :''' Vous pouvez fabriquer votre système de courroie et crémaillère à l'aide d'une imprimante 3D ou vous procurer le matériel en magasin 😁
 +
 
 +
 
 +
* '''Les améliorations qui ont été rajoutées :'''
 +
 
 +
# Nous avons rajouté des morceaux de bois de 40mm de longueur sur 25mm de largeur sur les quatre coins séparant la boite du chapeau pour plus de stabilité.
 +
# La pince avait du mal à atteindre l'emplacement pour déposer les bonbons donc nous avons rajouté un bloc de bois en forme d'entonnoir pour faciliter la dépose. Vous pouvez également agrandir cette espace pour éviter ce soucis.
 +
# Pour la stabilité du plateau, on a rajouté des piliers fait de pailles, et de cette façon, on peut aussi dissimuler tout le câblage en-dessous !
  
 
==Catégories==
 
==Catégories==
  
 
[[Catégorie:Enib2022]]
 
[[Catégorie:Enib2022]]

Version actuelle datée du 7 février 2022 à 21:53

Photo de l'équipe

La famille.jpg


Que fait ce projet ?

Le principe du Candy Grabber est simple. Un joystick permet de déplacer une pince, et le but est que celle-ci attrape les bonbons contenus dans la boite afin de les récupérer.

Liste des composants

1. Pour la partie électronique :

  • 1 mini breadboard
  • 1 carte nano Arduino (avec cable d'alimentation)
  • 1 joystick (avec un bouton poussoir intégré)
  • 1 paquet de petits câbles de montage (mâle et femelle)
  • 1 mini vérin électrique (pour ouvrir ou fermer la pince)


2. Pour le rail :

Pour le rail vous avez deux possibilités.

Pour la première on a besoin de :

  • 4 tiges en métal (2 de 30cm et 2 autres de 26cm dans notre cas)
  • 1 planches de bois (3mm d'épaisseur)
  • 2 servomoteurs
  • des élastiques assez grands et fins (100mm de longueur pour 1.8mm de diamètre dans notre cas)

Vous trouverez toutes les explications nécessaires pour la fabrication de vos rail dans le lien ci-dessous : https://www.youtube.com/watch?v=xJyjdwXrtXc


Pour la deuxième, on a besoin de :

  • 4 tiges en métal (2 de 30cm et 2 autres de 26cm dans notre cas)
  • 1 planche de bois (3mm d'épaisseur)
  • 4 servomoteurs
  • fil de cuivre assez fin (prévoir un peu de longueur) -> privilégier un fil fin autre que du cuivre, car au bout d'un moment le fil de cuivre devient cassant et il faudra le remplacer 😉
  • 2 cure-dents


Voici un petit schéma pour illustrer la deuxième méthode :

Ici seul le rail supérieur est représenté, le principe est le même pour le rail inférieur. À noter que c'est le même principe que celui expliqué dans le lien précédent avec quelques modifications 😉

Schéma vue de dessus d'un rail.png

Vous trouverez le fichier pour la découpe laser en fin de description.



3. Pour la pince :

  • 3 trombones
  • 1 pique à brochette
  • 1 planche de bois
  • 1 vérins électrique (il faudra adapter le code en conséquence, nous n'avions pas eu le temps de le traiter)

Voici un lien pour la fabrication de la pince : https://www.youtube.com/watch?v=hVH8njs6bKw

Fichier pour la découpe laser en fin de description.


4. Pour la boite :

  • pailles (pour faire des piliers pour stabiliser le plateau)
  • plexiglas (30cm par 30cm) ou film plastique (30cm par 30cm aussi) pour les vitres

Fichier pour la découpe laser dans la rubrique ci-dessous.

Découpe Laser

Fichier:Fichier decoupe laser.zip

Câblage électrique

* Câblage des servomoteurs

Première partie du câblage .png


Code

  1 /* Inclure la librairie Servo pour manipuler le servomoteur */
  2 #include "Servo.h"
  3 
  4 /* Créer un objet Servo pour contrôler le servomoteur */ 
  5 Servo monServomoteur;
  6 Servo monServomoteur2;
  7 
  8 void setup(){
  9   // Attache le servomoteur à la broche D9 
 10   monServomoteur.attach(8);
 11   monServomoteur2.attach(9);
 12   monServomoteur.write(90);
 13   monServomoteur2.write(90);
 14   pinMode(5,INPUT);//activation vérin (dans notre cas une led bleu pour simuler le vérin que l'on a pas)
 15   pinMode(6,OUTPUT);//activation du moteur (dans notre cas la led rouge) pour la descente de la pince
 16   pinMode(7,INPUT);//bouton poussoir
 17   digitalWrite(7,HIGH);//on active la résistance de pull-up du bouton poussoir du joystick
 18   pinMode(A6,INPUT);//vrx
 19   pinMode(A7,INPUT);//vry
 20   
 21   Serial.begin(9600);
 22   }
 23 
 24 void loop() {
 25   // put your main code here, to run repeatedly:
 26   int BP=digitalRead(7);
 27   Serial.println(BP);
 28   double VRx = analogRead(A6);
 29   double VRy = analogRead(A7);
 30   int c;
 31   int x=0;
 32   int y=10;
 33   Serial.println(VRx);
 34   //if (BP){ //si BP est à 1 donc  non appuyer
 35     
 36   //On test la position en x
 37   if (VRx<400){
 38     x=1;
 39   }
 40   if(VRx>600){
 41     x=2;
 42   }
 43   //on test la position en y
 44   if (VRy<400){
 45     y=13;
 46   }
 47   if(VRy>600){
 48     y=16;
 49   }
 50   //on definie une variable intermediaire
 51   c=x+y;
 52   
 53   switch (c) {
 54     //cas 1 gauche
 55   case 11:
 56     monServomoteur.write(180);
 57     monServomoteur2.write(90);
 58     delay(10);
 59     break;
 60     //cas 2 droite
 61   case 12:
 62     monServomoteur.write(0);
 63     monServomoteur2.write(90);
 64     delay(10);
 65     break;
 66     //cas 3 gauche
 67   case 13:
 68     monServomoteur2.write(180);
 69     monServomoteur.write(90);
 70     delay(10);
 71     break;
 72     //cas 4 gauche et gauche
 73   case 14:
 74     monServomoteur.write(180);
 75     monServomoteur2.write(180);
 76     delay(10);
 77     break;
 78     //cas 5 gauche et droite
 79   case 15:
 80     monServomoteur.write(0);
 81     monServomoteur2.write(180);
 82     delay(10);
 83     break;
 84     //cas 6 droite Y
 85   case 16:
 86     monServomoteur2.write(0);
 87     monServomoteur.write(90);
 88     delay(10);
 89     break;
 90     //cas 7 x gauche et y droite
 91   case 17:
 92     monServomoteur.write(180);
 93     monServomoteur2.write(0);
 94     delay(10);
 95     break;
 96     //cas 8
 97   case 18:
 98     monServomoteur2.write(0);
 99     monServomoteur.write(0);
100     delay(10);
101     break;
102   default:
103     monServomoteur.write(90);
104     monServomoteur2.write(90);
105     delay(10);
106     break;
107 }
108 }
109 }

Pistes d'amélioration

Le projet n'a pas été abouti au final. Mais voici des idées pour y parvenir !

  • La pince :

Nous n'avons pas eu le temps de mettre en place le système d'ouverture et de fermeture de la pince.

Nous voulions utiliser un vérin électrique fixer sur l'élément mobile de la pince. Il faudra juste trouver un moyen de coder le vérin électrique, simulé pour le moment par des leds dans le code. D'ailleurs si vous disposez que de piston électrique il faudra trouver un moyen de les alimenter en 12V et non en 5V comme les servomoteurs.


  • Le rail :

Notre système de rail n'est pas trop robuste.

Pour le perfectionner, nous aurions aimé rajouter des capteurs de fin de course pour éviter de trop forcer sur les servomoteurs et d'abimer notre système. Pour plus de robustesse nous aurions du mettre en place un système de courroie et crémaillère pour le rail, car dans notre cas, le fil de cuivre devient cassant au bout d'un moment. Une solution serait de le remplacer par une ficelle fine.

NB : Vous pouvez fabriquer votre système de courroie et crémaillère à l'aide d'une imprimante 3D ou vous procurer le matériel en magasin 😁


  • Les améliorations qui ont été rajoutées :
  1. Nous avons rajouté des morceaux de bois de 40mm de longueur sur 25mm de largeur sur les quatre coins séparant la boite du chapeau pour plus de stabilité.
  2. La pince avait du mal à atteindre l'emplacement pour déposer les bonbons donc nous avons rajouté un bloc de bois en forme d'entonnoir pour faciliter la dépose. Vous pouvez également agrandir cette espace pour éviter ce soucis.
  3. Pour la stabilité du plateau, on a rajouté des piliers fait de pailles, et de cette façon, on peut aussi dissimuler tout le câblage en-dessous !

Catégories