Les cookies assurent le bon fonctionnement de nos services. En utilisant ces derniers, vous acceptez l'utilisation des cookies. En savoir plus

Nouveau !

Stage Lettering online

En savoir +

Atelier promotion 1

Nouveau !

Atelier Scratch enfant online

S'inscrire

Atelier promotion 1

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

Partager:

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

  • 4x Piles AA ( ou plus si vous voulez que la télécommande soit alimenté autre qu’en USB )
  • – Fils,étain,fer à souder
  • 1x Arduino NANO
  • 2x SparkFun Level Controler
  • 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 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 !!! ]
  • 1x Arduino Uno
  • 1x Zumo robot (75:1)

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

Partager:

Recevez une fois par mois les meilleurs tutoriels Déco dans votre boîte mail


Ces tutoriels devraient vous plaire

Construire son Bartop Arcade de A à Z
Un capteur de température/humidité en WIFI avec une page Web
Connecter un écran LCD en I2C

JulienTuy

Suivre


J'aime: 0

Découvrez d'autres tutoriels de

JulienTuy

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

Powered by Oui Are Makers