Cómo usar un sensor de distancia con tu Raspberry Pi (sensor ultrasónico HC-SR04)
Usar un sensor Ultrasónico con nuestra Raspberry Pi
Para muchos proyectos (al aire libre) una medición de distancia es necesaria o ventajosa. Estos pequeños módulos están disponibles a partir de 1-2 euros y pueden medir la distancia hasta 4-5 metros por ultrasonido y son sorprendentemente precisos. Este tutorial te quiere mostrar cómo conectarlos a una Raspberry Pi y su control.
Hardware
Cableado
Hay cuatro pins o clavijas en el módulo de ultrasonido que están conectadas a la Raspberry Pi:
- VCC al Pin 2 (VCC)
- GND a Pin 6 (GND)
- TRIG al Pin 12 (GPIO18)
- conectar la resistencia 330Ω a ECHO. En su extremo se conecta al Pin 18 (GPIO24) y a través de una resistencia 470Ω se conecta también al Pin 6 (GND).
Hacemos esto porque los pines GPIO sólo toleran un máximo de 3.3V. La conexión a GND debe tener una señal obvia en GPIO24. Si no se envía ningún pulso, la señal es 0 (a través de la conexión con GND), de lo contrario es 1. Si no hubiera conexión con GND, la entrada sería indefinida si no se envía ninguna señal (aleatoriamente 0 ó 1), lo que resulta ambiguo.
Aquí está la estructura en forma de diagrama de circuito:
Script para control
En primer lugar, se debe instalar la librería Python GPIO
Para utilizar el módulo, creamos un nuevo script
sudo nano ultrasonic_distance.py
con el siguiente contenido:
#Libraries
import RPi.GPIO as GPIO
import time
#GPIO Mode (BOARD / BCM)
GPIO.setmode(GPIO.BCM)
#set GPIO Pins
GPIO_TRIGGER = 18
GPIO_ECHO = 24
#set GPIO direction (IN / OUT)
GPIO.setup(GPIO_TRIGGER, GPIO.OUT)
GPIO.setup(GPIO_ECHO, GPIO.IN)
def distance():
# set Trigger to HIGH
GPIO.output(GPIO_TRIGGER, True)
# set Trigger after 0.01ms to LOW
time.sleep(0.00001)
GPIO.output(GPIO_TRIGGER, False)
StartTime = time.time()
StopTime = time.time()
# save StartTime
while GPIO.input(GPIO_ECHO) == 0:
StartTime = time.time()
# save time of arrival
while GPIO.input(GPIO_ECHO) == 1:
StopTime = time.time()
# time difference between start and arrival
TimeElapsed = StopTime - StartTime
# multiply with the sonic speed (34300 cm/s)
# and divide by 2, because there and back
distance = (TimeElapsed * 34300) / 2
return distance
if __name__ == '__main__':
try:
while True:
dist = distance()
print ("Measured Distance = %.1f cm" % dist)
time.sleep(1)
# Reset by pressing CTRL + C
except KeyboardInterrupt:
print("Measurement stopped by User")
GPIO.cleanup()
Después de eso, lo ponemos en funcionamiento mediante:
sudo python ultrasonic_distance.py
Así que cada segundo, la distancia será medida hasta que el script sea cancelado presionando CTRL + C.
Eso es todo. Se puede utilizar en muchos campos, pero quien quiera medir distancias más grandes tendrá que recurrir a dispositivos de medición láser, que, sin embargo, son mucho más caros.
Debe estar conectado para enviar un comentario.