Loc. JN65KO - E-Mail: iz3gak@alfa.it CQ ZONE 15 - ITU ZONE 28 - WIP VENEZIA |
Op.
Cristian Voltarel Via Perugia, 19 30021 Caorle VENEZIA Italy |
Allarme
con Arduino di IZ3GAK - 28/11/2016
Lo
scopo del progetto è quello di creare un semplice
sistema di allarme; nel caso specifico l'allarme ha 2
sensori posizionati all'esterno che fanno scattare il
sistema appena qualcuno entra in giardino. In pratica
suona prima che ci si avvicini troppo alla casa.
In
questo progetto ho utilizzato arduino come centralina
e 2 semplici sensori di prossimità. Una volta attivato
il sistema, la centralina attende circa 20sec prima di
attivare i sensori, per dargli modo di leggere la
volumetria che c'è intorno. Il display indicerà il
conto alla rovescia. Terminato il conteggio il display
visualizzerà:
CASA SICURA = indica che l'allarme è attivo e i sensori sono in allerta; E = indica lo stato del sensore verso l'entrata, visualizza OK se non si sono verificati allarmi, ALL se si è verificato un allarme. G = indica lo stato del sensore verso il retro (giardino), visualizza OK se non si sono verificati allarmi, ALL se si è verificato un allarme. T = indica il numero di volte che è andato in allarme Un Led verde indica lo stato di allerta, mentre un led rosso indica lo stato di ALLARME. Durante un allarme verrà attivato un relè al quale è collegata una sirena; è inoltre presente anche un cicalino che suona durante l'allarme ed è posizionato dentro casa. Successivamente ho optato per un Arduino Nano per poter risparmiare oltre che denaro anche spazio, quindi ho ricollegato il tutto come si vede dalle foto successive. Componenti e materiale: 1 scatola per impianti elettrici dove contenere la centralina 1 interuttore 1 led verde 1 led rosso 1 cicalino 1 resistenza da 470ohm 1 arduino UNO o arduino NANO 1 scheda relè per arduino 1 LCD 1602 1 modulo I2C per il display 2 sensori PIR 1 basetta millefori Collegamenti: Sketch: /* //download libreria e rinominare in LiquidCrystal copiare sotto libraries //https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads //quella usata è NewliquidCrystal_1.3.4.zip */ /** ALLARME ANTIFURTO ADATTATO DA CRISTIAN VOLTAREL IZ3GAK ** /** www.iz3gak.it ** /*************************************************************/ #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); /************ DEFINIZIONI VARIABILI ******************** /*******************************************************/ int ledBoard = 13; //il led presente su arduino int ledGreen = 3; //collegare qui il led verde int ledRed = 4; //collegare qui il led rosso int buzzer = 12; //collegare qui il buzzer int sensore_1= 5; //collegare qui il sensore 1 ENTRATA int sensore_2= 6; //collegare qui il sensore 1 GIARDINO int rele1 = 7; int rele2 = 8; boolean stato = 0; //variabile che serve per un doppio sul ciclo IF String volte1 = "OK"; //volte che è andato in allarme il sensore 1 String volte2 = "OK"; //volte che è andato in allarme il sensore 2 int volte =-1; //volte che è andato in allarme // definizione variabili per il ciclo di calibrazione int sec_calibrazione = 20; int sec_mancanti = 0; int sec_passati = 0; int i = 0; //variabile per i cicli for void setup() { //Serial.begin(9600); //metti i 2 // se vuoi eliminare i msg seriale, //altrimenti resra acceso sempre il led TX su arduino lcd.begin(16,2); calibrazione (); pinMode(buzzer,OUTPUT); pinMode(rele1,OUTPUT); pinMode(rele2,OUTPUT); pinMode( ledBoard, OUTPUT ); pinMode( ledGreen, OUTPUT ); pinMode( ledRed, OUTPUT ); digitalWrite( rele1, HIGH ); digitalWrite( rele2, HIGH ); digitalWrite( ledBoard, LOW ); digitalWrite( ledGreen, LOW ); digitalWrite( ledRed, LOW ); if ( digitalRead (5)==HIGH) stato=1; if ( digitalRead (5)==LOW) stato=0; if ( digitalRead (6)==HIGH) stato=1; if ( digitalRead (6)==LOW) stato=0; } /*************************************************************** /***** INIZIO PROGRAMMA ******* /***************************************************************/ void loop() { int pirSensore_1 = digitalRead( sensore_1 ); int pirSensore_12= (pirSensore_1 == HIGH)? LOW:HIGH; int pirSensore_2 = digitalRead( sensore_2 ); int pirSensore_22= (pirSensore_2 == HIGH)? LOW:HIGH; // **************** LETTURA SENSORI ********************* // *** gli stati dei LED sono invertiti ***************** if (pirSensore_1 == HIGH)//così il buzzer è intermittente { digitalWrite( rele1, LOW); digitalWrite( ledGreen, HIGH); digitalWrite( ledRed, LOW); stato=0; volte1="ALL"; Serial.println("Sensore ENTRATA"); lcd.clear(); lcd.setCursor(0,0); lcd.print("Sensore ENTRATA"); lcd.setCursor(0,1); lcd.print("---> IN ALLARME"); cicalino(); } else if (pirSensore_2 == HIGH)//così il buzzer è intermittente { digitalWrite( rele1, LOW); digitalWrite( ledGreen, HIGH); digitalWrite( ledRed, LOW); stato=0; volte2="ALL"; Serial.println("ALLARME"); lcd.clear(); lcd.setCursor(0,0); lcd.print("Sensore Giardino"); lcd.setCursor(0,1); lcd.print("---> IN ALLARME"); cicalino(); } else if (pirSensore_1 == LOW && stato == 0) { digitalWrite( rele1, HIGH); digitalWrite( ledGreen, LOW); digitalWrite( ledRed, HIGH); stato=1; volte++; Serial.println("SICURO"); lcd.clear(); lcd.setCursor(0,0); lcd.print("E="); lcd.print(volte1); lcd.print(" G="); lcd.print(volte2); lcd.print(" T=");//numero di volte in allarme totati lcd.print(volte); lcd.setCursor(0,1); lcd.print("* CASA SICURA *"); } delay(100); } /*************************************************************** /***** BLOCCHI RICHIAMATI ALL'INTERNO DEL PROGRAMMA ************ /***************************************************************/ void calibrazione (void) // ciclo per la calibrazione dei sensori { for (sec_passati = 0; sec_passati <= sec_calibrazione; sec_passati++) { lcd.clear(); lcd.setCursor(0,0); lcd.print("Attivazione tra"); lcd.setCursor(0,1); sec_mancanti = sec_calibrazione - sec_passati; lcd.print(sec_mancanti); lcd.print (" secondi"); delay (1000); } } void cicalino (void) // blocco che fa suonare il buzzer { tone(buzzer,600,200); //suona nota sul pin 12 alla frequenza di 600Hz delay(100); //aspetta noTone(buzzer); //non suona delay(100); //aspetta } Ulteriori annotazioni: Verificare bene i collegamenti, ricordarsi di collegare correttamente il display quando si usa arduino nano. |