Table des matières

Construction d'un robot pour l'association "Vert la science" de Polytech Sorbonne

Vert la science est une association de vulgarisation scientifique qui se présente tous les jeudis dans des écoles primaire de la région parisienne. Lors de ces interventions nous présentons des expériences scientifiques sur un thème choisi avec les professeurs. Nous avons pour rôle de développer le panel d'expérience de l'asso. Aujourd’hui nous allons créer un petit robot mobile qui sera capable de se daplacer en évitant les mur , les trous mais aussi de suivre une ligne.

Porteurs du projet

Romain Sever romain.sever@laposte.net, Mathieu Gourichon Mathieu.gourichon@mail.com, Théo Depalle theo.depalle@mail.com

Matériels nécessaires

Pour faire notre robot nous allons utiliser un arduino

upload.wikimedia.org_wikipedia_commons_3_38_arduino_uno_-_r3.jpg

Ainsi que quelques capteurs :

Début du projet

01/01/18

En premier lieu nous allons tester notre matériel et faire quelques essaies de code. On va donc essayer de contrôler un moteur avec le capteur ultrason, on branche tout d'abord le moteur à une alimentation et on le controlera grâce à un transitor (interupteur comander en tension), on branche également le capteur ultrasonore, et on code le tout pour que le moteur s'arette si un obstacle est trop pret.

Voici le code Arduino utilisée:

/*Initialisation des broches*/ const int IMPULSION = 2; Broche TRIGGER const int ECHO = 3; Broche ECHO const int MOTEUR = 5; broche moteur /* Constantes de temp */ const unsigned long TEMP_MAX = 25000UL; 25ms = ~8m à 340m/s Car le capteur peut detecter un obstacle au max à 4m /* Vitesse du son dans l'air en mm/us*/ const float VITESSE_SON = 340.0 / 1000; void setup() { /* Initialise les broches */ Serial.begin(9600); pinMode(IMPULSION, OUTPUT); pinMode(MOTEUR, OUTPUT); digitalWrite(IMPULSION, LOW); La broche TRIGGER est à 0V

pinMode(ECHO, INPUT);
digitalWrite(MOTEUR, HIGH);

}

void loop() {

/* 1. Lance une mesure de distance en envoyant une impulsion 5V
de 10µs sur la broche IMPULSION */
digitalWrite(IMPULSION, HIGH);
delayMicroseconds(10);
digitalWrite(IMPULSION, LOW);

/* 2. Mesure le temps entre l'envoi de l'impulsion ultrasonique
et son écho (si il existe) */
long mesure = pulseIn(ECHO, HIGH, TEMP_MAX);

/* 3. Calcul la distance à partir du temps mesuré d=v*(t/2) */
float distance_mm = mesure / 2.0 * VITESSE_SON; 
Serial.println(distance_mm);
if(distance_mm < 100 && distance_mm != 0)
  digitalWrite(MOTEUR, HIGH);
else
  digitalWrite(MOTEUR, LOW);
}

On réalise ensuite un chassis tout simple: on découpe un rectangle de bois, on récupère 4 roue, on vis le tout.

Après la réception des capteur de ligne, on les test:

int capteur1 = 7; capteur de ligne int capteur2 = 8; int val1, val2; void setup() { pinMode(capteur1, INPUT); pinMode(capteur2, INPUT); Serial.begin(9600); } void loop() { val1 = digitalRead(capteur1); val2 = digitalRead(capteur2); Serial.print(val1); Serial.print(“\t”); Serial.println(val2); delay(500); } On se rend compte que les capteurs fonctionnent pas sur une ligne noir tracer au marqueur, mais qu'il fonctionnent très bien sur une ligne noir tracé au chaterton. On se sert de 2 capteurs afin de pouvoir detecter de quel coter la voiture “derive de sa trajectoire” par exemple si le capteur droit renvoi 1 c'est que la voiture a dérivé à gauche et qu'il faudra donc controler les moteurs pour la faire plus aller à droite. Comme ceci la voiture pour suivre la ligne tracer au sol.