Ir a contenido
Cómo conectar un sensor ultrasónico HC-SR04 a Raspberry Pi - 330ohms

Cómo conectar un sensor ultrasónico HC-SR04 a Raspberry Pi - 330ohms

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:

  • GND – Alimentación negativa
  • ECHO – Pin para mandar la señal ultrasónica
  • TRIG – Pin para recibir el rebote de la señal ultrasónica
  • VCC – Alimentación positiva

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.

Diagrama de conexiones

Raspberry Pi – Protoboard Chica – Sensor Ultrasónico de distancia HC-SR04 – Level shifter

Código de Python3

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()

¡Sigue explorando!

Referencias:

Using a Raspberry Pi distance sensor

Para seguir leyendo…

Artículo anterior Tutorial #8 de Raspberry Pi Pico: sensor ultrasónico - 330ohms