Nota

¡Hola! Bienvenidos 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 nuevos anuncios de productos y adelantos.

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

  • Promociones y sorteos festivos: Participa en sorteos y promociones durante las festividades.

👉 ¿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, necesitaremos los siguientes componentes.

../_images/2.2.6component.png

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

Nombre

ARTÍCULOS EN ESTE KIT

ENLACE

Raphael Kit

337

Raphael Kit

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

INTRODUCCIÓN DEL COMPONENTE

ENLACE DE COMPRA

Placa de Extensión GPIO

COMPRAR

Protoboard

COMPRAR

Cables de Puente

COMPRAR

Resistor

COMPRAR

LED

COMPRAR

Módulo Sensor de Velocidad

-

Diagrama Esquemático

../_images/2.2.6circuit.png

Procedimientos Experimentales

Paso 1: Construye el circuito.

../_images/2.2.6fritzing.png

Paso 2: Cambia de directorio.

cd ~/raphael-kit/python

Paso 3: Ejecuta.

sudo python3 2.2.6_speed_sensor_module.py

Después de ejecutar el código, el LED verde se encenderá. Si colocas un obstáculo en la ranura del módulo sensor de velocidad, se imprimirá «luz bloqueada» en la pantalla y se encenderá el LED rojo. Retira el obstáculo y el LED verde se encenderá nuevamente.

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. Después de modificar el código, puedes ejecutarlo directamente para ver el efecto.

#!/usr/bin/env python3
import RPi.GPIO as GPIO

speedPin  = 17
Gpin   = 27
Rpin   = 22

def setup():
    GPIO.setmode(GPIO.BCM)       #
    GPIO.setup(Gpin, GPIO.OUT)     # Configura el modo del pin del LED verde como salida
    GPIO.setup(Rpin, GPIO.OUT)     # Configura el modo del pin del LED rojo como salida
    GPIO.setup(speedPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)    # Configura el modo del pin de velocidad como entrada y conéctalo a un nivel alto (3.3V)
    GPIO.add_event_detect(speedPin, GPIO.BOTH, callback=detect, bouncetime=200)

def Led(x):
    if x == 0:
        GPIO.output(Rpin, 0)
        GPIO.output(Gpin, 1)
    if x == 1:
        GPIO.output(Rpin, 1)
        GPIO.output(Gpin, 0)
        print ('Light was blocked')

def detect(chn):
    Led(GPIO.input(speedPin))

def loop():
    while True:
        pass

def destroy():
    GPIO.output(Gpin, GPIO.LOW)       # Apaga el LED verde
    GPIO.output(Rpin, GPIO.LOW)       # Apaga el LED rojo
    GPIO.cleanup()                     # Libera recursos

if __name__ == '__main__':     # El programa empieza aquí
    setup()
    try:
        loop()
    except KeyboardInterrupt:  # Cuando se presiona 'Ctrl+C', el programa hijo ejecutará destroy().
        destroy()

Explicación del Código

GPIO.add_event_detect(speedPin, GPIO.BOTH, callback=detect, bouncetime=200)

Añade un evento aquí, activado por un cambio en el nivel de speedPin y llama a detect() para controlar el encendido y apagado de los 2 LEDs.

def Led(x):
    if x == 0:
        GPIO.output(Rpin, 0)
        GPIO.output(Gpin, 1)
    if x == 1:
        GPIO.output(Rpin, 1)
        GPIO.output(Gpin, 0)
        print ('Light was blocked')

Define una función Led() que enciende el LED rojo e imprime La luz fue bloqueada cuando el parámetro es 1; enciende el LED verde cuando el parámetro es 0.

def detect(chn):
    Led(GPIO.input(speedPin))

Define una función de callback donde el valor de speedPin controlará el encendido o apagado de los 2 LEDs.

Imagen del Fenómeno

../_images/2.2.6photo_interrrupter.JPG