Capteur ultrason SRF05 / Arduino


Le capteur SRF05 et un émetteur récepteur d'ultrason ( 40 KHz) abordable de la société Robot Electronics. D'une portée allant théoriquement de 1 à 400 cm sur un angle de 30°
(les tests révèlent une certaine difficulté d'évaluation de la distance en dessous de 3cm), il permet l'utilisation de 1 ou de 2 broches pour l’émission/réception (la deuxième solution accélère le traitement) et mesure 43 x 10 x 17 mm.Le principe de mesure de distance avec ce type de capteur repose sur le temps que mets une onde sonore émise pour aller vers un objet, rebondir puis revenir vers le récepteur.
Ce temps (t) est récupérer par la arduino et nous pouvons aisément en déduire une distance en multipliant par la vitesse du son (340 m/s) et en divisant par 2 ( le son faisant un aller/retour) soit : d = (340 x t) / 2 mètres.
Bien que la programmation soit assez facile à réaliser, nous préférerons utiliser la bibliothèque NewPing qui nous permet d'éviter les gels d’exécution du programme du aux délais nécessaires au fonctionnement du capteur et ainsi conserver la possibilité d'un multitâche.

Connexion à la carte
Évaluation de la distance ( de 0 à 100cm ) et retour sur moniteur série:

#include <NewPing.h> // bibliothèque de gestion des delays
#define PinEcho 11 // broche Echo sur pin Digital 11
#define PinTrigger 12 // broche Trigger sur pin Digital 12
#define distanceMax 100 // définition de la distance maximale de captation en centimètres.
NewPing sonar(PinTrigger, PinEcho, distanceMax); // initialisation de la fonction de sonar de notre bibliothèque
int pingLap = 50; // temps entre chaque pulsation en millisecondes.
long pingTimer; // minuterie entre chaque pulsation.
void setup() {
  Serial.begin(9600); // initialisation du moniteur.
  pingTimer = millis(); // initialisation de la minuterie.
}

void loop() {
  if (millis() >= pingTimer){
    pingTimer += pingLap;
    sonar.ping_timer(echoSonar); // fonction de vérification des conditions. 
  }
}

void echoSonar() {
  if (sonar.check_timer()) // fonction de vérification de la minuterie.
  { 
    Serial.print("Distance à l'obstacle: ");
    Serial.print(sonar.convert_cm(sonar.ping_result)); // fonction de conversion du delai en microsecondes en distance en cm.
    Serial.println("cm");
  }
}