Magneto-Car

Envoyé par le 10 Fév 2015

Ce projet a été réalisé au cours de la deuxième session de l’inter-semestre 2015, par : Likuang Yang, Reda affane et Hatim Tbez.

L’objectif de ce projet est de pouvoir télécommander un robot (une voiture)  par de simples gestes de la main. La conception et la réalisation de ce projet a porté sur deux grandes parties :

 

picture 1

      La voiture : Un robot de type Arduino, muni d’une interface Bluetooth lui permettant de recevoir les directives de la part du système de commande, conçu sous forme d’un gant.

 

 

picure2

        Le système de commande : Muni de capteurs de flexions, ce système permet de capter 4 mouvements différents de la main, et de les envoyer à travers l’interface Bluetooth vers la voiture. Chacun des 4 mouvements de la main ordonne à la voiture soit d’avancer, de freiner, de tourner à droite ou de tourner à gauche.

 

Voici un schéma récapitulant le fonctionnement de notre prototype:

 

Database

 

 

Matériel utilisé:

  • 2 cartes Arduino Uno
  • 2 bornes Bluetooth BlueSMiRF
  • Support de voiture ( 2 moteurs, 4 roues, châssis…)
  • 2 BreadBoard
  • 2 batteries
  • Fils de connexions

 

Montage du système de commande:

 

circuit gant

Code:

Le code du système de commande est le suivant:

#include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 3); // RX, TX

int r=0;

int v=A1;

int w=A2;

int capa=0;

int capb=0;

const int shreshhold=630;

const int s1=690;

const int s2=810;

const int numReadings = 10;

int readings[numReadings];      // the readings from the analog input

int index = 0;                  // the index of the current reading

int total = 0;                  // the running total

int average = 0;                // the average

void setup()

{

  // Open serial communications and wait for port to open:

  Serial.begin(9600);

  mySerial.begin(9600);

  pinMode(v, INPUT);

    for (int thisReading = 0; thisReading < numReadings; thisReading++)

    readings[thisReading] = 0;

}

 void loop() // run over and over

{ total= total – readings[index];

  // read from the sensor:

  readings[index] = analogRead(w);

  // add the reading to the total:

  total= total + readings[index];

  // advance to the next position in the array:

  index = index + 1;

  // if we’re at the end of the array…

  if (index >= numReadings)

    // …wrap around to the beginning:

    index = 0;

  // calculate the average:

  average = total / numReadings;

  // send it to the computer as ASCII digits

capb=average;

capa=analogRead(v);

Serial.println(capb);

if (capa<shreshhold){

      if (capb<s1){

      mySerial.println(52);

      Serial.println(« droit »);

      }else if(capb>s2){

      mySerial.println(53);

      Serial.println(« gauche »);}

     else {

           mySerial.println(49);

      Serial.println(« avance »);

     }

      }

    else{

      mySerial.println(51);Serial.println(« arete »);

    }

delay(100);

}

Laisser une réponse

Votre adresse e-mail ne sera pas publiée.