.. note::
Hola, ¡bienvenido a la comunidad de entusiastas de SunFounder Raspberry Pi, Arduino y ESP32 en Facebook! Sumérgete más profundamente en Raspberry Pi, Arduino y ESP32 junto a 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**: Accede anticipadamente a nuevos anuncios de 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 navideñas.
👉 ¿Listo para explorar y crear con nosotros? Haz clic en [|link_sf_facebook|] y únete hoy mismo.
.. _4.1.6_py:
4.1.6 Sistema de Alarma por Inducción Magnética
=========================================================
Introducción
--------------------
Cuando tengas un jarrón precioso, puedes hacer un sistema de alarma por 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.
.. image:: ../img/3.1.20components.png
:width: 800
:align: center
Es muy conveniente comprar un kit completo, aquí está el enlace:
.. list-table::
:widths: 20 20 20
:header-rows: 1
* - Nombre
- ELEMENTOS EN ESTE KIT
- ENLACE
* - Kit Raphael
- 337
- |link_Raphael_kit|
También puedes comprarlos por separado en los enlaces a continuación.
.. list-table::
:widths: 30 20
:header-rows: 1
* - INTRODUCCIÓN DEL COMPONENTE
- ENLACE DE COMPRA
* - :ref:`cpn_gpio_board`
- |link_gpio_board_buy|
* - :ref:`cpn_breadboard`
- |link_breadboard_buy|
* - :ref:`cpn_wires`
- |link_wires_buy|
* - :ref:`cpn_resistor`
- |link_resistor_buy|
* - :ref:`cpn_buzzer`
- |link_passive_buzzer_buy|
* - :ref:`cpn_transistor`
- |link_transistor_buy|
* - :ref:`cpn_reed_switch`
- |link_reed_switch_buy|
Diagrama Esquemático
-----------------------
============== =============== ======== ===
Nombre T-Board cableado físico wiringPi BCM
GPIO17 Pin 11 0 17
GPIO27 Pin 13 2 27
============== =============== ======== ===
.. image:: ../img/3.1.20_schematic.png
:width: 600
:align: center
Procedimientos Experimentales
----------------------------------
**Paso 1:** Construye el circuito.
.. image:: ../img/3.1.20fritzing.png
:width: 800
:align: center
**Paso 2:** Accede a la carpeta del código.
.. raw:: html
.. code-block::
cd ~/raphael-kit/python/
**Paso 3:** Ejecuta.
.. raw:: html
.. code-block::
sudo python3 4.1.6_MagneticAlarmSystem.py
Si el interruptor de láminas es afectado por el imán (por ejemplo, si el interruptor de láminas se coloca en la base y el imán en el jarrón), el objeto está seguro. En este momento, el interruptor de láminas está en estado cerrado y el zumbador está en silencio.
Después de retirar el imán (como cuando el jarrón es robado), el interruptor de láminas no es afectado por el imán, el interruptor se abre y el zumbador emite una alarma.
**Código**
.. note::
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.
.. raw:: html
.. code-block:: python
#!/usr/bin/env python3
import RPi.GPIO as GPIO
import time
BeepPin = 27
ReedPin = 17
def setup():
GPIO.setmode(GPIO.BCM)
GPIO.setup(BeepPin, GPIO.OUT, initial=GPIO.HIGH)
GPIO.setup(ReedPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
def loop():
while True:
if GPIO.input(ReedPin) == 0:
GPIO.output(BeepPin, GPIO.HIGH)
else:
GPIO.output(BeepPin, GPIO.LOW)
time.sleep(0.1)
GPIO.output(BeepPin, GPIO.HIGH)
time.sleep(0.1)
def destroy():
GPIO.output(BeepPin, GPIO.HIGH)
GPIO.cleanup()
if __name__ == '__main__':
setup()
try:
loop()
except KeyboardInterrupt:
destroy()
**Explicación del Código**
.. code-block:: python
def loop():
while True:
if GPIO.input(ReedPin) == 0:
GPIO.output(BeepPin, GPIO.HIGH)
else:
GPIO.output(BeepPin, GPIO.LOW)
time.sleep(0.1)
GPIO.output(BeepPin, GPIO.HIGH)
time.sleep(0.1)
En el bucle principal, evaluamos el estado del interruptor de láminas. Si el interruptor de láminas está cerrado, el zumbador no funciona; de lo contrario, el zumbador suena.
Imagen del Fenómeno
------------------------
.. image:: ../img/4.1.6_security.JPG
:align: center