Nota

¡Hola! Bienvenido a la Comunidad de Entusiastas de SunFounder para Raspberry Pi, Arduino y ESP32 en Facebook. Sumérgete en el mundo de Raspberry Pi, Arduino y ESP32 con otros entusiastas.

¿Por Qué Unirse?

  • Soporte Experto: Resuelve problemas post-venta y desafíos técnicos con la ayuda de nuestra comunidad y equipo.

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

  • Preestrenos Exclusivos: Obtén acceso anticipado a nuevos anuncios de productos y avances.

  • Descuentos Especiales: Disfruta de descuentos exclusivos en nuestros productos más nuevos.

  • Promociones Festivas y Sorteos: Participa en sorteos y promociones festivas.

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

2.2.8 Módulo de Sensor Ultrasónico

Introducción

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

Componentes Necesarios

En este proyecto, necesitamos los siguientes componentes.

../_images/2.2.8_ultrasonic_list.png

Es definitivamente conveniente comprar un kit completo, aquí está el enlace:

Nombre

ARTÍCULOS EN ESTE KIT

ENLACE

Kit Raphael

337

Raphael Kit

También puedes comprarlos por separado en los enlaces a continuación.

INTRODUCCIÓN DE COMPONENTES

ENLACE DE COMPRA

Placa de Extensión GPIO

COMPRAR

Protoboard

COMPRAR

Cables de Puente

COMPRAR

Módulo Ultrasónico

COMPRAR

Diagrama Esquemático

../_images/2.2.8_ultrasonic_schematic.png

Procedimientos Experimentales

Paso 1: Construir el circuito.

../_images/2.2.8_ultrasonic_circuit.png

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

cd ~/raphael-kit/python-pi5

Paso 3: Ejecutar el archivo ejecutable.

sudo python3 2.2.8_Ultrasonic_zero.py

Cuando el código se ejecute, el módulo del sensor ultrasónico detectará la distancia entre el obstáculo delante y el propio módulo, luego el valor de la distancia se imprimirá en la pantalla.

Advertencia

Si recibe el mensaje de error RuntimeError: Cannot determine SOC peripheral base address, consulte Si «gpiozero» no funciona.

Código

Nota

Puedes Modificar/Restablecer/Copiar/Ejecutar/Detener el código a continuación. Pero antes de eso, necesitas ir a la ruta del código fuente como raphael-kit/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 DistanceSensor 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  # Measure distance and convert from meters to centimeters
        print('Distance: {:.2f} cm'.format(dis))  # Print the distance with two decimal precision
        sleep(0.3)  # Wait for 0.3 seconds before the next measurement

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

Explicación del Código

  1. Importa la clase DistanceSensor de la biblioteca gpiozero para la medición de distancias, y la función sleep del módulo time para los retrasos.

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

    # Inicializar el DistanceSensor 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 precisión de dos decimales. Luego espera 0.3 segundos y vuelve a medir la distancia. Captura una KeyboardInterrupt (como Ctrl+C) para permitir una salida ordenada del script.

    try:
        # Bucle principal para medir y reportar continuamente la distancia
        while True:
            dis = sensor.distance * 100  # Measure distance and convert from meters to centimeters
            print('Distance: {:.2f} cm'.format(dis))  # Print the distance with two decimal precision
            sleep(0.3)  # Wait for 0.3 seconds before the next measurement
    
    except KeyboardInterrupt:
        # Manejar KeyboardInterrupt (Ctrl+C) para salir del bucle de manera ordenada
        pass