En este artículo, le mostraré cómo usar un sensor ultrasónico HC-SR04 para medir la distancia entre su sensor y un objeto en su camino usando Raspberry Pi. Empecemos.
Componentes que necesita:
Para medir con éxito la distancia con Raspberry Pi y el sensor HC-SR04, necesita,
- Una computadora de placa única Raspberry Pi 2 o 3 con Raspbian instalado.
- Un módulo de sensor ultrasónico HC-SR04.
- Resistencias de 3x10kΩ.
- Una placa de pruebas.
- Algunos conectores macho a hembra.
- Algunos conectores macho a macho.
He escrito un artículo dedicado a la instalación de Raspbian en Raspberry Pi, que puede consultar en https: // linuxhint.com / install_raspbian_raspberry_pi / si lo necesita.
Configuración de pines HC-SR04:
El HC-SR04 tiene 4 pines. VCC, GATILLO, ECHO, GROUD.
Fig1: Distribución de pines HC-SR04 (https: // www.ratonero.com / ds / 2/813 / HCSR04-1022824.pdf)
El pin VCC debe estar conectado al pin + 5V de la Raspberry Pi, que es el pin 2. El pin de TIERRA debe estar conectado al pin GND de la Raspberry Pi, que es el pin 4.
Los pines TRIGGER y ECHO deben estar conectados a los pines GPIO de la Raspberry Pi. Mientras que el pin TRIGGER se puede conectar directamente a uno de los pines GPIO de la Raspberry Pi, el pin ECHO necesita un circuito divisor de voltaje.
Diagrama de circuito:
Conecte el sensor ultrasónico HC-SR04 a su Raspberry Pi de la siguiente manera:
Fig2: Sensor ultrasónico HC-SR04 conectado a Raspberry Pi.
Una vez que todo está conectado, así es como se ve:
Fig3: Sensor ultrasónico HC-SR04 conectado a Raspberry Pi en la placa de pruebas.
Fig4: Sensor ultrasónico HC-SR04 conectado a Raspberry Pi en la placa de pruebas.
Escribir un programa en Python para medir distancias con HC-SR04:
Primero, conéctese a su Raspberry Pi usando VNC o SSH. Luego, abra un nuevo archivo (digamos distancia.py) y escriba las siguientes líneas de códigos:
Aquí, la línea 1 importa la biblioteca GPIO de raspberry pi.
La línea 2 importa la biblioteca de tiempo.
Dentro de intentar bloque, el código real para medir la distancia usando HC-SR04 está escrito.
La finalmente El bloque se usa para limpiar los pines GPIO con GPIO.limpiar() método cuando el programa sale.
Dentro de intentar bloque, en la línea 5, GPIO.modo de ajuste (GPIO.JUNTA) se utiliza para facilitar la definición de pines. Ahora, puede hacer referencia a los pines por números físicos como está en la placa Raspberry Pi.
En la línea 7 y 8, pinTrigger se establece en 7 y pinEcho se establece en 11. La DESENCADENAR El pin de HC-SR04 está conectado al pin 7, y ECO El pin de HC-SR04 está conectado al pin 11 de Rapsberry Pi. Ambos son pines GPIO.
En la línea 10, pinTrigger está configurado para SALIDA usando GPIO.configuración() método.
En la línea 11, pinEcho está configurado para ENTRADA usando GPIO.configuración() método.
Las líneas 13-17 se utilizan para restablecer pinTrigger (configurándolo en 0 lógico) y configurando el pinTrigger a la lógica 1 durante 10ms y luego a la lógica 0. En 10 ms, el sensor HC-SR04 envía 8 pulsos de 40 KHz.
Las líneas 19-24 se utilizan para medir el tiempo que tardan los pulsos de 40 KHz en reflejarse en un objeto y volver al sensor HC-SR04.
En la línea 25, la distancia se mide usando la fórmula,
Distancia = tiempo delta * velocidad (340M / S) / 2
=> Distancia = tiempo delta * (170M / S)
Calculé la distancia en centímetros en lugar de metros, solo para ser precisos. Calculé la distancia también se redondea a 2 lugares decimales.
Finalmente, en la línea 27, se imprime el resultado. Eso es, muy simple.
Ahora, ejecute el script de Python con el siguiente comando:
$ python3 distancia.pyComo puede ver, la distancia medida es 8.40 cm.
Fig5: objeto colocado a aproximadamente 8.40 cm de distancia del sensor.
Me moví al objeto un poco más lejos, la distancia medida es 21.81cm. Entonces, está funcionando como se esperaba.
Fig6: objeto colocado aproximadamente a 21.81 cm de distancia del sensor.
Así es como mides la distancia con Raspberry Pi usando el sensor ultrasónico HC-SR04. Ver el código para la distancia.py a continuación:
importar RPi.GPIO como GPIOtiempo de importación
intentar:
GPIO.modo de ajuste (GPIO.JUNTA)
pinTrigger = 7
pinEcho = 11
GPIO.configuración (pinTrigger, GPIO.FUERA)
GPIO.configuración (pinEcho, GPIO.EN)
GPIO.salida (pinTrigger, GPIO.BAJO)
GPIO.salida (pinTrigger, GPIO.ELEVADO)
hora.dormir (0.00001)
GPIO.salida (pinTrigger, GPIO.BAJO)
mientras GPIO.entrada (pinEcho) == 0:
pulseStartTime = tiempo.hora()
mientras GPIO.entrada (pinEcho) == 1:
pulseEndTime = tiempo.hora()
pulseDuration = pulseEndTime - pulseStartTime
distancia = ronda (pulseDuration * 17150, 2)
print ("Distancia:%.2f cm "% (distancia))
finalmente:
GPIO.limpiar()