Approved Reseller
Approved Reseller
En este pequeño tutorial veremos cómo conectar un sensor de distancia Ultrasónico HC-SR04 a una tarjeta Raspberry Pi, también encontrarás un código de programación para tus primeras pruebas.
El sensor HC-SR04 nos permite conocer la distancia a la que se encuentra un objeto, cuenta con dos transductores ultrasónicos y con 4 terminales de conexión:
Su funcionamiento consiste en emitir una señal ultrasónica con uno de sus transductores para después recibir el rebote de dicha señal en su segundo transductor. Si medimos el tiempo que le toma a la señal alcanzar el objeto más cercano y regresar y conocemos la velocidad del sonido podemos calcular la distancia a la que se encuentra dicho objeto con la siguiente formula:
Distancia = ( Tiempo_medido ) * (velocidad_del_sonido) / 2
El sensor HC-SR04 es entonces un componentede entrada, es decir, su funcionamiento consiste en entregar la información correspondiente a la distancia a través del tiempo de un pulso en su pin de señal ECHO, la tarjeta Raspberry Pi a su vez recibe la señal y obtiene el tiempo de duración del pulso con uno de sus GPIO configurado como entrada.
Es importante mencionar que el sensor se alimenta a 5V, su pin TRIG es compatible con el nivel lógico de la Raspberry Pi 3.3V pero el pin ECHO no lo es ya que entrega 5V cuando está en alto. Por esta razón utilizaremos un convertidor de nivel lógico para proteger a la tarjeta Raspberry Pi.
Copiamos el siguiente código a un script de Python y lo ejecutamos con Python3 para observar el valor entregado por el sensor cada 0.5 segundos aproximadamente.
# Importamos la paquteria necesaria import RPi.GPIO as GPIO import time TRIG = 23 #Variable que contiene el GPIO al cual conectamos la señal TRIG del sensor ECHO = 24 #Variable que contiene el GPIO al cual conectamos la señal ECHO del sensor GPIO.setmode(GPIO.BCM) #Establecemos el modo según el cual nos refiriremos a los GPIO de nuestra RPi GPIO.setup(TRIG, GPIO.OUT) #Configuramos el pin TRIG como una salida GPIO.setup(ECHO, GPIO.IN) #Configuramos el pin ECHO como una salida #Contenemos el código principal en un aestructura try para limpiar los GPIO al terminar o presentarse un error try: #Implementamos un loop infinito while True: # Ponemos en bajo el pin TRIG y después esperamos 0.5 seg para que el transductor se estabilice GPIO.output(TRIG, GPIO.LOW) time.sleep(0.5) #Ponemos en alto el pin TRIG esperamos 10 uS antes de ponerlo en bajo GPIO.output(TRIG, GPIO.HIGH) time.sleep(0.00001) GPIO.output(TRIG, GPIO.LOW) # En este momento el sensor envía 8 pulsos ultrasónicos de 40kHz y coloca su pin ECHO en alto # Debemos detectar dicho evento para iniciar la medición del tiempo while True: pulso_inicio = time.time() if GPIO.input(ECHO) == GPIO.HIGH: break # El pin ECHO se mantendrá en HIGH hasta recibir el eco rebotado por el obstáculo. # En ese momento el sensor pondrá el pin ECHO en bajo. # Prodedemos a detectar dicho evento para terminar la medición del tiempo while True: pulso_fin = time.time() if GPIO.input(ECHO) == GPIO.LOW: break # Tiempo medido en segundos duracion = pulso_fin - pulso_inicio #Obtenemos la distancia considerando que la señal recorre dos veces la distancia a medir y que la velocidad del sonido es 343m/s distancia = (34300 * duracion) / 2 # Imprimimos resultado print( "Distancia: %.2f cm" % distancia) finally: # Reiniciamos todos los canales de GPIO. GPIO.cleanup()
Referencias:
Using a Raspberry Pi distance sensor
Para seguir leyendo…