🧠 Introduzione
Dopo aver realizzato sistemi di controllo e automazione come la gestione delle luci e l’irrigazione intelligente, in questo progetto sviluppiamo un sistema di sicurezza domestica controllabile via WiFi.
L’obiettivo è rilevare la presenza di movimento all’interno di un ambiente tramite un sensore PIR e attivare automaticamente un allarme sonoro. Allo stesso tempo, il sistema potrà essere attivato o disattivato direttamente da una pagina web, rendendo il controllo semplice e immediato.
Questo progetto rappresenta una base concreta per la realizzazione di sistemi antifurto smart e introduce concetti importanti come la gestione degli stati (attivo/disattivo) e il monitoraggio remoto.
È una soluzione perfetta per capire come Arduino può essere utilizzato anche in ambito sicurezza.
Dopo aver realizzato sistemi di controllo e automazione come la gestione delle luci e l’irrigazione intelligente, in questo progetto sviluppiamo un sistema di sicurezza domestica controllabile via WiFi.
L’obiettivo è rilevare la presenza di movimento all’interno di un ambiente tramite un sensore PIR e attivare automaticamente un allarme sonoro. Allo stesso tempo, il sistema potrà essere attivato o disattivato direttamente da una pagina web, rendendo il controllo semplice e immediato.
Questo progetto rappresenta una base concreta per la realizzazione di sistemi antifurto smart e introduce concetti importanti come la gestione degli stati (attivo/disattivo) e il monitoraggio remoto.
È una soluzione perfetta per capire come Arduino può essere utilizzato anche in ambito sicurezza.
🧰 Materiale necessario
- Arduino UNO
- Modulo ESP8266
- Sensore PIR
- Buzzer
- Breadboard
- Cavi jumper
🛒 Componenti e risorse consigliate
👉 Kit Arduino consigliato: https://amzn.to/41fmFNK
💡 Con un solo kit puoi realizzare la maggior parte dei progetti presenti nel sito.
📚 I miei libri consigliati
👉 Arduino per tutti – Volume 1: https://amzn.to/4rGNxB9
👉 Arduino per tutti – Volume 2: https://amzn.to/4bkfaey
👉 Arduino per tutti – Volume 3: https://amzn.to/4bogjAg
👉 Kit Arduino consigliato: https://amzn.to/41fmFNK
💡 Con un solo kit puoi realizzare la maggior parte dei progetti presenti nel sito.
📚 I miei libri consigliati
👉 Arduino per tutti – Volume 1: https://amzn.to/4rGNxB9
👉 Arduino per tutti – Volume 2: https://amzn.to/4bkfaey
👉 Arduino per tutti – Volume 3: https://amzn.to/4bogjAg
🔌 Schema di collegamento
Sensore PIR
Buzzer
Modulo ESP8266
⚠️ Tutti i GND devono essere collegati tra loro.
Sensore PIR
- VCC → 5V Arduino
- GND → GND Arduino
- OUT → Pin 6 Arduino
Buzzer
- Positivo → Pin 7 Arduino
- Negativo → GND Arduino
Modulo ESP8266
- VCC → 3.3V Arduino
- GND → GND Arduino
- TX → Pin 10 Arduino
- RX → Pin 11 Arduino (consigliato partitore di tensione)
- CH_PD → 3.3V
⚠️ Tutti i GND devono essere collegati tra loro.
📚 Librerie necessarie
Questo progetto utilizza solo librerie già presenti nell’IDE Arduino.
Questo progetto utilizza solo librerie già presenti nell’IDE Arduino.
💻 Codice Arduino
// ============================================
// Progetto 92 - Sistema sicurezza casa
// Allarme PIR + controllo web
// ============================================
#include <SoftwareSerial.h>
SoftwareSerial esp(10, 11);
String ssid = "NOME_WIFI";
String password = "PASSWORD_WIFI";
int pir = 6;
int buzzer = 7;
bool sistemaAttivo = false;
void setup() {
pinMode(pir, INPUT);
pinMode(buzzer, OUTPUT);
digitalWrite(buzzer, LOW);
Serial.begin(9600);
esp.begin(115200);
sendCommand("AT", 2000);
sendCommand("AT+CWMODE=1", 2000);
String cmd = "AT+CWJAP=\"" + ssid + "\",\"" + password + "\"";
sendCommand(cmd, 6000);
sendCommand("AT+CIPMUX=1", 2000);
sendCommand("AT+CIPSERVER=1,80", 2000);
}
void loop() {
int movimento = digitalRead(pir);
// Se sistema attivo e rileva movimento
if (sistemaAttivo && movimento == HIGH) {
digitalWrite(buzzer, HIGH);
} else {
digitalWrite(buzzer, LOW);
}
if (esp.available()) {
String request = esp.readString();
// Attiva sistema
if (request.indexOf("ARM=ON") != -1) {
sistemaAttivo = true;
}
// Disattiva sistema
if (request.indexOf("ARM=OFF") != -1) {
sistemaAttivo = false;
}
String stato = (sistemaAttivo) ? "ATTIVO" : "DISATTIVO";
String webpage =
"HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n"
"<html><head>"
"<meta name='viewport' content='width=device-width, initial-scale=1'>"
"<style>"
"body{font-family:Arial;text-align:center;background:#111;color:#fff;}"
"a{display:block;margin:15px;padding:15px;background:#ff4444;color:#fff;border-radius:10px;text-decoration:none;}"
"</style>"
"</head><body>"
"<h1>Sistema Sicurezza</h1>"
"<p>Stato: " + stato + "</p>"
"<a href='/?ARM=ON'>Attiva sistema</a>"
"<a href='/?ARM=OFF'>Disattiva sistema</a>"
"</body></html>";
String sendCmd = "AT+CIPSEND=0," + String(webpage.length());
sendCommand(sendCmd, 2000);
esp.print(webpage);
sendCommand("AT+CIPCLOSE=0", 2000);
}
}
void sendCommand(String cmd, int timeout) {
esp.println(cmd);
long int time = millis();
while ((time + timeout) > millis()) {
while (esp.available()) {
Serial.write(esp.read());
}
}
}
// Progetto 92 - Sistema sicurezza casa
// Allarme PIR + controllo web
// ============================================
#include <SoftwareSerial.h>
SoftwareSerial esp(10, 11);
String ssid = "NOME_WIFI";
String password = "PASSWORD_WIFI";
int pir = 6;
int buzzer = 7;
bool sistemaAttivo = false;
void setup() {
pinMode(pir, INPUT);
pinMode(buzzer, OUTPUT);
digitalWrite(buzzer, LOW);
Serial.begin(9600);
esp.begin(115200);
sendCommand("AT", 2000);
sendCommand("AT+CWMODE=1", 2000);
String cmd = "AT+CWJAP=\"" + ssid + "\",\"" + password + "\"";
sendCommand(cmd, 6000);
sendCommand("AT+CIPMUX=1", 2000);
sendCommand("AT+CIPSERVER=1,80", 2000);
}
void loop() {
int movimento = digitalRead(pir);
// Se sistema attivo e rileva movimento
if (sistemaAttivo && movimento == HIGH) {
digitalWrite(buzzer, HIGH);
} else {
digitalWrite(buzzer, LOW);
}
if (esp.available()) {
String request = esp.readString();
// Attiva sistema
if (request.indexOf("ARM=ON") != -1) {
sistemaAttivo = true;
}
// Disattiva sistema
if (request.indexOf("ARM=OFF") != -1) {
sistemaAttivo = false;
}
String stato = (sistemaAttivo) ? "ATTIVO" : "DISATTIVO";
String webpage =
"HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n"
"<html><head>"
"<meta name='viewport' content='width=device-width, initial-scale=1'>"
"<style>"
"body{font-family:Arial;text-align:center;background:#111;color:#fff;}"
"a{display:block;margin:15px;padding:15px;background:#ff4444;color:#fff;border-radius:10px;text-decoration:none;}"
"</style>"
"</head><body>"
"<h1>Sistema Sicurezza</h1>"
"<p>Stato: " + stato + "</p>"
"<a href='/?ARM=ON'>Attiva sistema</a>"
"<a href='/?ARM=OFF'>Disattiva sistema</a>"
"</body></html>";
String sendCmd = "AT+CIPSEND=0," + String(webpage.length());
sendCommand(sendCmd, 2000);
esp.print(webpage);
sendCommand("AT+CIPCLOSE=0", 2000);
}
}
void sendCommand(String cmd, int timeout) {
esp.println(cmd);
long int time = millis();
while ((time + timeout) > millis()) {
while (esp.available()) {
Serial.write(esp.read());
}
}
}
🌐 Come accedere alla pagina web
Dopo aver caricato il codice, il modulo ESP8266 si connette alla rete WiFi configurata.
Apri il Monitor Seriale per individuare l’indirizzo IP assegnato dal router. Inserisci questo indirizzo nel browser di uno smartphone o computer collegato alla stessa rete.
La pagina web mostrerà lo stato del sistema e permetterà di attivare o disattivare l’allarme.
Dopo aver caricato il codice, il modulo ESP8266 si connette alla rete WiFi configurata.
Apri il Monitor Seriale per individuare l’indirizzo IP assegnato dal router. Inserisci questo indirizzo nel browser di uno smartphone o computer collegato alla stessa rete.
La pagina web mostrerà lo stato del sistema e permetterà di attivare o disattivare l’allarme.
⚙️ Come funziona
Arduino legge continuamente il sensore PIR per rilevare eventuali movimenti.
Quando il sistema è attivo, qualsiasi movimento attiva il buzzer, simulando un allarme. Quando il sistema è disattivato, il sensore continua a funzionare ma non genera alcuna azione.
Il controllo tramite web permette di gestire facilmente lo stato del sistema anche a distanza.
Arduino legge continuamente il sensore PIR per rilevare eventuali movimenti.
Quando il sistema è attivo, qualsiasi movimento attiva il buzzer, simulando un allarme. Quando il sistema è disattivato, il sensore continua a funzionare ma non genera alcuna azione.
Il controllo tramite web permette di gestire facilmente lo stato del sistema anche a distanza.
🔁 Varianti possibili
- Invio notifiche (Telegram o email)
- Sirena più potente
- Sensori multipli
- Memorizzazione eventi