HC-SR04 Capteur de Distance

Introduction

Dans ce projet, nous verrons comment implémenter un capteur de distance en utilisant Raspberry Pi en apprenant comment interfacer un capteur de distance à ultrasons HC-SR04 avec Raspberry Pi. Dans ce projet, lorsque le senseur est activé, il détectera a quelle distance se trouve l’objet placé directement en face.

Aperçu

Le senseur HC-SR04 émet un ultrason à 40 000 Hz qui se déplace dans l’air et s’il y a un objet ou un obstacle sur son trajet, il rebondit sur le module. Compte tenu du temps de trajet et de la vitesse du son, vous pouvez calculer la distance.

Une brève note sur le capteur de distance

Le module à ultrasons HC-SR04 possède 4 broches, Ground, VCC, Trig et Echo. Les broches Ground et VCC du module doivent être connectées à la masse et aux broches de 5 volts de la carte Arduino respectivement et les broches trig et echo à toute broche d’E/S numérique de la carte Arduino.

Connexion au Raspberry Pi

Python nous aide à calculer des distances! (D’abord en gpiozero) 

from gpiozero import DistanceSensor
from time import sleep

sensor = DistanceSensor(echo=11, trigger=20, max_distance=2.0)

while True:
    	distance = sensor.distance * 100
  
      print('Distance:%.1f'%distance) 
      time.sleep(1)

Et nous faisons un peu plus avec RPi.GPIO (nous ajoutons et contrôlons une LED)   

import RPi.GPIO as GPIO 
import time 

GPIO.setwarnings(False) 	# Les messages de warning nous ennoie
GPIO.setmode(GPIO.BOARD)

PIN_TRIGGER = 7  # Senseur, GPIO4 – Position 7
PIN_ECHO    = 11 # Senseur, GPIO17 – Position 11 
PIN_LED     = 3  # LED, GPIO2 – Position 3 
 
# Préparer les fonctions des pins 
GPIO.setup(PIN_TRIGGER, GPIO.OUT ) 
GPIO.setup(PIN_ECHO, GPIO.IN) 
GPIO.setup(PIN_LED, GPIO.OUT)  


while True: 
  
# Preparation du senseur
GPIO.output(PIN_TRIGGER, GPIO.LOW)
time.sleep(2)  # Donner du temps au senseur pour s’adapter 

GPIO.output(PIN_TRIGGER, GPIO.HIGH)
time.sleep(0.00001)  # 1 Nanoseconde  
GPIO.output(PIN_TRIGGER, GPIO.LOW)

# Mesure de la distance
while GPIO.input(PIN_ECHO)==0:
  pulse_start_time = time.time()
while GPIO.input(PIN_ECHO)==1:
      pulse_end_time = time.time()
pulse_duration = pulse_end_time - pulse_start_time
distance = round(pulse_duration * 17150, 2)  # Important! Formule distance
print ("Distance:", distance, "cm")

if distance <=20 :
  
  print ("Alerte de proximité! Heure:", pulse_end_time) 
    GPIO.output(PIN_LED, 1) 
  time.sleep(1)
  GPIO.output(PIN_LED, 0)