Laboratoire SUPINFO de recherche en robotique

Création d'une voiture robotique

Création d'une voiture robotique

25 avr, 2013

Aujourd’hui nous allons transformer un jouet pour enfant en … robot !

Vous avez sûrement une vieille voiture télécommandée dans votre grenier ou garage, ce tutoriel vous explique comment la transformer en voiture robotique !

 

 

 

1) Les étapes

  • Le matériel
  • Préparer la voiture
  • Créer son circuit
  • Écrire un premier programme
  • Pour la suite

 

2) Le matériel

  1. Une voiture télécommandée : pour des raisons économiques, je vous conseille d’aller chercher le jouet de votre enfance dans votre cave, grenier ou garage. Si vous n’en possédez pas (plus), ce genre de voiture se trouve chez n’importe quel revendeur de jouets ou de modélismes.
  2. Un fer à souder : vraiment pratique pour remplacer l’électronique d’origine.
  3. Une breadboard : aussi appelée plaque de prototypage, cette dernière vous permettra de vous tromper dans votre montage et de recommencer. :)
  4. 4 mosfets N et 4 mosfets P : plusieurs modèles existent, j’ai personnellement utilisé des IRF9530 et des IRF510
  5. 4 résistances d’une valeur d’1KΩ
  6. Des fils électriques adaptés à la breadboard
  7. Un Arduino : dans un premier temps, un Uno fera parfaitement l’affaire.
  8. Un tournevis : utile pour démonter la coque de la voiture

 

3) Préparer la voiture

L’avantage d’utiliser une voiture existante c’est qu’on n’a pas besoin de s’inventer des compétences en mécanique pour la rendre mobile, le travail est déjà fait.
Nous allons donc commencer par retirer la coque plastique et retirer la plaque électronique déjà présente (il est préférable de laisser les moteurs ;)).

Si tout se passe bien, nous avons désormais une coque comportant 4 roues, 2 moteurs et un emplacement pour la pile/batterie.

 voiture_sans_composant

 

4) Créer son circuit

Quelque soit le moteur de la voiture (avant ou arrière), il doit être capable de tourner dans les deux sens.
Il existe un circuit « on its own » appelé pont H qui permet d’inverser la polarité aux bornes d’un composant.
Nous allons donc en réaliser deux, un pour le moteur arrière (généralement ces voitures sont à propulsion) et un pour la direction (moteur avant).

Voici le schéma du circuit que nous allons réaliser :

schema_pont_h_

Petites précisions :

  •  » 12V from ATX » correspond en fait à la borne de la batterie de la voiture.
  • « 1B » et « 1A » correspondent, pour nous, à des PINs digitales de l’arduino que nous utilisons : j’ai utilisé les PINs 13 et 12 pour le moteur de propulsion et 11 et 10 pour le moteur de direction.
  • « GND » correspond à la borne – de la batterie mais également à la PIN GND de l’arduino.

Nous allons donc réaliser 2 circuits en suivant le schéma et les branchons en parallèle sur la batterie de la voiture.
Je vous laisse maintenant la charge de solidariser le tout sur la voiture (cette étape dépend de la forme de la voiture).

 

5) Premier programme

Pour la configuration de l’IDE (Integrated Development Environment) Arduino, vous trouverez un tutoriel réalisé par nos camarades de Paris ici.

Une fois que votre IDE Arduino est configuré, vous pouvez rentrer le code suivant :

// Définition des PIN
#define TM_LEFT 10
#define TM_RIGHT 11
#define SM_AHEAD 12
#define SM_BACK 13

// on définit ici le temps durant lequel le moteur de propulsion sera actif
#define POWER_TIME 10

int count = 0;
int speedRate = 0;
int directionState = 0;
int speedState = 0;

void change_order();
void apply_order();

void rotate_turn_motor();
void rotate_speed_motor();

void stop_turn_motor();
void stop_speed_motor();

// on indique à l'arduino les PINs qu'il va utiliser et on coupe tous les online casino  moteurs
void setup()
{
 pinMode(TM_LEFT, OUTPUT); 
 pinMode(TM_RIGHT, OUTPUT); 
 pinMode(SM_AHEAD, OUTPUT); 
 pinMode(SM_BACK, OUTPUT); 

 stop_turn_motor();
 stop_speed_motor();
}

// boucle du programme
void loop()
{
 change_order();
 apply_order();
}

// 0 : premier appel on indique à la voiture de reculer
// 1 : on indique à la voiture d'avancer
// 2 : on indique à la voiture de tourner à droite
// 3 : on indique à la voiture de tourner à gauche
// 4 : on indique à la voiture de s'arrêter
void change_order()
{
 if (count == 0)
 {
 speedRate = 50;
 directionState = 0;
 speedState = -1;
 count  ;
 }
 else if (count == 1)
 {
 delay(1000);
 directionState = 0;
 speedState = 1;
 count  ;

 }
 else if (count == 2)
 {
 delay(1000);
 directionState = -1;
 speedState = 1;
 count  ;
 }
 else if (count == 3)
 {
 delay(1000);
 directionState = 1;
 speedState = 1;
 count  ;
 }
 else if (count == 4)
 {
 delay(1000);
 directionState = 0;
 speedState = 0;
 speedRate = 0;
 count  ;
 }
}

void apply_order()
{
 if (speedRate != 0)
 {
 int wait_time = (1000 / speedRate) - POWER_TIME;

 rotate_turn_motor();
 rotate_speed_motor();

 delay(wait_time);

 stop_speed_motor();
 }
 else
 {
 stop_speed_motor();
 stop_turn_motor();
 }
}

void rotate_turn_motor()
{
 if (directionState > 0)
 {
 digitalWrite(TM_RIGHT, LOW);
 digitalWrite(TM_LEFT, HIGH);
 }
 else if (directionState < 0)
 {
 digitalWrite(TM_LEFT, LOW);
 digitalWrite(TM_RIGHT, HIGH);
 }
 else
 stop_turn_motor();
}

void rotate_speed_motor()
{
 if (speedState > 0)
 {
 digitalWrite(SM_BACK, LOW);
 digitalWrite(SM_AHEAD, HIGH);
 }
 else if (speedState < 0)
 {
 digitalWrite(SM_AHEAD, LOW);
 digitalWrite(SM_BACK, HIGH);
 }
 else
 stop_speed_motor();
}

void stop_turn_motor()
{
 digitalWrite(TM_LEFT, LOW);
 digitalWrite(TM_RIGHT, LOW);
}

void stop_speed_motor()
{
 digitalWrite(SM_AHEAD, LOW);
 digitalWrite(SM_BACK, LOW);
}

 

6) Pour la suite

Vous pouvez maintenant commencer à jouer avec votre robot en ajoutant des capteurs :

  • une caméra
  • un capteur de couleur
  • un capteur ultrasonique
  • un gyroscope
  • etc.

arduino_car

FacebookTwitterGoogle+
468 ad

Laisser un commentaire