Posted on Leave a comment

Capteur ultrason HC-SR04 sur Raspberry Pi

Dans ce tutoriel, nous utilisons un capteur à ultrasons pour mesurer les distances. Avec un script Python sur votre Raspberry Pi, nous calculons la distance jusqu’à un objet. Lorsque vous aurez terminé ce tutoriel, vous pourrez connecter le HC-SR04 à votre Pi via les broches GPIO. Vous aurez également les éléments de base pour convertir les mesures du capteur en une distance mesurée.

Ce dont vous aurez besoin pour ce tutoriel

Tout d’abord, vous devez avoir un Raspberry Pi 3 avec la dernière version de Raspbian. Cette version comprend “Thonny”. Nous utiliserons cet EDI convivial pour écrire notre code Python. Si vous n’êtes pas familier avec Python ou avec Thonny ou avec les broches GPIO, je vous suggère de consulter nos tutoriels “Débuter à programmer en Python sur Raspberry Pi” et/ou “Commencer à programmer les GPIO du Raspberry Pi” pour une introduction rapide.

Ensuite, vous aurez besoin d’un peu de matériel supplémentaire:

  • un breadboard (nous utilisons un breadboard de 400 points)
  • un capteur ultrason HC-SR04
  • un résistance de 1k Ohm et une résistance de 2k Ohm
  • des câbles Dupont
  • un T-cobbler
  • un câble GPIO 40 broches

Raspberry Pi GPIO discovery kit

Si vous manquez des pièces, n’hésitez pas à visiter notre boutique. Nous avons un kit bien conçu contenant toutes les pièces dont vous avez besoin pour démarrer.

Le capteur ultrason HC-SR04

Le capteur à ultrasons HC-SR04 utilise le principe du sonar pour déterminer la distance à un objet. Il offre une mesure sans contact avec une bonne précision et des lectures stables. Sur le module, nous trouvons un émetteur à ultrasons et un récepteur. Le capteur a une portée de 2 à 400 cm. La précision de la mesure est de +/- 0,5 cm.

Le capteur utilise des signaux sonores ultrasoniques pour définir la distance:

  • L’émetteur envoie un signal ultrason dans la direction de l’objet.
  • Lorsque le signal atteint l’objet, il est renvoyé au capteur.
  • Le récepteur peut détecter le signal réfléchi.

Nous pouvons calculer la différence de temps entre le moment où l’émetteur envoie le signal et le moment où le récepteur capte le signal. Puisque la vitesse du son est connue (343,3 m / s ou 34330 cm / s), nous pouvons maintenant calculer la distance comme ceci:

distance = vitesse * temps , ou dans notre cas:

distance = 34330 * temps / 2 , ou distance = 17165 * temps

Remarque: le temps mesuré prend en compte la distance du capteur à l’objet et la distance de l’objet au capteur, il faut donc diviser ce temps par 2.

Mettre en place la partie matérielle

Avant de brancher des câbles sur les broches GPIO de votre Raspberry Pi, assurez-vous d’éteindre correctement le Pi et de retirer le câble d’alimentation de la carte mère!

capteur ultrason HC-SR04 connecté au Raspberry Pi
  • connectez le câble 40 broches sur les broches GPIO de votre Pi (si nécessaire, retirez d’abord le cache de votre Pi)
  • branchez le T-cobbler sur le breadboard comme indiqué sur la figure ci-dessus ou ci-dessous
  • branchez l’autre extrémité du câble 40 broches dans le T-cobbler
  • reliez la broche VCC du capteur à une broche 5V (fil rouge)
  • reliez la broche Trig du capteur à la broche 23 (fil vert)
  • connectez la broche Echo du capteur à la résistance de 1 kOhm, connectez l’autre extrémité de la résistance à la broche 24 (fil jaune)
  • connectez le GND du capteur à la rangée “-” de la planche à dessin et connectez également le GND GPIO à la rangée “-” de la planche à pain (câble noir)
  • insérez la résistance de 2 kOhm entre la broche 24 et la rangée “-“
capteur ultrason HC-SR04 connecté au Raspberry Pi

Les 2 résistances permettent de réduire la tension du signal Echo de 5V à 3,3V. Connecter la broche Echo directement à une broche GPIO (fournie pour 3.3V) peut l’endommager. Nous faisons cela sur la base du principe du “diviseur de tension”.

Ecrire le code

Le but est d’écrire un programme Python très simple qui nous permet de calculer une distance en cm entre le capteur à ultrasons et un objet. Pour écrire le code, nous utilisons l’EDI Thonny. Vous pouvez trouver Thonny dans le menu d’applications de votre Raspberry Pi.

Écrivez ou collez le code suivant dans l’EDI:

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
TRIG = 23
ECHO = 24

GPIO.setup(TRIG,GPIO.OUT)
GPIO.setup(ECHO,GPIO.IN)

GPIO.output(TRIG, False)
print ('Waiting a few seconds for the sensor to settle')
time.sleep(2)
GPIO.output(TRIG, True)
time.sleep(0.00001)
GPIO.output(TRIG, False)

while GPIO.input(ECHO)==0:
pulse_start = time.time()

while GPIO.input(ECHO)==1:
pulse_end = time.time()

pulse_duration = pulse_end - pulse_start
distance = pulse_duration * 17165
distance = round(distance, 1)
print ('Distance:',distance,'cm')
GPIO.cleanup()

Quelques explications sur le code:

  • GPIO.setmode (GPIO.BCM): L’option GPIO.BCM signifie que nous faisons référence aux broches par le numéro “Broadcom SOC channel”, ce sont les numéros après “GPIO”
  • GPIO.setwarnings (False): nous l’utilisons ceci pour éviter les messages d’avertissement.
  • GPIO.setup(TRIG,GPIO.OUT): nous définissons la broche TRIG-pin (= 23) comme une broche de sortie
  • GPIO.setup(ECHO,GPIO.IN): nous définissons la broche ECHO-pin (= 24) comme une broche d’entrée
  • GPIO.output(TRIG, False)
    print ('Waiting a few seconds for the sensor to settle')
    time.sleep(2)
    Nous mettons la broche TRIG en position basse et attendons 2 secondes
  • GPIO.output(TRIG, True)
    time.sleep(0.00001)
    GPIO.output(TRIG, False)
    puis nous envoyons une impulsion de 10 µs avec la broche TRIG
  • while GPIO.input(ECHO)==0:
    pulse_start = time.time()
    ceci est une boucle qui nous permet d’enregistrer le dernier horodatage avant que le signal atteigne le récepteur.
  • Attention, Python est sensible aux espaces. Ne supprimez pas le “tab” avant la ligne de code quit suit la commande “while”
  • while GPIO.input(ECHO)==1:
    pulse_end = time.time()
    nous enregistrons ici le dernier horodatage auquel le récepteur détecte le signal. À savoir, le récepteur commencera à recevoir un signal direct jusqu’à ce que le signal réfléchi soit totalement reçu.
  • pulse_duration = pulse_end - pulse_start nous calculons la différence de temps entre les deux horodatages
  • distance = pulse_duration * 17165 nous calculons la distance en fonction du temps calculé (voir l’explication dans le paragraphe précédent)
  • Enfin, nous arrondissons le résultat avec une précision de une décimale, nous l’imprimons et réinitialisons les broches GPIO.
capteur ultrason HC-SR04 script Python

Lorsque vous avez terminé avec le code, pointez le capteur sur un objet à surface plane et cliquez sur le bouton Exécuter. Vous verrez la distance entre le capteur et l’objet apparaître à l’écran.

Soyez prudent avec d’autres objets à proximité. Ceux-ci pourraient également envoyer un écho. Ce qui vous donnerait alors des valeurs incorrectes.

Toutes nos félicitations! Avec cette configuration, vous comprenez le principe du fonctionnement de certains télémètres. Vous pouvez également utiliser le script pour traiter le résultat dans une application où vous souhaitez mesurer ou surveiller vous-même une certaine distance. Ayez encore beaucoup de plaisir!

Laissez nous un commentaire

Your email address will not be published. Required fields are marked *

Abonnez-vous à notre newsletter

En vous abonnant, vous acceptez notre politique de protection de la vie privée.