Mini-tank controlé à distance (1,5KM !)

image principale Mini-tank controlé à distance (1,5KM !)

Difficulté:

Robot tank controlé à distance par joystick !



– Avec ce tutoriel, vous pourrez vous venter d’avoir commencer à faire votre premier robot et vote premier petit projet d’électronique embarqué.
Avant tout ce projet à été pour moi, une première en terme de robotique, Ce que j’aime particulièrement dans ce projet c’est ca diversité. Car il intègre des moteurs, des capteurs ( ici l’intégration du JoyStick Analogique ), un communication UART avec un protocole simple.
Les Xbee sont super, et permettent de faire beaucoup de choses ! c’est comme un simple liaison RX/TX entre deux Arduino.
Je reconnais que ce tutoriel n’est pas fait pour absolument tout le monde. il y à un certain niveau en électronique/programmation à avoir au minimum.


Je remercie tout les jury, et personnes m’ayant soutenus dans ce projet !
Sur ce, bonne lecture.

Matériel :

Budget : Non défini

  • 1x Zumo robot (75:1)
  • 1x Arduino Uno
  • 2x Xbee ( moi j’ai deux version Pro ) et de quoi les programmé [ ps : les Xbee sont pré-configuré de base, de ce fait je ne m’étendrais pas sur leurs configurations !!! ]
  • Avant tout, je précise que le code est universel si l’on prend la librairie, peu importe les composants, mais veuillez quand même prendre si possible ceux qui sont en photo en préférence.1x joysitck ( analogique [ moi j’ai un CH TS Series])
  • 2x SparkFun Level Controler
  • 1x Arduino NANO
  • – Fils,étain,fer à souder
  • 4x Piles AA ( ou plus si vous voulez que la télécommande soit alimenté autre qu’en USB )

Etape 1 : Plan de montage

Voici le plan de montage “simplifié” fait à la main,

Etape 2 : Montage

Voici quelques photos du montage réel.

Etape 3 : La télécommande

A présent regardons la partie programmation de la télécommande en détails afin de la comprendre :

#include 



 int joyPin1 = A1;                 
 int joyPin2 = A2;                 
 byte value1 =0;                  // variable 
 byte value2 =0;                  // variable 

SoftwareSerial mySerial(12, 11); // RX, TX

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

  mySerial.begin(57600);
analogReference(DEFAULT);
}

void loop() {

  // lire la valeur de joy      0 - 1023
  value1 = (byte)(analogRead(joyPin1)>>2);  
  value2 = (byte)(analogRead(joyPin2)>>2); 

  delay(200);            //delais obligatoire pour la lecture du joystick !!!

    mySerial.write((byte)(0xFF));     // 0xFF corespond au Broadcast 

    mySerial.write((byte)(0xFF));     // 0xFF corespond au Broadcast 

    Serial.println(value1);
    mySerial.write((byte)(value1));

    Serial.println(value2);
    mySerial.write((byte)(value2));

}


// ce code peu être copier collé...

Etape 4 : Le robot

A présent regardons la partie programmation du robot en détails afin de la comprendre

#include                     // on inclus les diverse librairies ( à téléchargé ! )
#include 



ZumoMotors motors;

int VITESSE =0 ; //on initialise VITESSE = 0
int TOURN =0; //on initialise TOURN = 0
long tps = 0; 
int tmp;


 int value1=512;                  // variable 

 int value2=512;                  // variable 

SoftwareSerial mySerial(12, 11); // RX = 12, TX = 11

void setup() {
  // la communication ce fera sur 57600 Baud
  Serial.begin(57600);

  
  mySerial.begin(57600);

}

void loop() {


  /* RECEPTION ET LECTURE */

  if(mySerial.available()>3)
  {
  tmp = mySerial.read();
  if(tmp == 0xFF)      {
    tmp = mySerial.read();
    if(tmp == 0xFF) {

    value1 = ((byte)mySerial.read());
    Serial.println(value1);

    VITESSE = map(value1, 0, 255, -400, 400);
    Serial.println(VITESSE);

    value2 = ((byte)mySerial.read());
    Serial.println(value2);

    TOURN = map(value2, 0, 255, -400, 400);
    Serial.println(TOURN);
  }


/* MOTEURS */

     if(millis()-tps>150){
      tps = millis();



     //  modèle :   motors.setSpeeds(0,0);      ------- void ZumoMotors::setSpeeds(int leftSpeed, int rightSpeed)



        
       if(VITESSE+TOURN = -100  )
        motors.setSpeeds(VITESSE,TOURN);

       //Stop ------------------

       else
        motors.setSpeeds(VITESSE,VITESSE);


     }


      }
    }
  }
Etape 5 : Résultat final


MAGIE, ça marche
Voici une vidéo YouTube ( avouez que c’est vraiment mieux quand on fait “mumuse” avec haha ! )
LIEN : https://youtu.be/XntXHIFIk7g

Etape 6 : Possibles évolutions

Pour conclure avec ce tutoriel. sachez que ce robot est vraiment la “base” les évolutions sont vraiment à exploité. capteurs HC-SRF08 ( ultrason )
ou encore utiliser les capteurs du robot ( capteurs de ligne noire par exemple pour que le robot ne dépassé pas une zone s’il voie un trait noir/blanc )
Il y a aussi des capteurs qui serait vraiment super sympa à intégré dessus, tel une caméra avec un retour vidéo. ou pourquoi pas mettre une pince pour que le robot aille cherché votre pain haha ! ^^

N’oubliez pas de voté pour le projet s’il vous plais, cela me fait plaisir de voir que vous avez regardé ce tuto. et m’aide pour la suite !
Merci à vous !

Etape 7 : Téléchargements divers

Bonjour nous en terminale SI et nous faisons un robot démineur. Notre programme semble être similaire au votre est-ce possible d'avoir une photo de la télécommande?

Merci

Ces tutoriels devraient vous plaire

vignette Arduino et Porte automatique de poulailler
Arduino et Porte automatique de poulailler
vignette Préparer un fichier pour une découpe et une gravure laser
Préparer un fichier pour une découpe et une gravure laser
vignette Montez facilement votre console de jeu rétrogaming avec RECALBOX !
Montez facilement votre console de jeu rétrogaming avec RECALBOX !
avaatar JulienTuy

JulienTuy

Suivre

Vues: 675
Mis en favoris: 0

Découvrez d'autres tutoriels de

JulienTuy

Découvrez tous les tutoriels partagés sur Oui Are Makers

Powered by Oui Are Makers