Raspberry Pi - Capteur Ultrasonique

Ce didacticiel vous apprend à utiliser Raspberry Pi et un capteur ultrasonique pour mesurer la distance aux obstacles ou objets. En détail, nous allons apprendre :

Préparation du matériel

1×Raspberry Pi 4 Model B
1×Ultrasonic Sensor
1×Jumper Wires
1×(Optional) Screw Terminal Block Shield for Raspberry Pi
1×(Optional) USB-C Power Cable with On/Off Switch for Raspberry Pi 4B
1×(Optional) Plastic Case and Cooling Fan for Raspberry Pi 4B
1×(Optional) HDMI Touch Screen Monitor for Raspberry Pi

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À propos du capteur ultrasonique

Le capteur ultrasonique HC-SR04 est utilisé pour calculer la distance à un objet en utilisant des ondes ultrasoniques.

Le brochage du capteur à ultrasons

Le capteur ultrasonique HC-SR04 a quatre broches :

  • Broche VCC : doit être connectée à VCC (5V)
  • Broche GND : doit être connectée à GND (0V)
  • Broche TRIG : cette broche reçoit un signal de contrôle (impulsion) du Raspberry Pi
  • Broche ECHO : cette broche envoie un signal (impulsion) au Raspberry Pi. Le Raspberry Pi mesure la durée de l'impulsion pour calculer la distance.
Brochage du capteur ultrasonique

Comment ça marche

Cette section est consacrée à des connaissances approfondies. NE vous inquiétez pas si vous ne comprenez pas. Ignorez cette section si elle vous surcharge, et revenez un autre jour. Continuez à lire les sections suivantes.
  1. Le microcontrôleur génère une impulsion de 10 microsecondes sur la broche TRIG, ce qui amène le capteur ultrasonique à émettre automatiquement des ondes ultrasoniques.
  2. Lorsque les ondes frappent un obstacle, elles sont réfléchies vers le capteur.
  3. Le capteur ultrasonique détecte alors l'onde réfléchie et mesure son temps de parcours.
  4. En conséquence, le capteur ultrasonique génère une impulsion vers la broche ECHO, avec une durée égale au temps de parcours de l'onde ultrasonique.
  5. Le microcontrôleur mesure la durée de l'impulsion sur la broche ECHO et calcule la distance entre le capteur et l'obstacle.

Comment obtenir la distance à partir d'un capteur ultrasonique

i. Pour calculer la distance à partir du capteur ultrasonique, deux étapes doivent être effectuées comme indiqué dans la section "Comment ça marche" (étapes 1 et 6) :

i. Générer une impulsion de 10 microsecondes sur la broche TRIG.

i. Mesurer la durée de l'impulsion sur la broche ECHO.

i. Utiliser la durée de l'impulsion mesurée pour calculer la distance entre le capteur et l'obstacle.

Calcul de la distance

Nous avons :

  • Le temps de trajet de l'onde ultrasonore (µs) : temps_de_trajet = durée_de_l'impulsion
  • La vitesse de l'onde ultrasonore : vitesse = VITESSE_DU_SON = 340 m/s = 0,034 cm/µs

Donc :

  • La distance de parcours de l'onde ultrasonique (cm) : distance_parcours = vitesse × temps_parcours = 0,034 × durée_impulsion
  • La distance entre le capteur et l'obstacle (cm) : distance = distance_parcours / 2 = 0,034 × durée_impulsion / 2 = 0,017 × durée_impulsion

Raspberry Pi - Capteur Ultrasonique

Les broches d'un Raspberry Pi peuvent créer une impulsion de 10 microsecondes et mesurer la longueur de l'impulsion. Cela nous permet de calculer la distance à partir du capteur ultrasonique en utilisant deux broches de Raspberry Pi. Donc, nous avons juste besoin d'utiliser deux broches du Raspberry Pi :

  • Une broche est connectée à la broche TRIG du capteur ultrasonique pour générer une impulsion de 10 µs.
  • L'autre broche est connectée à la broche ECHO du capteur ultrasonique pour mesurer l'impulsion du capteur.

Diagramme de câblage

Schéma de câblage du capteur ultrasonique Raspberry Pi

This image is created using Fritzing. Click to enlarge image

Pour simplifier et organiser votre câblage, nous vous recommandons d'utiliser un Screw Terminal Block Shield pour Raspberry Pi. Ce shield garantit des connexions plus sûres et plus faciles à gérer, comme illustré ci-dessous :

Raspberry Pi Screw Terminal Block Shield

Comment programmer un capteur ultrasonique

  • Créez une impulsion de 10 microsecondes sur la broche 9 du Raspberry Pi en utilisant les fonctions GPIO.output() et time.sleep().
  • Par exemple :
  • Réglez la broche 9 sur HIGH avec digitalWrite() puis attendez 10 microsecondes avec delayMicroseconds().
GPIO.output(TRIG_PIN, GPIO.HIGH) time.sleep(0.00001) GPIO.output(TRIG_PIN, GPIO.LOW)
  • Déterminez la durée de l'impulsion (µs) sur la broche 8 du Raspberry Pi en utilisant la fonction pulseIn(). Par exemple :
while GPIO.input(ECHO_PIN) == 0: pulse_start = time.time() # Début de l'impulsion while GPIO.input(ECHO_PIN) == 1: pulse_end = time.time() # Fin de l'impulsion pulse_duration = pulse_end - pulse_start # Durée de l'impulsion
  • Déterminer la distance (cm) :
distance = pulse_duration * 34300 / 2 # distance = durée de l'impulsion * 34300 / 2

Code Raspberry Pi

Étapes rapides

  • Assurez-vous d'avoir Raspbian ou un autre système d'exploitation compatible Raspberry Pi installé sur votre Pi.
  • Assurez-vous que votre Raspberry Pi est connecté au même réseau local que votre PC.
  • Assurez-vous que votre Raspberry Pi est connecté à Internet si vous devez installer certaines bibliothèques.
  • Si c'est la première fois que vous utilisez Raspberry Pi, consultez Installation du logiciel - Raspberry Pi.
  • Connectez votre PC au Raspberry Pi via SSH en utilisant le client SSH intégré sur Linux et macOS ou PuTTY sur Windows. Consultez comment connecter votre PC au Raspberry Pi via SSH.
  • Assurez-vous d'avoir la bibliothèque RPi.GPIO installée. Sinon, installez-la à l'aide de la commande suivante :
sudo apt-get update sudo apt-get install python3-rpi.gpio
  • Créez un fichier de script Python ultrasonic_sensor.py et ajoutez le code suivant :
# Ce code Raspberry Pi a été développé par newbiely.fr # Ce code Raspberry Pi est mis à disposition du public sans aucune restriction. # Pour des instructions complètes et des schémas de câblage, veuillez visiter: # https://newbiely.fr/tutorials/raspberry-pi/raspberry-pi-ultrasonic-sensor import RPi.GPIO as GPIO import time # Set the GPIO mode (BCM or BOARD) GPIO.setmode(GPIO.BCM) # Define GPIO pins for the ultrasonic sensor TRIG_PIN = 23 ECHO_PIN = 24 # Set the trigger and echo pins GPIO.setup(TRIG_PIN, GPIO.OUT) GPIO.setup(ECHO_PIN, GPIO.IN) def get_distance(): # Send a short pulse to the trigger pin GPIO.output(TRIG_PIN, GPIO.HIGH) time.sleep(0.00001) GPIO.output(TRIG_PIN, GPIO.LOW) # Measure the duration for the echo pulse while GPIO.input(ECHO_PIN) == 0: pulse_start = time.time() while GPIO.input(ECHO_PIN) == 1: pulse_end = time.time() pulse_duration = pulse_end - pulse_start # Calculate the distance based on the speed of sound (34300 cm/s) distance = pulse_duration * 34300 / 2 return distance try: while True: distance = get_distance() print(f"Distance: {distance:.2f} cm") time.sleep(1) except KeyboardInterrupt: # If the user presses Ctrl+C, clean up the GPIO configuration GPIO.cleanup()
  • Enregistrez le fichier et exécutez le script Python en entrant la commande suivante dans le terminal :
python3 ultrasonic_sensor.py
  • Placez votre main devant le capteur ultrasonique
  • Vérifiez la distance entre le capteur et votre main affichée sur le Terminal
PuTTY - Raspberry Pi
distance: 29.4 cm distance: 27.6 cm distance: 26.9 cm distance: 17.4 cm distance: 16.9 cm distance: 14.3 cm distance: 15.6 cm distance: 13.1 cm

Le script s'exécute en boucle infinie continuellement jusqu'à ce que vous appuyiez sur Ctrl + C dans le terminal.

Explication du Code

Consultez l'explication ligne par ligne contenue dans les commentaires du code source !

Comment filtrer le bruit des mesures de distance d'un capteur ultrasonique

Le résultat de mesure d'un capteur ultrasonique peut contenir du bruit, ce qui peut entraîner un fonctionnement indésirable dans certaines applications. Pour éliminer ce bruit, l'algorithme suivant peut être utilisé :

  1. Prenez plusieurs mesures et stockez-les dans un tableau
  2. Triez le tableau par ordre croissant
  3. Filtrez le bruit en :
    • Les plus petits échantillons sont considérés comme du bruit et doivent être ignorés
    • Les plus grands échantillons sont considérés comme du bruit et doivent être ignorés
    • La moyenne des échantillons du milieu doit être prise comme valeur mesurée

    Le code d'exemple suivant prend 20 mesures :

    • Ignorez les cinq plus petits échantillons, qui sont considérés comme du bruit.
    • Ignorez les cinq plus grands échantillons, qui sont également considérés comme du bruit.
    • Calculez la moyenne des 10 échantillons du milieu (du 5e au 14e).
    # Ce code Raspberry Pi a été développé par newbiely.fr # Ce code Raspberry Pi est mis à disposition du public sans aucune restriction. # Pour des instructions complètes et des schémas de câblage, veuillez visiter: # https://newbiely.fr/tutorials/raspberry-pi/raspberry-pi-ultrasonic-sensor import RPi.GPIO as GPIO import time TRIG_PIN = 23 # Raspberry Pi GPIO pin connected to TRIG pin of ultrasonic sensor ECHO_PIN = 24 # Raspberry Pi GPIO pin connected to ECHO pin of ultrasonic sensor GPIO.setmode(GPIO.BCM) GPIO.setup(TRIG_PIN, GPIO.OUT) GPIO.setup(ECHO_PIN, GPIO.IN) def get_distance(): filter_array = [] num_samples = 20 # Taking multiple measurements and store in an array for _ in range(num_samples): filter_array.append(ultrasonic_measure()) time.sleep(0.03) # To avoid ultrasonic interference (30 milliseconds delay) # Sorting the array in ascending order filter_array.sort() # Filtering noise # Discard the five smallest and five largest samples filtered_samples = filter_array[5:-5] # Calculate the average of the remaining samples distance = sum(filtered_samples) / len(filtered_samples) return distance def ultrasonic_measure(): GPIO.output(TRIG_PIN, True) time.sleep(0.00001) GPIO.output(TRIG_PIN, False) while GPIO.input(ECHO_PIN) == 0: pulse_start = time.time() while GPIO.input(ECHO_PIN) == 1: pulse_end = time.time() pulse_duration = pulse_end - pulse_start distance_cm = 0.017 * pulse_duration return distance_cm try: while True: distance = get_distance() print("Distance: {:.2f} cm".format(distance)) time.sleep(1) # Wait for 1 second before taking the next measurement except KeyboardInterrupt: print("Measurement stopped by the user.") finally: GPIO.cleanup()

Vidéo

Dépassez-vous

Utilisez un capteur à ultrasons pour réaliser l'un des projets suivants :

  • Construire un système d'évitement de collision pour une voiture télécommandée.
  • Mesurer la quantité de matériau dans une poubelle.
  • Surveiller le niveau de la poubelle.
  • Ouvrir et fermer automatiquement la poubelle. Conseil : Se référer à Raspberry Pi - Moteur Servo..

Applications des capteurs ultrasoniques

  • Éviter les collisions
  • Détecter le plein
  • Mesurer le niveau
  • Détecter la proximité

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!