Nota

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

¿Por qué unirse?

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

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

  • Previsualizaciones Exclusivas: 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 y Sorteos Festivos: Participa en sorteos y promociones en temporadas festivas.

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

6.1 Midiendo Distancia

El módulo de sensor ultrasónico funciona según el principio de sistemas de sonar y radar para determinar la distancia a un objeto.

Componentes Necesarios

Para este proyecto, necesitaremos los siguientes componentes.

Es muy conveniente adquirir un kit completo; aquí tienes el enlace:

Nombre

ELEMENTOS EN ESTE KIT

ENLACE

Kit Kepler

450+

Kepler Ultimate Kit

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

SN

COMPONENTE

CANTIDAD

ENLACE

1

Conociendo el Pico W

1

COMPRAR

2

Cable Micro USB

1

3

Protoboard

1

COMPRAR

4

Cables de Puente (Jumpers)

Varios

COMPRAR

5

Módulo Ultrasónico

1

COMPRAR

Esquemático

sch_ultrasonic

Conexiones

wiring_ultrasonic

Código

Nota

  • Abre el archivo 6.1_measuring_distance.py en la ruta de kepler-kit-main/micropython o copia este código en Thonny, luego haz clic en «Run Current Script» o simplemente presiona F5 para ejecutarlo.

  • No olvides seleccionar el intérprete «MicroPython (Raspberry Pi Pico)» en la esquina inferior derecha.

  • Para tutoriales detallados, consulta Abrir y ejecutar código directamente.

import machine
import time

TRIG = machine.Pin(17,machine.Pin.OUT)
ECHO = machine.Pin(16,machine.Pin.IN)

def distance():
    TRIG.low()
    time.sleep_us(2)
    TRIG.high()
    time.sleep_us(10)
    TRIG.low()
    while not ECHO.value():
        pass
    time1 = time.ticks_us()
    while ECHO.value():
        pass
    time2 = time.ticks_us()
    during = time.ticks_diff(time2,time1)
    return during * 340 / 2 / 10000

while True:
    dis = distance()
    print ('Distance: %.2f' % dis)
    time.sleep_ms(300)

Una vez que el programa esté en ejecución, la Shell imprimirá la distancia medida por el sensor ultrasónico respecto al obstáculo situado enfrente.

¿Cómo funciona?

Los sensores ultrasónicos producen ondas sonoras de alta frecuencia (ultrasonido) que son emitidas por la sonda transmisora. Cuando esta onda ultrasónica impacta un objeto, se refleja como un eco, detectado por la sonda receptora. Calculando el tiempo entre la emisión y la recepción, se puede determinar la distancia. Basado en este principio, se deriva la función distance().

def distance():
    TRIG.low()
    time.sleep_us(2)
    TRIG.high()
    time.sleep_us(10)
    TRIG.low()
    while not ECHO.value():
        pass
    time1 = time.ticks_us()
    while ECHO.value():
        pass
    time2 = time.ticks_us()
    during = time.ticks_diff(time2,time1)
    return during * 340 / 2 / 10000
  • Las primeras líneas se usan para transmitir una onda ultrasónica de 10us.

TRIG.low()
time.sleep_us(2)
TRIG.high()
time.sleep_us(10)
TRIG.low()
  • Luego, el programa se pausa y registra el tiempo actual cuando se ha emitido la onda ultrasónica.

while not ECHO.value():
    pass
time1 = time.ticks_us()
  • Posteriormente, el programa se pausa nuevamente. Tras recibir el eco, se registra el tiempo actual otra vez.

while ECHO.value():
    pass
time2 = time.ticks_us()
  • Finalmente, basándose en la diferencia de tiempo entre las dos lecturas y la velocidad del sonido (340 m/s), se obtiene el doble de la distancia entre el módulo ultrasónico y el obstáculo (es decir, ida y vuelta de las ondas ultrasónicas). Convirtiendo las unidades a centímetros, obtenemos el valor de retorno que necesitamos.

during = time.ticks_diff(time2,time1)
return during * 340 / 2 / 10000

Toma en cuenta que el sensor ultrasónico pausará el programa cuando esté en funcionamiento, lo cual puede causar algún retraso al escribir proyectos complejos.