Nota
¡Hola, bienvenido a la comunidad de entusiastas de SunFounder Raspberry Pi & Arduino & ESP32 en Facebook! Sumérgete más en Raspberry Pi, Arduino y ESP32 con otros entusiastas.
¿Por qué unirse?
Soporte experto: Resuelve problemas postventa y desafíos técnicos con la ayuda de nuestra comunidad y equipo.
Aprender y compartir: Intercambia consejos y tutoriales para mejorar tus habilidades.
Avances exclusivos: Obtén acceso anticipado a anuncios de nuevos productos y adelantos.
Descuentos especiales: Disfruta de descuentos exclusivos en nuestros productos más recientes.
Promociones y sorteos festivos: Participa en sorteos y promociones de temporada.
👉 ¿Listo para explorar y crear con nosotros? Haz clic en [Aquí] y únete hoy mismo!
2.2.6 Módulo Sensor de Velocidad
Introducción
En este proyecto, aprenderemos el uso del módulo sensor de velocidad. Un módulo sensor de velocidad es un tipo de tacómetro que se utiliza para medir la velocidad de un objeto rotativo como un motor.
Componentes Necesarios
En este proyecto, necesitamos los siguientes componentes.
Es definitivamente conveniente comprar un kit completo, aquí está el enlace:
Nombre |
ARTÍCULOS EN ESTE KIT |
ENLACE |
|---|---|---|
Kit Raphael |
337 |
También puedes comprarlos por separado en los enlaces a continuación.
INTRODUCCIÓN DEL COMPONENTE |
ENLACE DE COMPRA |
|---|---|
- |
Diagrama Esquemático
Procedimientos Experimentales
Paso 1: Construir el circuito.
Paso 2: Cambiar de directorio.
cd ~/raphael-kit/python-pi5
Paso 3: Ejecutar.
sudo python3 2.2.6_speed_sensor_module_zero.py
Después de ejecutar el código, el LED verde se encenderá. Si colocas un obstáculo en el hueco del módulo sensor de velocidad, se imprimirá «luz bloqueada» en la pantalla y el LED rojo se encenderá. Retira el obstáculo y el LED verde se encenderá de nuevo.
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 LED, Button
from signal import pause
# Inicializar pines GPIO para el sensor de velocidad y los LEDs utilizando la biblioteca GPIO Zero
speed_sensor = Button(17, pull_up=False) # Sensor de velocidad conectado al pin GPIO 17 sin pull-up
green_led = LED(27) # LED verde conectado al pin GPIO 27
red_led = LED(22) # LED rojo conectado al pin GPIO 22
def update_leds():
"""
Update the state of LEDs based on the speed sensor.
- If the sensor is pressed (triggered), the red LED is turned on and a message is printed.
- If the sensor is released (not triggered), the green LED is turned on.
"""
if speed_sensor.is_pressed:
green_led.off() # Turn off green LED
red_led.on() # Turn on red LED
print('Light was blocked') # Print message indicating sensor is triggered
else:
green_led.on() # Encender LED verde
red_led.off() # Apagar LED rojo
try:
# Bucle principal para verificar continuamente el estado del sensor
while True:
# Actualizar LEDs basado en cambios en el estado del sensor
speed_sensor.when_pressed = update_leds # Actualizar LEDs cuando el sensor está presionado
speed_sensor.when_released = update_leds # Actualizar LEDs cuando el sensor está liberado
except KeyboardInterrupt:
# Manejar KeyboardInterrupt (Ctrl+C) para una terminación segura del script
pass
Explicación del Código
Se importa la biblioteca
gpiozeropara usar sus clasesLEDyButtonpara interactuar con los pines GPIO. Se importa la bibliotecasignalpara usar la funciónpause, que se utiliza para mantener el script en ejecución.#!/usr/bin/env python3 from gpiozero import LED, Button from signal import pause
El sensor de velocidad se configura como un
Buttonen el pin GPIO 17. El parámetropull_up=Falseindica que no se utiliza la resistencia pull-up interna.green_ledyred_ledse inicializan como objetosLEDconectados a los pines GPIO 27 y 22, respectivamente.# Inicializar pines GPIO para el sensor de velocidad y los LEDs utilizando la biblioteca GPIO Zero speed_sensor = Button(17, pull_up=False) # Sensor de velocidad conectado al pin GPIO 17 sin pull-up green_led = LED(27) # LED verde conectado al pin GPIO 27 red_led = LED(22) # LED rojo conectado al pin GPIO 22
La función
update_ledsverifica el estado del sensor de velocidad. Si el sensor está presionado (activado), apaga el LED verde, enciende el LED rojo e imprime un mensaje. Si el sensor está liberado, hace lo contrario.def update_leds(): """ Update the state of LEDs based on the speed sensor. - If the sensor is pressed (triggered), the red LED is turned on and a message is printed. - If the sensor is released (not triggered), the green LED is turned on. """ if speed_sensor.is_pressed: green_led.off() # Turn off green LED red_led.on() # Turn on red LED print('Light was blocked') # Print message indicating sensor is triggered else: green_led.on() # Encender LED verde red_led.off() # Apagar LED rojo
El bucle principal verifica continuamente el estado del sensor de velocidad. Los atributos
when_pressedywhen_releasedson manejadores de eventos que llaman a la funciónupdate_ledscuando el estado del sensor cambia. El bloque try-except se utiliza para manejar una excepción KeyboardInterrupt para una salida limpia.try: # Bucle principal para verificar continuamente el estado del sensor while True: # Actualizar LEDs basado en cambios en el estado del sensor speed_sensor.when_pressed = update_leds # Actualizar LEDs cuando el sensor está presionado speed_sensor.when_released = update_leds # Actualizar LEDs cuando el sensor está liberado except KeyboardInterrupt: # Manejar KeyboardInterrupt (Ctrl+C) para una terminación segura del script pass