Licence CC BY-NC

[DIY] Pedro Robot

Bras robotisé imprimé en 3D programmable Arduino

Publié :
Auteur :
Catégories :
Temps de lecture estimé : 3 minutes

Pedro Petit Robot est un bras robotisé Open Source imprimé en 3D équipé de quatre servomoteurs. Idéal pour l’apprentissage et l’enseignement Pedro permet aux enseignants, élèves ou étudiants de s’initier à la robotique et à la programmation.

Pedro Robot

Une fois les pièces du robot imprimées, son assemblage est très simple et nécessite très peu d’outils les étapes à suivre avec images détaillées sont décrites à la suite de ce cours. Équipé d’une carte embarquée avec un microcontrôleur Atmega328 le robot Pedro peut être piloté manuellement ou via une interface sur PC par liaison USB.

Pedro Robot

Cette interface développée en Python utilise des librairies graphiques comme Gtk ou Tkinter. L’avantage du langage Python pour ce type d’application est sa portabilité et sa compatibilité à différents système d’exploitation. Le même code source de notre interface sera donc compatible à la fois sur Windows, Linux et OS X.

Pedro Robot

Son microcontrôleur Atmega328 permet de programmer notre robot avec l’IDE Arduino. A la suite de ce cours nous verrons différentes applications réalisables avec le robot Pedro comme l’enregistrement et l’exécution de séquences programmées, la gestion de la mémoire ou la programmation de boutons d’action.

Pedro Robot

Impression 3D

Les fichiers .STL pour l’impression 3D du robot sont disponibles : ici

Pièces 3D

Assemblage

Connexion et Mapping Arduino

Pedro Petit Robot est équipé d’une carte embarquée programmable équipée d’un micro-controlleur Atmega328 alimenté en 5V. Quatre potentiomètre permettant de commander les 4 servomoteurs sont connectés aux ports analogiques A5, A4, A3 et A2 en entrée (INPUT) de l’Atmega328. Une liaison USB TTL permet au robot de recevoir des commandes par ordinateur via une interface développée en Python

Pedro Robot
Pedro Robot et mapping Arduino :
  • [Pedro Robot] <=> [Arduino]
  • Button 1 <=> digital pin 12
  • Button 2 <=> digital pin 13
  • Led 1 <=> digital pin 9
  • Led 2 <=> digital pin 10
  • Servo 1 <=> digital pin 3
  • Servo 2 <=> digital pin 5
  • Servo 3 <=> digital pin 6
  • Servo 4 <=> digital pin 11
  • Potentiometer 1 <=> analog pin 5
  • Potentiometer 2 <=> analog pin 4
  • Potentiometer 3 <=> analog pin 3
  • Potentiometer 4 <=> analog pin 2
Pedro Robot
Connexion module USB-TTL
  • [Pedro Robot] <=> [module USB-TTL]
  • D <=> DTR
  • R <=> Rx
  • T <=> Tx
  • V <=> Vcc
  • G <=> GND
Module USB-TTL

Logiciel et Installation

Logiciel Arduino : ici

Driver module USB-TTL CP2102

Système d’exploitation compatible : Windows, Linux et OS X

Pedro Robot Interface Python

Programmation Arduino

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include <Servo.h>

Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
int msg[5];

int val1 = 0;
int val2 = 0;
int val3 = 0;
int val4 = 0;

void setup() {
  Serial.begin(9600);

  pinMode (9,OUTPUT);
  digitalWrite (9, HIGH);
  pinMode (10,OUTPUT);
  digitalWrite (10, LOW);

  pinMode (7,INPUT);
  pinMode (8,INPUT);

  servo1.attach(3);
  servo2.attach(5);
  servo3.attach(6);
  servo4.attach(11);

  delay(1000);
}

void loop () {

  analog_Write();

  if (digitalRead(7) == true) {
     digitalWrite (9, HIGH);
  } else if (digitalRead(7) == false) {
     digitalWrite (9, LOW);
  }

  if (digitalRead(8) == true) {
     digitalWrite (10, HIGH);
  } else if (digitalRead(8) == false) {
     digitalWrite (10, LOW);
  }
}

void analog_Read() {

  val1 = analogRead(5); 
  val1 = map(val1, 0, 1023, 0, 180);  

  val2 = analogRead(4); 
  val2 = map(val2, 0, 1023, 0, 180); 

  val3 = analogRead(3); 
  val3 = map(val3, 0, 1023, 0, 180);

  val4 = analogRead(2); 
  val4 = map(val4, 0, 1023, 0, 180); 

  msg[1] = val1;  
  msg[2] = val2;
  msg[3] = val3; 
  msg[4] = val4; 

}

void analog_Write() {
  analog_Read(); 
  servo1.write (msg[1]); 
  servo2.write (msg[2]);
  servo3.write (msg[3]);
  servo4.write (msg[4]);
} 

`


4 commentaires

Ça a l’air génial. J’aurais un intérêt à essayer de faire ça chez moi rien que pour le côté mécanique (je n’y connais absolument rien). D’ailleurs, est-ce qu’on peut qualifier ce projet de "mécatronique" ? Car tu as l’air de combiner mécanique, électronique et informatique. C’est assez la classe quand même.

Pour ceux qui voudraient voir le robot en action, j’ai retrouvé la vidéo sur Youtube qui va bien :

Tu as tout à fait raison ce projet regroupe ces 3 aspects mécanique pour la partie design et impression 3D des différentes pièces du robot, électronique pour sa carte embarquée programmable et informatique pour la partie programmation arduino du robot et programmation python pour l’interface avec PC. En ce qui concerne sa conception, elle est très simple même pour un débutant, n’hésite pas si tu souhaites avoir des informations.

Voici une autre vidéo du robot programmé pour réaliser des actions répétées de manière autonome.

Pedro Robot
+5 -0

Du coup, avec le mapping, pas besoin du circuit imprimé ? On peut recréer le circuit chez soit en DIY ?

Projet très classe et très rigolo :3
Je m’y intéresserais certainement pendant l’été.

ache.one                                                            🦊

+1 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte