Comment mesurer une distance avec la Raspberry Pi ?

Introduction

Le capteur de distance (aussi appelé capteur ultrason) permet de réaliser des mesures de distance. Il permet d’estimer une distance allant de 2 cm à 400 cm avec une précision de 3mm. C’est le capteur de distance le plus utilisé et le moins cher. Il en existe des bien plus précis mais aussi bien plus chers.

Vous pouvez vous en procurer ici ou bien le trouver dans ce kit.

Dans ce cours on va voir comment mesurer la distance avec une Raspberry Pi. Voici le schéma de branchement du capteur HC-SR04 à la Raspberry Pi :

Voici le programme en python qui permet de lire la mesure de distance. Pour pouvoir l’ajouter vous devez créer un nouveau fichier comme ceci :

sudo nano distance.py
import RPi.GPIO as GPIO
import time

# Définir les broches
TRIG_PIN = 11
ECHO_PIN = 13

# Initialiser la bibliothèque GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(TRIG_PIN, GPIO.OUT)
GPIO.setup(ECHO_PIN, GPIO.IN)

def distance():
    # Envoyer une impulsion ultrasonique
    GPIO.output(TRIG_PIN, GPIO.LOW)
    time.sleep(2)  # Attente pour la stabilisation du capteur
    GPIO.output(TRIG_PIN, GPIO.HIGH)
    time.sleep(0.00001)
    GPIO.output(TRIG_PIN, GPIO.LOW)

    # Mesurer le temps entre l'émission et la réception du signal
    while GPIO.input(ECHO_PIN) == 0:
        pulse_start_time = time.time()

    while GPIO.input(ECHO_PIN) == 1:
        pulse_end_time = time.time()

    pulse_duration = pulse_end_time - pulse_start_time

    # Calculer la distance en utilisant la vitesse du son (343 m/s)
    distance_cm = pulse_duration * 34300 / 2

    return distance_cm

try:
    while True:
        dist = distance()
        print(f"Distance: {dist:.2f} cm")
        time.sleep(1)

except KeyboardInterrupt:
    # Arrêter proprement lorsqu'on appuie sur Ctrl+C
    GPIO.cleanup()

Pour lancer le programme vous pouvez tapez la ligne de commande suivante :

sudo python distance.py

On peut voir la distance du capteur par rapport un à un objet dans le terminal de la Raspberry Pi :