myRaspberry

Mes aventures en Raspberry et Arduino

Capteur SR04

Posted on 6 mai 2016  in Composants

Le capteur SR04 est un capteur de mesure de distances par utltrason.

HC-SR04-2

  • une broche (Gnd), utilisée pour mettre le module au GND
  • une broche de sortie (Echo), utilisée pour informer de la fin de l’émission du train d’ultrasons et de son retour après réflexion sur l’obstacle ;
  • une broche d’entrée (Trig pour Trigger), utilisée pour déclencher l’émission du train d’ultrasons ;
  • une broche (Vcc), utilisée pour alimenter le capteur en 5 V.

Le principe est le suivant:

  • Mettre le trigger à 1 et compter
  • Ecouter ECHO, dès qu’il passe à 1 noter le temps.

Distance=temps / (340*2) metres

 

Attention : Le module est alimenté en 5V

Le 5V ne peut pas être appliqué directement sur une entrée du GPIO (ECHO) sous peine de destruction de l’entrée, et même parfois plus grave, celle du SoC !

Il faut donc diminuer cette tension en utilisant un diviseur de tension, appelé également pont diviseur :

mesure_ultrasons_02La tension de sortie du HC-SR04 est envoyée sur Vin et Vout est appliquée au GPIO. La tension résultante est Vout = Vin (R2/(R1+R2)).

Capture d’écran 2016-05-06 à 5.08.06 PM

 

########################################
#  SR04
#
# HUB.BOSSEUR@GMAIL.COM
# http://aubonsurf.free.fr
#######################################

import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)


# SETUP : ENTREES/SORTIES
pinTrig = 23      # Entree Trig du HC-SR04 branchee 
pinEcho = 24      # Sortie Echo du HC-SR04 branchee 
GPIO.setup(pinTrig,GPIO.OUT)
GPIO.setup(pinEcho,GPIO.IN)
GPIO.output(pinTrig, False)


# j'effectue 50 mesures toutes les 1 secondes
for x in range(50):    
   time.sleep(1)       # Attente 1S
 
   GPIO.output(pinTrig, True)
   time.sleep(0.00001)
   GPIO.output(pinTrig, False)
   

   while GPIO.input(pinEcho)==0:  ## Emission de l'ultrason
     debutImpulsion = time.time()
 
   while GPIO.input(pinEcho)==1:   ## Retour de l'Echo
     finImpulsion = time.time()
   #Le double de la distance est le temps /34000  -Vitesse du son = 340 m/
   distance = round((finImpulsion - debutImpulsion) * 340 * 100 / 2, 1) 

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

GPIO.cleanup()