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)