Mesure de distances – Capteur Ultrason – HC-SR04 – Raspberry Pi

Raccordement du module vers le port GPIO du Raspberry Pi avec quelques fils et deux résistances 1/4w (1 kOhm et 2,2 kOhm)

HC-SR04-Raccordement

#!/usr/bin/python2.7
#-*- coding: utf-8 -*-
#
# Mesure de distance avec des ultrason HC-SR04
# Date : 10/01/2015

# Import des librairies
import time
start0 = time.time()
import RPi.GPIO as GPIO

# Utilisation de la référence BCM à la place de la numérotation physique des pins.
GPIO.setmode(GPIO.BCM)

# Définition des pins utilisés sur le PORT GPIO 
GPIO_TRIGGER = 23
GPIO_ECHO = 24

print "Mesure par Ultrason HC-SR04"

# Programmation du port GPIO Entrées/Sorties
GPIO.setup(GPIO_TRIGGER,GPIO.OUT) # Trigger
GPIO.setup(GPIO_ECHO,GPIO.IN)
# Set trigger to False (Low)
GPIO.output(GPIO_TRIGGER, False)

# Laisse le module démarré tranquillement
time.sleep(0.5) #0,5 secondes de pause

# Envoi une impulsion de 10us au trigger
GPIO.output(GPIO_TRIGGER, True)
time.sleep(0.00001)
GPIO.output(GPIO_TRIGGER, False)
start = time.time()
while GPIO.input(GPIO_ECHO)==0:
    start = time.time()

while GPIO.input(GPIO_ECHO)==1:
    stop = time.time()

# Calcul de la durée d'impulsion 
elapsed = stop-start

# Distance parcourue par l'impulsion pendant ce temps
# multipliée par la vitesse de propagation du son dans l'air (cm/s)
distance = elapsed * 34000

# C'est la distance allée et retour qui est mesurée, donc division par 2 
distance = distance / 2

print "Distance : %.1f" % distance
print "Temps de mesure : %01f" % (time.time()-start0)
# Réinitialiser les paramètres GPIO
GPIO.cleanup()

La mesure est longue (512 ms) et monopolise le microcontrôleur.

Les mesures ne sont malheureusement pas justes mais Raspbian n’est pas un système temps réel et le capteur est assez imprécis. (602 mm pour 615mm)

Mesure de distance - résultat

Toutefois le capteur est facile à mettre en oeuvre.

Adapté de :

manuel-esteban

framboise314

Je testerai bientôt un autre capteur le GP2Y0A21YK0F de Sharp.