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:

conexión de un sensor de ultrasonidos a una Raspberry Pi

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.

Pin It on Pinterest

Shares