Nouveau ! Création d'une barre de recherche sur la page d'accueil pour naviguer encore plus simplement sur le site.

Tutoriel Raspberry #4
Mesure de distances avec un capteur HC-SR04


Mis à jour le : 27/06/2017


Le capteur à ultrasons HC-SR04 permet de mesurer une distance de 2 à 400cm en envoyant des signaux sonores à 40 kHz. En fonction du temps qui sépare l'émission de la réception, on trouve par un calcul la distance. Le capteur est allimenté en +5V.

I. Prérequis

Pour utiliser une sonde HC-SR04 avec un Raspberry, il faut :

- Un Raspberry Pi,
- Une sonde HC-SR04,
- Une résistance 1KΩ et 2KΩ,
- Des cables.

Une fois tous les éléments réunis, on peut passer au branchement.

II. Branchement du capteur au Raspberry

Le capteur HC-SR04 se connecte donc au Raspberry grâce à 4 PINs : VCC, Trig, Echo et GND. Pour le connecter, nous aurons besoin de deux résistances : 1KΩ et 2KΩ. Connectez l'HC-SR04 comme ceci :


Schéma de branchement d'un HC-SR04 sur Raspberry Pi 3
Schéma de branchement d'un HC-SR04 sur Raspberry Pi B rev 2

Une fois branché, il suffit d'exécuter un script Python pour obtenir la distance calculée entre le capteur et l'obstacle.

III. Programmation du capteur en Python

Ce script Python va donner une distance en centimètres toutes les secondes pendant un nombre de fois donné :


import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)

print "+-----------------------------------------------------------+"
print "|   Mesure de distance par le capteur ultrasonore HC-SR04   |"
print "+-----------------------------------------------------------+"

Trig = 23          # Entree Trig du HC-SR04 branchee au GPIO 23
Echo = 24         # Sortie Echo du HC-SR04 branchee au GPIO 24

GPIO.setup(Trig,GPIO.OUT)
GPIO.setup(Echo,GPIO.IN)

GPIO.output(Trig, False)

repet = input("Entrez un nombre de repetitions de mesure : ")

for x in range(repet):    # On prend la mesure "repet" fois

   time.sleep(1)       # On la prend toute les 1 seconde

   GPIO.output(Trig, True)
   time.sleep(0.00001)
   GPIO.output(Trig, False)

   while GPIO.input(Echo)==0:  ## Emission de l'ultrason
     debutImpulsion = time.time()

   while GPIO.input(Echo)==1:   ## Retour de l'Echo
     finImpulsion = time.time()

   distance = round((finImpulsion - debutImpulsion) * 340 * 100 / 2, 1)  ## Vitesse du son = 340 m/s

   print "La distance est de : ",distance," cm"

GPIO.cleanup()

L'execution de ce programme donne :


Resultat du programme d'un HC-SR04 au Raspberry

EspaceRaspberryFrançais

N'hésitez pas à aimer notre page Facebook pour apporter du soutien au site !


Pour encore plus de soutien, un don permettrai une meilleure actualisation du site, l'apparition de plus de tutoriels... et me motiverai à proposer de plus en plus de contenu. Merci d'avance :)