Nota

¡Hola! Bienvenido a la comunidad de entusiastas de SunFounder para Raspberry Pi, Arduino y ESP32 en Facebook. Únete a otros apasionados y profundiza en el uso de Raspberry Pi, Arduino y ESP32.

¿Por qué unirte?

  • Soporte de expertos: Resuelve problemas postventa y desafíos técnicos con la ayuda de nuestra comunidad y equipo.

  • Aprende y comparte: Intercambia consejos y tutoriales para mejorar tus habilidades.

  • Avances exclusivos: Obtén acceso anticipado a anuncios de nuevos productos y adelantos exclusivos.

  • Descuentos especiales: Disfruta de descuentos exclusivos en nuestros productos más recientes.

  • Promociones festivas y sorteos: Participa en sorteos y promociones de temporada.

👉 ¿Listo para explorar y crear con nosotros? Haz clic en [Aquí] y únete hoy mismo.

2.2.5 Módulo de Sensor Ultrasónico

Introducción

El sensor ultrasónico utiliza ultrasonidos para detectar objetos con precisión y medir distancias. Emite ondas ultrasónicas y las convierte en señales electrónicas.

Componentes necesarios

En este proyecto, necesitamos los siguientes componentes.

../_images/2.2.5_ultrasonic_list.png

Diagrama esquemático

../_images/2.2.5_ultrasonic_schematic.png

Procedimientos experimentales

Paso 1: Construye el circuito.

../_images/2.2.5_ultrasonic_circuit.png

Paso 2: Ve a la carpeta del código.

cd ~/davinci-kit-for-raspberry-pi/python-pi5

Paso 3: Ejecuta el archivo ejecutable.

sudo python3 2.2.5_Ultrasonic.py

Con el código en ejecución, el módulo de sensor ultrasónico detecta la distancia entre el obstáculo que tiene delante y el propio módulo, y luego imprime el valor de la distancia en pantalla.

Advertencia

Si aparece un mensaje de error RuntimeError: Cannot determine SOC peripheral base address, consulta Si gpiozero no funciona.

Código

Nota

Puedes Modificar/Restablecer/Copiar/Ejecutar/Detener el código a continuación. Pero antes, debes ir a la ruta del código fuente como davinci-kit-for-raspberry-pi/python-pi5. Después de modificar el código, puedes ejecutarlo directamente para ver el efecto.

#!/usr/bin/env python3
from gpiozero import DistanceSensor
from time import sleep

# Inicializar el sensor de distancia usando la biblioteca GPIO Zero
# El pin de disparo está conectado a GPIO 23, el pin de eco a GPIO 24
sensor = DistanceSensor(echo=24, trigger=23)

try:
    # Bucle principal para medir y reportar continuamente la distancia
    while True:
        dis = sensor.distance * 100  # Medir la distancia y convertir de metros a centímetros
        print('Distance: {:.2f} cm'.format(dis))  # Imprimir la distancia con dos decimales de precisión
        sleep(0.3)  # Esperar 0.3 segundos antes de la siguiente medición

except KeyboardInterrupt:
    # Manejar KeyboardInterrupt (Ctrl+C) para salir del bucle de forma segura
    pass

Explicación del código

  1. Importa la clase DistanceSensor de la biblioteca gpiozero para la medición de distancia, y la función sleep del módulo time para crear pausas.

    #!/usr/bin/env python3
    from gpiozero import DistanceSensor
    from time import sleep
    
  2. Inicializa el sensor de distancia ultrasónico con el pin de eco conectado a GPIO 24 y el pin de disparo a GPIO 23.

    # Inicializar el sensor de distancia usando la biblioteca GPIO Zero
    # El pin de disparo está conectado a GPIO 23, el pin de eco a GPIO 24
    sensor = DistanceSensor(echo=24, trigger=23)
    
  3. El bucle principal mide continuamente la distancia, la convierte de metros a centímetros y la imprime con dos decimales de precisión. Luego espera 0.3 segundos y vuelve a medir la distancia. Captura una interrupción de teclado (como Ctrl+C) para permitir salir del script de forma segura.

    try:
        # Bucle principal para medir y reportar continuamente la distancia
        while True:
            dis = sensor.distance * 100  # Medir la distancia y convertir de metros a centímetros
            print('Distance: {:.2f} cm'.format(dis))  # Imprimir la distancia con dos decimales de precisión
            sleep(0.3)  # Esperar 0.3 segundos antes de la siguiente medición
    
    except KeyboardInterrupt:
        # Manejar KeyboardInterrupt (Ctrl+C) para salir del bucle de forma segura
        pass