Nota
Ciao, benvenuti nella Comunità degli Appassionati di SunFounder Raspberry Pi & Arduino & ESP32 su Facebook! Esplorate più a fondo Raspberry Pi, Arduino e ESP32 insieme ad altri appassionati.
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.
Sconti Speciali: Goditi sconti esclusivi sui nostri prodotti più recenti.
Promozioni Festive e Regali: Partecipa a regali e promozioni festive.
👉 Pronto a esplorare e creare con noi? Clicca [qui] e unisciti oggi!
Lezione 51: Sistema di Allarme Intrusione con Blynk
Questo progetto dimostra un semplice sistema di rilevamento intrusione domestico utilizzando un sensore a infrarossi passivi (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 sottostanti.
Introduzione ai Componenti |
Link di Acquisto |
---|---|
Arduino UNO R3 o R4 |
|
- |
|
- |
Cablaggio

Configurazione di Blynk
Nota
Se non sei familiare con Blynk, è vivamente consigliato leggere prima questi due tutorial. Inizia con Blynk è una guida per principianti su Blynk, che include come configurare ESP8266 e registrarsi su Blynk. E Lezione 50: Sistema di Allerta Fiamma con Blynk è un esempio semplice, ma la descrizione dei passaggi sarà più dettagliata.
1 Crea un template
Prima di tutto, dobbiamo stabilire un template su Blynk. Segui i passaggi sottostanti per creare un template «Sistema di Allarme Intrusione».

2 Datastream
Crea Datastreams di tipo Pin Virtuale nella pagina Datastream per ricevere dati da esp8266 e dalla scheda uno r4.
Crea il Pin Virtuale V0 secondo il seguente schema:
Imposta il nome del Pin Virtuale V0 su Modalità Assente. Imposta il TIPO DI DATO su Integer e MIN e MAX su 0 e 1.
Crea il Pin Virtuale V1 secondo il seguente schema:
Imposta il nome del Pin Virtuale V1 su Stato Corrente. Imposta il TIPO DI DATO su Stringa.
Assicurati di avere impostato due Pin Virtuali secondo i passaggi sopra.

3 Evento
Successivamente, creeremo un evento che registra il rilevamento di intrusione e invia una notifica via email.
Nota
Si raccomanda di mantenere le impostazioni coerenti con le mie, altrimenti potrebbe essere necessario modificare il codice per eseguire il progetto. Assicurati che il CODICE EVENTO sia impostato su intrusion_detected
.

Vai alla pagina Notifications e configura le impostazioni email.

4 Web Dashboard
Dobbiamo anche configurare il Web Dashboard per interagire con il Sistema di Allarme Intrusione.
Trascina e rilascia un Widget Interruttore e un Widget Etichetta nella pagina Web Dashboard.

Nella pagina delle impostazioni del Widget Interruttore, seleziona Datastream come Modalità Assente(V0). Imposta ONLABEL e OFFLABEL per mostrare «fuori casa» quando l’interruttore è acceso, e «a casa» quando è spento.

Nella pagina delle impostazioni del Widget Etichetta, seleziona Datastream come Stato Corrente(V1).

5 Salva il template
Infine, ricorda di salvare il template.

Codice
Apri il file
Lesson_51_Intrusion_alert_system.ino
nel percorsouniversal-maker-sensor-kit\arduino_uno\Lesson_51_Intrusion_alert_system
, o copia questo codice nell”Arduino IDE.Crea un dispositivo Blynk utilizzando il template «Sistema di Allarme Intrusione». Poi, sostituisci
BLYNK_TEMPLATE_ID
,BLYNK_TEMPLATE_NAME
, eBLYNK_AUTH_TOKEN
con i tuoi.#define BLYNK_TEMPLATE_ID "TMPxxxxxxx" #define BLYNK_TEMPLATE_NAME "Intrusion Alert System" #define BLYNK_AUTH_TOKEN "xxxxxxxxxxxxx"
Devi anche inserire il
ssid
e lapassword
del WiFi che stai utilizzando.char ssid[] = "your_ssid"; char pass[] = "your_password";
Dopo aver selezionato la scheda e la porta corretti, clicca sul pulsante Upload.
Apri il monitor seriale (imposta il baudrate a 115200) e attendi un prompt come una connessione riuscita che appaia.
Nota
Se appare il messaggio
ESP is not responding
quando ti connetti, segui questi passaggi.Assicurati che la batteria da 9V sia collegata.
Resetta il modulo ESP8266 collegando il pin RST a GND per 1 secondo, poi scollegarlo.
Premi il pulsante di reset sulla scheda R4.
A volte, potrebbe essere necessario ripetere l’operazione sopra 3-5 volte, per favore sii paziente.
Analisi del Codice
Configurazione & Librerie
Qui, vengono impostate le credenziali e le costanti per Blynk. Sono incluse le librerie necessarie per il modulo WiFi ESP8266 e Blynk.
#define BLYNK_TEMPLATE_ID "TMPxxxx" #define BLYNK_TEMPLATE_NAME "Intrusion Alert System" #define BLYNK_AUTH_TOKEN "xxxxxx-" #define BLYNK_PRINT Serial #include <ESP8266_Lib.h> #include <BlynkSimpleShieldEsp8266.h>
Configurazione WiFi
Configura le credenziali WiFi e imposta la comunicazione seriale software con il modulo ESP01.
char ssid[] = "your_ssid"; char pass[] = "your_password"; SoftwareSerial EspSerial(2, 3); #define ESP8266_BAUD 115200 ESP8266 wifi(&EspSerial);
Configurazione Sensore PIR
Definisci il pin dove è collegato il sensore PIR e inizializza le variabili di stato.
const int sensorPin = 8; int state = 0; int awayHomeMode = 0; BlynkTimer timer;
Funzione setup()
Questa 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 in setup(), qui impostiamo per eseguire la 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); Serial.begin(115200); EspSerial.begin(ESP8266_BAUD); delay(10); Blynk.config(wifi, BLYNK_AUTH_TOKEN); Blynk.connectWiFi(ssid, pass); timer.setInterval(1000L, myTimerEvent); }
Funzione loop()
La funzione loop esegue ripetutamente le funzioni Blynk e 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 scarse, la funzione
BLYNK_CONNECTED()
viene chiamata. Il comandoBlynk.syncVirtual()
richiede il valore di un singolo Pin Virtuale. Il Pin Virtuale specificato eseguirà la chiamataBLYNK_WRITE()
. Per maggiori dettagli, consulta Blynk - State Syncing .Ogni volta che il valore di un pin virtuale sul server BLYNK cambia, verrà attivato
BLYNK_WRITE()
. Maggiori dettagli su Blynk - 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, verifica 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 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