Nota

Ciao, benvenuto nella Community di appassionati di SunFounder Raspberry Pi, Arduino e ESP32 su Facebook! Approfondisci le tue conoscenze su Raspberry Pi, Arduino e ESP32 insieme ad altri appassionati.

Perché unirti?

  • Supporto esperto: Risolvi problemi post-vendita e sfide tecniche con l’aiuto della nostra community e del nostro team.

  • Impara e condividi: Scambia consigli e tutorial per migliorare le tue competenze.

  • Anteprime esclusive: Ottieni accesso anticipato agli annunci di nuovi prodotti e alle anteprime.

  • Sconti speciali: Approfitta di sconti esclusivi sui nostri prodotti più recenti.

  • Promozioni festive e giveaway: Partecipa a promozioni festive e concorsi a premi.

👉 Pronto a esplorare e creare con noi? Clicca su [Qui] e unisciti oggi stesso!

3. Sistema di Sicurezza tramite @IFTTT

Con questo progetto, creiamo un dispositivo di sicurezza che utilizza un sensore PIR per rilevare quando un ladro o un animale randagio entra nella tua casa. In tal caso, riceverai un’email di avviso.

Il servizio più semplice da utilizzare sarà Webhook. Una richiesta POST viene inviata al servizio IFTTT da Raspberry Pi Pico W. Usando IFTTT, creeremo un Applet che intercetta il webhook e invia un’email.

Avvertimento

la politica dei prezzi di IFTTT è stata aggiornata. L’utilizzo di questo progetto potrebbe comportare costi aggiuntivi. Si prega di prenderne visione in anticipo.

1. Componenti necessari

In questo progetto, abbiamo bisogno dei seguenti componenti.

È sicuramente conveniente acquistare un kit completo, ecco il link:

Nome

ELEMENTI IN QUESTO KIT

LINK

Kit Kepler

450+

Kepler Ultimate Kit

Puoi anche acquistarli separatamente dai link qui sotto.

SN

COMPONENTE

QUANTITÀ

LINK

1

Introduzione al Pico W

1

ACQUISTA

2

Cavo Micro USB

1

3

Breadboard

1

ACQUISTA

4

Cavi Jumper

Diverse

ACQUISTA

5

Transistor

1(S8050)

ACQUISTA

6

Resistenza

2(1KΩ, 10KΩ)

ACQUISTA

7

Pulsante

1

ACQUISTA

8

Cicalino attivo Cicalino

1

9

Modulo Caricatore Li-po

1

10

Batteria 18650

1

11

Supporto batteria

1

12

Modulo Sensore di Movimento PIR

1

ACQUISTA

2. Costruisci il Circuito

Avvertimento

Assicurati che il modulo caricabatterie Li-po sia collegato come mostrato nello schema. Altrimenti, un cortocircuito potrebbe danneggiare la batteria e il circuito.

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

3. CONFIGURA IFTTT

IFTTT è un servizio gratuito che fornisce vari modi per collegare diversi servizi di dati tra loro.

Creeremo un Applet che reagisce a un webhook (URL personalizzato) che invia dati a IFTTT. IFTTT ti invierà quindi un’email.

Segui i passaggi seguenti su IFTTT.

  1. Visita IFTTT per accedere o creare un account.

  2. Clicca su Crea.

  3. Aggiungi un evento If This.

  4. Cerca Webhooks.

  5. Tocca Ricevi una richiesta web.

  6. Inserisci il nome dell’evento (es. SecurityWarning) e clicca su Crea trigger.

  7. Aggiungi un evento Then That.

  8. Cerca Email.

  9. Clicca su Inviami un’email.

  10. Compila Oggetto e Corpo, quindi clicca su Crea azione.

    ../../_images/ifttt-10.png
  11. Clicca su Continua per completare la configurazione.

    ../../_images/ifttt-11.png
  12. Modifica il nome del titolo e hai finito.

    ../../_images/ifttt-12.png
  13. Ora verrai reindirizzato automaticamente alla pagina dei dettagli dell’Applet, dove puoi vedere che l’Applet è attualmente connesso e puoi attivare o disattivare l’interruttore.

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

4. Esegui lo Script

  1. Ora che abbiamo creato l’Applet IFTTT, ci serve anche la chiave API che può essere ottenuta da Webhooks Settings per consentire a Pico W di accedere a IFTTT.

  2. Copiala nello script secrets.py in Raspberry Pi Pico W.

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

    Nota

    Se non hai gli script do_connect.py e secrets.py nel tuo Pico W, fai riferimento a 1. Accesso alla Rete per crearli.

    secrets = {
    'ssid': 'SSID',
    'password': 'PASSWORD',
    'webhooks_key':'WEBHOOKS_API_KEY'
    }
    
  3. Apri il file 3_ifttt_mail.py nel percorso kepler-kit-main/iot, quindi clicca su File -> Salva con nome o premi Ctrl+Shift+S.

    ../../_images/3_ifttt1.png
  4. Seleziona Raspberry Pi Pico nella finestra popup che appare.

    ../../_images/3_ifttt2.png
  5. Imposta il nome del file a main.py. Apparirà un avviso se esiste già un file con lo stesso nome sul tuo Pico W.

    ../../_images/3_ifttt3.png
  6. Ora puoi scollegare il cavo USB e utilizzare il modulo caricabatterie Li-po per alimentare il Raspberry Pi Pico W. Sentirai un beep quando lo script sarà in esecuzione. Il cicalino continuerà a suonare se il modulo PIR rileva una persona/creatura di passaggio, e ti verrà inviata un’email di avviso. Lo script può essere riavviato premendo il pulsante.

Come funziona?

Il Raspberry Pi Pico W deve essere connesso a Internet, come descritto in 1. Accesso alla Rete. Per questo progetto, usalo semplicemente.

from do_connect import *
do_connect()

Legge i dati dal modulo PIR e chiama la funzione motion_detected() se rileva qualcuno che passa (dati da 0 a 1).

import machine

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

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

Successivamente il Pico W invia i dati a IFTTT. Come puoi vedere, il messaggio che invii a IFTTT è una stringa di url. IFTTT identifica il mittente tramite secrets['webhooks_key'], l’evento attivato è identificato da event. Quindi, assicurati che siano corretti.

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)

Quando viene chiamato motion_detected(), la variabile warn_flag viene impostata su True, facendo sì che il cicalino continui a suonare.

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

Lo scopo del pulsante qui è riavviare lo script.

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

def reset_device(pin):
    machine.reset()

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