Nota
Ciao, benvenuto nella Comunità di appassionati di SunFounder Raspberry Pi & Arduino & ESP32 su Facebook! Immergiti più a fondo in Raspberry Pi, Arduino e ESP32 insieme ad altri entusiasti.
Perché Unirsi?
Supporto Esperto: Risolvi problemi post-vendita e sfide tecniche con l’aiuto della nostra comunità e del nostro team.
Impara & Condividi: Scambia consigli e tutorial per migliorare le tue competenze.
Anteprime Esclusive: Ottieni accesso anticipato agli annunci di nuovi prodotti e anteprime esclusive.
Sconti Speciali: Goditi sconti esclusivi sui nostri prodotti più recenti.
Promozioni Festive e Giveaway: Partecipa a giveaway e promozioni festive.
👉 Pronto per esplorare e creare con noi? Clicca [qui] e unisciti oggi!
Lezione 49: Sistema di Notifica di Intrusione basato su Blynk
Questo progetto dimostra un semplice sistema di rilevamento di intrusione domestica utilizzando un sensore di movimento PIR (HC-SR501). Quando il sistema è impostato sulla modalità «Assente» attraverso l’app Blynk, il sensore PIR monitora i movimenti. Qualsiasi movimento rilevato attiva una notifica sull’app Blynk, allertando l’utente di una possibile intrusione.
Componenti Necessari
Per questo progetto, abbiamo bisogno dei seguenti componenti.
È decisamente conveniente acquistare un kit completo, ecco il link:
Nome |
ELEMENTI IN QUESTO KIT |
LINK |
---|---|---|
Universal Maker Sensor Kit |
94 |
Puoi anche acquistarli separatamente dai link qui sotto.
INTRODUZIONE COMPONENTE |
LINK DI ACQUISTO |
---|---|
ESP32 & Scheda di Sviluppo (ESP32 WROOM 32E) |
|
- |
1. Assemblaggio del Circuito

2. Configurazione Blynk
2.1 Inizializzazione di Blynk
Naviga fino a Blynk e seleziona START FREE.
Inserisci la tua email per avviare il processo di registrazione.
Conferma la tua registrazione tramite email.
Dopo la conferma, apparirà il Blynk Tour. Si consiglia di selezionare «Salta». Se appare anche Quick Start, considera di saltarlo.
2.2 Creazione di un Template
Prima, crea un template in Blynk. Segui le istruzioni successive per creare il template Intrusion Alert System.
Assegna un nome al template, seleziona Hardware ESP32, e seleziona Connection Type come WiFi, poi seleziona Done.
2.3 Generazione dei Datastream
Apri il template appena configurato, creiamo due datastream.
Clicca su Nuovo Datastream.
Nella finestra popup, scegli Virtual Pin.
Nominare il Virtual Pin V0 come Modalità Assente. Imposta il TIPO DI DATO come Intero con valori MIN e MAX come 0 e 1.
Analogamente, crea un altro datastream Virtual Pin. Nominalo Current Status e imposta il TIPO DI DATO come Stringa.
2.4 Configurazione di un Evento
Successivamente, configureremo un evento che invia una notifica via email se viene rilevata un’intrusione.
Clicca su Aggiungi Nuovo Evento.
Definisci il nome dell’evento e il suo codice specifico. Per TYPE, scegli Warning e scrivi una breve descrizione per l’email da inviare quando si verifica l’evento. Puoi anche regolare la frequenza delle notifiche.
Vai alla sezione Notifications per attivare le notifiche e configurare i dettagli dell’email.
2.5 Perfezionamento del Web Dashboard
Assicurarsi che il Web Dashboard interagisca perfettamente con il Sistema di Allarme Intrusione è fondamentale.
Semplicemente trascina e posiziona sia il Widget Interruttore che il Widget Etichetta sul Web Dashboard.
Quando passi il mouse sopra un widget, appariranno tre icone. Utilizza l’icona delle impostazioni per regolare le proprietà del widget.
Nelle impostazioni del Widget Interruttore, seleziona Datastream come Modalità Assente(V0). Imposta ONLABEL e OFFLABEL per visualizzare rispettivamente «assente» e «casa».
Nelle impostazioni del Widget Etichetta, seleziona Datastream come Stato Corrente(V1).
2.6 Salvataggio del Template
Infine, non dimenticare di salvare il tuo template.
2.7 Creazione di un Dispositivo
È il momento di creare un nuovo dispositivo.
Clicca su Da template per iniziare con una nuova configurazione.
Poi, scegli il template Sistema di Allarme Intrusione e clicca su Crea.
Qui, vedrai il
Template ID
,Device Name
, eAuthToken
. Devi copiare questi nel tuo codice affinché l’ESP32 possa lavorare con Blynk.
3. Esecuzione del Codice
Prima di eseguire il codice, assicurati di installare la libreria
Blynk
dal Library Manager su Arduino IDE.Apri il file
Lesson_49_Blynk_based_intrusion_system.ino
, che si trova nella directoryuniversal-maker-sensor-kit\esp32\Lesson_49_Blynk_based_intrusion_system
. Puoi anche copiarne il contenuto nell’Arduino IDE.Sostituisci i segnaposto per
BLYNK_TEMPLATE_ID
,BLYNK_TEMPLATE_NAME
, eBLYNK_AUTH_TOKEN
con i tuoi ID unici.#define BLYNK_TEMPLATE_ID "TMPxxxxxxx" #define BLYNK_TEMPLATE_NAME "Intrusion Alert System" #define BLYNK_AUTH_TOKEN "xxxxxxxxxxxxx"
Devi anche inserire il
ssid
e lapassword
della tua rete WiFi.char ssid[] = "your_ssid"; char pass[] = "your_password";
Scegli la scheda corretta (ESP32 Dev Module) e la porta, poi clicca sul pulsante Carica.
Apri il monitor seriale (imposta il baud rate a 115200) e attendi un messaggio di connessione riuscita.
Dopo una connessione riuscita, attivando l’interruttore in Blynk avvierà la sorveglianza del modulo PIR. Quando viene rilevato un movimento (stato di 1), dirà, «C’è qualcuno qui!» e invierà un allarme alla tua email.
4. Spiegazione del Codice
Configurazione & Librerie
Qui, configuri le costanti Blynk e le credenziali. Includi anche le librerie necessarie per l’ESP32 e Blynk.
/* Comment this out to disable prints and save space */ #define BLYNK_PRINT Serial #define BLYNK_TEMPLATE_ID "xxxxxxxxxxx" #define BLYNK_TEMPLATE_NAME "Intrusion Alert System" #define BLYNK_AUTH_TOKEN "xxxxxxxxxxxxxxxxxxxxxxxxxxx" #include <WiFi.h> #include <WiFiClient.h> #include <BlynkSimpleEsp32.h>
Configurazione WiFi
Inserisci le tue credenziali WiFi.
char ssid[] = "your_ssid"; char pass[] = "your_password";
Configurazione Sensore PIR
Imposta il pin dove è collegato il sensore PIR e inizializza le variabili di stato.
const int sensorPin = 14; int state = 0; int awayHomeMode = 0; BlynkTimer timer;
Funzione setup()
Questa funzione inizializza il sensore PIR come input, configura la comunicazione seriale, si connette al WiFi e configura Blynk.
Usiamo
timer.setInterval(1000L, myTimerEvent)
per impostare l’intervallo del timer insetup()
, qui impostiamo l’esecuzione della funzionemyTimerEvent()
ogni 1000ms. Puoi modificare il primo parametro ditimer.setInterval(1000L, myTimerEvent)
per cambiare l’intervallo tra le esecuzioni dimyTimerEvent
.
void setup() { pinMode(sensorPin, INPUT); // Imposta il pin del sensore PIR come input Serial.begin(115200); // Avvia la comunicazione seriale a 115200 baud per il debugging // Configura Blynk e connettiti al WiFi Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass); timer.setInterval(1000L, myTimerEvent); // Imposta una funzione da chiamare ogni secondo }
Funzione loop()
La funzione loop esegue continuamente Blynk e le funzioni del timer Blynk.
void loop() { Blynk.run(); timer.run(); }
Interazione con l’App Blynk
Queste funzioni vengono chiamate quando il dispositivo si connette a Blynk e quando c’è un cambiamento nello stato del pin virtuale V0 sull’app Blynk.
Ogni volta che il dispositivo si connette al server Blynk, o si riconnette a causa di condizioni di rete scadenti, viene chiamata la funzione
BLYNK_CONNECTED()
. Il comandoBlynk.syncVirtual()
richiede un singolo valore di Pin Virtuale. Il Pin Virtuale specificato eseguirà la chiamataBLYNK_WRITE()
.Ogni volta che il valore di un pin virtuale sul server BLYNK cambia, scatenerà
BLYNK_WRITE()
.
// Questa funzione viene chiamata ogni volta che il dispositivo è connesso a Blynk.Cloud BLYNK_CONNECTED() { Blynk.syncVirtual(V0); } // Questa funzione viene chiamata ogni volta che lo stato del Pin Virtuale 0 cambia BLYNK_WRITE(V0) { awayHomeMode = param.asInt(); // logica aggiuntiva }
Gestione dei Dati
Ogni secondo, la funzione
myTimerEvent()
chiamasendData()
. Se la modalità assente è abilitata su Blynk, controlla il sensore PIR e invia una notifica a Blynk se viene rilevato un movimento.Usiamo
Blynk.virtualWrite(V1, "Somebody in your house! Please check!");
per cambiare il testo di un’etichetta.Usa
Blynk.logEvent("intrusion_detected");
per registrare l’evento su Blynk.
void myTimerEvent() { sendData(); } void sendData() { if (awayHomeMode == 1) { state = digitalRead(sensorPin); // Leggi lo stato del sensore PIR Serial.print("state:"); Serial.println(state); // Se il sensore rileva un movimento, invia un allarme all'app Blynk if (state == HIGH) { Serial.println("Somebody here!"); Blynk.virtualWrite(V1, "Somebody in your house! Please check!"); Blynk.logEvent("intrusion_detected"); } } }
Riferimenti