Nota

¡Hola! Bienvenidos a la Comunidad de Entusiastas de SunFounder Raspberry Pi & Arduino & ESP32 en Facebook. Sumérgete en el mundo de 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 temprano a nuevos anuncios de productos y adelantos.

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

  • 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.

4.1.3 Sistema de Alarma de Inducción Magnética

Introducción

Cuando tengas un jarrón precioso, puedes hacer un sistema de alarma de inducción magnética para él. No importa quién lo mueva, podrás escuchar la alarma a tiempo.

Componentes Necesarios

En este proyecto, necesitamos los siguientes componentes.

../_images/4.1.6_magneticalarmsystem_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 siguientes enlaces.

INTRODUCCIÓN DE COMPONENTES

ENLACE DE COMPRA

Placa de Extensión GPIO

COMPRAR

Protoboard

COMPRAR

Cables de Puente

COMPRAR

Resistor

COMPRAR

Zumbador

COMPRAR

Transistor

COMPRAR

Módulo de Interruptor Reed

COMPRAR

Diagrama Esquemático

Nombre T-Board

física

wiringPi

BCM

GPIO17

Pin 11

0

17

GPIO27

Pin 13

2

27

../_images/4.1.6_magneticalarmsystem_schematic.png

Procedimientos Experimentales

Paso 1: Construir el circuito.

../_images/4.1.6_magneticalarmsystem_circuit.png

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

cd ~/raphael-kit/python-pi5

Paso 3: Ejecutar.

sudo python3 4.1.6_MagneticAlarmSystem_zero.py

Si el interruptor de láminas está afectado por el imán (por ejemplo, el interruptor de láminas se coloca en la base y el imán se coloca en el jarrón), el objeto está seguro. En este momento, el interruptor de láminas está en estado cerrado y el zumbador está silencioso. Después de retirar el imán (como cuando el jarrón es robado), el interruptor de láminas no se ve afectado por el imán, el interruptor se abre y el zumbador suena una alarma.

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 Buzzer, Button
import time

# Inicializa el zumbador en el pin GPIO 27
buzzer = Buzzer(27)
# Inicializa el interruptor de láminas en el pin GPIO 17 con la resistencia pull-up habilitada
reed_switch = Button(17, pull_up=True)

try:
    while True:
        # Verifica si el interruptor de láminas está presionado
        if reed_switch.is_pressed:
            # Apaga el zumbador si el interruptor de láminas está presionado
            buzzer.off()
        else:
            # Si el interruptor de láminas no está presionado, activa el zumbador
            buzzer.on()
            time.sleep(0.1)  # Zumbador activado durante 0.1 segundos
            buzzer.off()
            time.sleep(0.1)  # Zumbador desactivado durante 0.1 segundos

except KeyboardInterrupt:
    # Apaga el zumbador cuando el programa es interrumpido (por ejemplo, con un interruptor de teclado)
    buzzer.off()
    pass

Explicación del Código

  1. Esto importa las clases necesarias Buzzer y Button de la biblioteca gpiozero, y el módulo time de la biblioteca estándar de Python.

    #!/usr/bin/env python3
    from gpiozero import Buzzer, Button
    import time
    
  2. El objeto Buzzer está vinculado al pin GPIO 27, y un Button (actuando como interruptor de láminas) está conectado al pin GPIO 17 con el argumento pull_up=True, habilitando la resistencia pull-up interna.

    # Inicializa el zumbador en el pin GPIO 27
    buzzer = Buzzer(27)
    # Inicializa el interruptor de láminas en el pin GPIO 17 con la resistencia pull-up habilitada
    reed_switch = Button(17, pull_up=True)
    
  3. El bloque try contiene un bucle infinito (while True) que verifica el estado del interruptor de láminas. Si está presionado (is_pressed), el zumbador se apaga. De lo contrario, el zumbador suena (0.1 segundos encendido, 0.1 segundos apagado).

    try:
        while True:
            # Verifica si el interruptor de láminas está presionado
            if reed_switch.is_pressed:
                # Apaga el zumbador si el interruptor de láminas está presionado
                buzzer.off()
            else:
                # Si el interruptor de láminas no está presionado, activa el zumbador
                buzzer.on()
                time.sleep(0.1)  # Zumbador activado durante 0.1 segundos
                buzzer.off()
                time.sleep(0.1)  # Zumbador desactivado durante 0.1 segundos
    
  4. El bloque except maneja una interrupción de teclado (como un Ctrl+C en el terminal) para apagar el zumbador de manera segura.

    except KeyboardInterrupt:
        # Apaga el zumbador cuando el programa es interrumpido (por ejemplo, con un interruptor de teclado)
        buzzer.off()
        pass