Un des capteurs souvent utilisés en robotique est le radar. Pour un robot qui se déplace, pouvoir connaître la distance des objets devant lui est un avantage certain.
Simuler Arduino Uno dans Tinkercad Circuits c'est possible, voir la diapositive 11 de ce document. Aussi cette autoformation à propos de Tinkercad Circuits.
Avec Arduino, le capteur utilisé ici est le HC-SR04.
Note : En cherchant un peu sur le Web, vous trouverez plusieurs tutoriels qui expliquent le fonctionnement (avec plus de détails qu’ici) de ce capteur.
Montage
La connexion est relativement simple :
Les broches «trig» et «echo» doivent être connectées sur une entrée/sortie numérique.
Calcul de la distance
Un des avantages pour le domaine de la mathématique, de la science et technologie de ce type de capteur est qu’il n’est pas «encapsulé», c’est-à-dire qu’il ne donne pas la mesure sans travail. En effet, nous devons comprendre le fonctionnement de ce capteur pour pouvoir «programmer» le calcul de la distance entre le capteur et l’objet.
Le capteur est activé en envoyant un signal à la broche «trig» (au moins 10 microsecondes). Par la suite, le capteur met la broche «echo» à «HIGH» (+ 5 V) pour une durée équivalant au temps qu’a pris le signal sonore pour se rendre à l’objet et revenir au capteur. C’est ce temps qui nous servira à calculer la distance de l’objet.
Les formules nécessaires.
- v=d/t
- Vitesse du son = 340 m/s ou 0.034 cm/µs
On vous laisse travailler un peu pour en arriver à programmer votre radar comme suit (source du petit programme) :
/* Utilisation du capteur Ultrason HC-SR04 */ //Source : http://www.locoduino.org/spip.php?article52 // définition des broches utilisées int trig = 11; //on peut utiliser n'importe quelle broche numérique int echo = 10; //https://www.arduino.cc/en/Reference/Long long lecture_echo; //durée de l'aller-retour du signal long cm; void setup() { pinMode(trig, OUTPUT); //sortie vers la broche trig pour démarrer le capteur digitalWrite(trig, LOW); pinMode(echo, INPUT); //broche d'entrée pour l'echo Serial.begin(9600); //démarre la connexion avec le moniteur série } void loop() { digitalWrite(trig, HIGH); //on démarre le signal delayMicroseconds(10); // durée du signal trig de 10 microsecondes digitalWrite(trig, LOW); //On arrête le signal lecture_echo = pulseIn(echo, HIGH); //la durée de cette lecture est proportionnelle au temps d'aller-retour du signal cm = lecture_echo / 58; // comment on arrive à cette formule? Serial.print("Distance en cm : "); Serial.println(cm); delay(1000); //on attend 1 s avant la prochaine mesure }
Question : Si on veut la mesure en mètre, quel serait le calcul?
On peut maintenant ajouter ce capteur à nos différents robot Arduino pour leur permettre de mesurer des distances.
Programmation Blockly@rduino
À tester et retester mais ça pourrait ressembler à ceci (version xml) :
Voici le fichier pour Ardublockly : radar_ardublockly.xml
mBlock (en ligne, télécharger) peut aussi être utilisé pour programmer Arduino Uno, voici une saisie d’écran du programme dans cet outil. À noter que mBlock fonctionne avec les chromebooks.
Une idée ou un indice pour faire ça avec blockly ?
Bonjour,
j’ai ajouté à la fin de l’article une image de ce que ça pourrait ressembler en Blockly@rduino.
Au plaisir.
Ping : Deguillage (pascaldeguillage) | Pearltrees
Bonjour,
pourquoi diviser par 58 la valeur de la durée de l’echo ?
Merci par avance et félicitations pour votre remarquable travail !
Guillaume
Bonjour,
la division par 58 se trouve en «jouant» avec la formule de vitesse, avec la vitesse du son, le temps en microsecondes de l’écho. Je ne donen pas ici le détail car nous demandons aux élèves ici de trouver la chose.
Au plaisir.