Nota

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

¿Por qué unirse?

  • Soporte Experto: Resuelve problemas posventa y desafíos técnicos con la 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 Festivas y Sorteos: Participa en sorteos y promociones de temporada.

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

3. Sistema de Seguridad con @IFTTT

Con este proyecto, crearemos un dispositivo de seguridad que utiliza un sensor PIR para detectar cuando un intruso o animal se introduce en tu hogar. En caso de que esto ocurra, recibirás una alerta por correo electrónico.

Usaremos Webhook como el servicio más básico. Raspberry Pi Pico W enviará una solicitud POST al servicio de IFTTT. A través de IFTTT, crearemos un Applet que intercepte el webhook y envíe un correo electrónico.

Advertencia

la política de precios de IFTTT ha sido actualizada. El uso de este proyecto puede implicar costos adicionales. Por favor, téngalo en cuenta con antelación.

1. Componentes Requeridos

Para este proyecto, necesitamos los siguientes componentes.

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

Nombre

ELEMENTOS EN ESTE KIT

ENLACE

Kit Kepler

450+

Kepler Ultimate Kit

También puedes comprarlos por separado a través de los enlaces a continuación.

N.º

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

Transistor

1(S8050)

COMPRAR

6

Resistor

2(1KΩ, 10KΩ)

COMPRAR

7

Botón

1

COMPRAR

8

Buzzer Buzzer

1

9

Módulo Cargador Li-po

1

10

Batería 18650

1

11

Portapilas

1

12

Módulo Sensor de Movimiento PIR

1

COMPRAR

2. Construye el Circuito

Advertencia

Asegúrate de que tu Módulo de Carga Li-po esté conectado como se muestra en el diagrama. De lo contrario, un cortocircuito podría dañar la batería y el circuito.

../../_images/3.ifttt_mail_bb.png

3. Configura IFTTT

IFTTT es un servicio gratuito que ofrece múltiples formas de conectar diferentes servicios de datos entre sí.

Crearemos un Applet que reaccione a un webhook (URL personalizada) que envía datos a IFTTT. IFTTT luego enviará un correo electrónico por ti.

Sigue los pasos a continuación en IFTTT.

  1. Visita IFTTT para iniciar sesión o crear una cuenta.

  2. Haz clic en Create.

  3. Agrega un evento If This.

  4. Busca Webhooks.

  5. Toca Receive a web request.

  6. Rellena el nombre del evento (por ejemplo, SecurityWarning) y haz clic en Create trigger.

  7. Agrega un evento Then That.

  8. Busca Email.

  9. Haz clic en Send me an email.

  10. Rellena el Asunto y el Cuerpo y luego haz clic en Create action.

    ../../_images/ifttt-10.png
  11. Haz clic en Continue para completar la configuración.

    ../../_images/ifttt-11.png
  12. Modifica el nombre del título y habrás terminado.

    ../../_images/ifttt-12.png
  13. Ahora serás redirigido automáticamente a la página de detalles del Applet, donde podrás ver que el Applet está actualmente conectado y puedes alternar el interruptor para iniciarlo o detenerlo.

    ../../_images/ifttt-13.png

4. Ejecuta el Script

  1. Ahora que hemos creado el Applet en IFTTT, también necesitamos la clave API que se puede obtener en Webhooks Settings para permitir que Pico W acceda a IFTTT.

  2. Copia esta clave en el script secrets.py de la Raspberry Pi Pico W.

    ../../_images/3_ifttt4.png

    Nota

    Si no tienes los scripts do_connect.py y secrets.py en tu Pico W, consulta 1. Acceso a la Red para crearlos.

    secrets = {
    'ssid': 'SSID',
    'password': 'PASSWORD',
    'webhooks_key':'WEBHOOKS_API_KEY'
    }
    
  3. Abre el archivo 3_ifttt_mail.py en la ruta kepler-kit-main/iot, luego haz clic en Archivo -> Guardar como o presiona Ctrl+Shift+S.

    ../../_images/3_ifttt1.png
  4. Selecciona Raspberry Pi Pico en la ventana emergente que aparece.

    ../../_images/3_ifttt2.png
  5. Asigna el nombre main.py al archivo. Aparecerá un mensaje si ya existe un archivo con el mismo nombre en tu Pico W.

    ../../_images/3_ifttt3.png
  6. Ahora puedes desconectar el cable USB y usar el Módulo de Carga Li-po para alimentar la Raspberry Pi Pico W. Escucharás un pitido del buzzer cuando el script esté en ejecución. El buzzer sonará continuamente si el módulo PIR detecta que alguien o algún animal pasa, y se te enviará una alerta por correo electrónico. El script puede reiniciarse presionando el botón.

¿Cómo funciona?

La Raspberry Pi Pico W debe estar conectada a Internet, como se describe en 1. Acceso a la Red. Para este proyecto, solo tienes que utilizarlo.

from do_connect import *
do_connect()

Lee los datos del módulo PIR y llama a la función motion_detected() si detecta a alguien pasando (datos de 0 a 1).

import machine

sensor=machine.Pin(17,machine.Pin.IN)

sensor.irq(trigger=machine.Pin.IRQ_RISING, handler=motion_detected)

Luego, Pico W envía datos a IFTTT. Como puedes ver, el message que envías a IFTTT es una cadena de URL. IFTTT identifica al remitente mediante secrets['webhooks_key'], el evento activado se identifica mediante event. Asegúrate de que ambos sean correctos.

import urequests
from secrets import *

event='SecurityWarning'
message=f"https://maker.ifttt.com/trigger/{event}/with/key/{secrets['webhooks_key']}"

def motion_detected(pin):
    urequests.post(message)
    print(message)
    global warn_flag
    warn_flag=True
    sensor.irq(handler=None)

Cuando se llama a motion_detected(), la variable warn_flag se establece en True, lo que hace que el buzzer continúe sonando.

while True:
    if warn_flag==True:
        alarm.toggle()
        time.sleep_ms(50)

El propósito del botón aquí es reiniciar el script.

button=machine.Pin(16,machine.Pin.IN)

def reset_device(pin):
    machine.reset()

button.irq(trigger=machine.Pin.IRQ_RISING, handler=reset_device)