OM/YL Online  

   

Login  

   

donazione  

 
   Donazione a sostegno e per lo
      sviluppo
del Club Italiano
                Modi Digitali
               Psktrentunisti

   

MultiTrans  

   
   
Benvenuto, Ospite
Nome utente: Password: Ricordami

ARGOMENTO: Antifurto semplice con Arduino

Antifurto semplice con Arduino 3 Anni 11 Mesi fa #1068

  • IZ3ZLU
  • Avatar di IZ3ZLU
  • OFFLINE
  • Moderatore
  • Messaggi: 580
  • Ringraziamenti ricevuti 102
  • Karma: 44
Salve,
visti i tempi e ciò che accade nel mondo, non mi sento più molto sicuro in casa.
Oggi mentre cercavo un progetto di antifurto basato su Arduino ne ho trovati vari, ma tutti estremamente complessi e professionali.
Io volevo qualcosa che mi avvisasse nel caso qualcuno cerchi di entrare o semplicemente si avvicini alla mia porta d'ingresso di notte mentre sono in casa (caso più pericoloso visto che ne va della nostra vita, nel caso entrino mentre non ci sono, hanno veramente un niente assoluto da rubare).
Niente di più semplice di due sensori di presenza, uno subito fuori dalla porta e uno subito dentro... Un Arduino alimentato da rete e, volendo una batteria tampone.
Una scatoletta sul comodino che contiene un display che(tanto per fare i signori) da la temperatura e l'umidità (ci aggiungerò anche ora e data)e un buzzer che suona nel caso le due porte dei sensori diventano HIGH.
Un antifurto terra terra insomma, ma facilmente upgradabile a piacimento..
Io lancio il sasso e vediamo se i cerchi nell'acqua si sviluppano come vorrei.....

Ultima modifica: 3 Anni 11 Mesi fa da IZ3ZLU.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Antifurto semplice con Arduino 3 Anni 11 Mesi fa #1069

  • IZ3ZLU
  • Avatar di IZ3ZLU
  • OFFLINE
  • Moderatore
  • Messaggi: 580
  • Ringraziamenti ricevuti 102
  • Karma: 44
Lo sketch iniziale è il seguente:
#include <VirtualWire.h>
#include <Wire.h>
#include <PCF8574_HD44780_I2C.h>
#include <dht.h>
#define dht_dpin A0
dht DHT;

PCF8574_HD44780_I2C lcd(0x27,20,4);


/* Programam che utilizza il sensore di presenza PIR HC-SR501, per rilevare la presenza di un oggetto in movimento e accende un LED, collegato al PIN 13*/
 
// Tempo di calibrazione del sensore
int calibrationTime = 30;       
 
//Il tempo in cui l'uscita sia bassa
long unsigned int lowIn;        
 
// valore di millisecondi, per cui si ritiene che ci sia "quiete"
long unsigned int pause = 5000; 
 
boolean lockLow = true;
boolean takeLowTime; 
int pirPin1 = 4; 
int pirPin = 3;    //il PIN di Arduino a cui è collegato il sensore
int ledPin = 13;   //il PIN a cui è connesso il LED
int ledPin1 = 12; 
int relePin = 11;
// Impostazione del sensore

void setup(){
Serial.begin(9600);
delay(300);//Let system settle
Serial.println("Humidity and temperature\n\n");
delay(700);//Wait rest of 1000ms recommended delay before
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print(" Antifurto IZ3ZLU ");
  Serial.begin(9600);
pinMode(pirPin1, INPUT);
  pinMode(pirPin, INPUT);
  pinMode(ledPin, OUTPUT);
pinMode(ledPin1, OUTPUT);
pinMode(relePin, OUTPUT);
  digitalWrite(pirPin, LOW);

 
  //Fase di calibrazione
  Serial.print("calibrating sensor ");
    for(int i = 0; i < calibrationTime; i++){
      Serial.print(".");
      delay(1000);
      }
    Serial.println(" done");
    Serial.println("SENSOR ACTIVE");
    delay(50);
 

  }
void loop(){
  DHT.read11(dht_dpin);
lcd.setCursor(0,0);
lcd.print("Umidita': %");
lcd.setCursor(13,0);
lcd.print(DHT.humidity);
lcd.setCursor(0,1);
lcd.print("Temperatura: C");
lcd.setCursor(13,1);
lcd.print(DHT.temperature);
Serial.print("Current humidity = ");
Serial.print(DHT.humidity);
Serial.print("% ");
Serial.print("temperature = ");
Serial.print(DHT.temperature);
Serial.println("C ");
delay(800);
 
  if(digitalRead(pirPin) == HIGH){
lcd.setCursor(0,2);
lcd.print(" ALLARME 1!!!!");
 digitalWrite(ledPin, HIGH);   //Accendiamo il LED
digitalWrite(relePin, HIGH);
       if(lockLow){ 
 
         lockLow = false;           
         Serial.println("---");
         Serial.print("motion detected at ");
         Serial.print(millis()/1000);
         Serial.println(" sec");
         delay(50);
         }        
         takeLowTime = true;
       }
  if(digitalRead(pirPin1) == HIGH){
lcd.setCursor(0,3);
lcd.print(" ALLARME 2!!!!");
  digitalWrite(ledPin1, HIGH);   //Accendiamo il LED
digitalWrite(relePin, HIGH);
       if(lockLow){ 
 
         lockLow = false;           
         Serial.println("---");
         Serial.print("motion detected at ");
         Serial.print(millis()/1000);
         Serial.println(" sec");
         delay(50);
         }        
         takeLowTime = true;
       }
      // Questo IF permette di stabilire se non c'è più nessun movimento
     if(digitalRead(pirPin) == LOW){      
       digitalWrite(ledPin, LOW);  //Si spegne il LED
  lcd.setCursor(0,2);
lcd.print(" ");
if(digitalRead(pirPin1) == LOW){      
       digitalWrite(ledPin1, LOW);  //Si spegne il LED
digitalWrite(relePin, LOW);
  lcd.setCursor(0,3);
lcd.print(" ");
       if(takeLowTime){
        lowIn = millis();         
        takeLowTime = false;      
        }
 if(digitalRead(pirPin1) == LOW){      
       digitalWrite(ledPin1, LOW);  //Si spegne il LED
digitalWrite(relePin, LOW);
  lcd.setCursor(0,2);
lcd.print(" ");
       if(takeLowTime){
        lowIn = millis();         
        takeLowTime = false;      
        }
 
       if(!lockLow && millis() - lowIn > pause){ 
 
           lockLow = true;                       
           Serial.print("motion ended at ");      //output
           Serial.print((millis() - pause)/1000);
           Serial.println(" sec");
           delay(50);
           }
       }
  }
}
}


Per qualsiasi info sono a disposizione.
'73 IZ3ZLU
Ultima modifica: 3 Anni 11 Mesi fa da IZ3ZLU.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Antifurto semplice con Arduino 3 Anni 11 Mesi fa #1072

  • IZ3ZLU
  • Avatar di IZ3ZLU
  • OFFLINE
  • Moderatore
  • Messaggi: 580
  • Ringraziamenti ricevuti 102
  • Karma: 44
Vista la giornata ho continuato il progetto inserendo un moduletto RTC in modo da avere sul display la data e l'ora.


Questa immagine è nascosta ai visitatori. Prego accedi o registrati per visualizzarli.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Antifurto semplice con Arduino 3 Anni 11 Mesi fa #1073

  • IZ3ZLU
  • Avatar di IZ3ZLU
  • OFFLINE
  • Moderatore
  • Messaggi: 580
  • Ringraziamenti ricevuti 102
  • Karma: 44
Il nuovo sketch con anche il modulo data/ora:

#include <VirtualWire.h>
#include <Wire.h>
#include <RTClib.h>
#include <PCF8574_HD44780_I2C.h>
#include <dht.h>
#define dht_dpin A0
dht DHT;
char buffer1[20];
char buffer2[20];
RTC_DS1307 RTC;
const int setpin = 6;
boolean statepin = 0;

PCF8574_HD44780_I2C lcd(0x27,20,4);


/* Programam che utilizza il sensore di presenza PIR HC-SR501, per rilevare la presenza di un oggetto in movimento e accende un LED, collegato al PIN 13*/
 
// Tempo di calibrazione del sensore
int calibrationTime = 30;       
 
//Il tempo in cui l'uscita sia bassa
long unsigned int lowIn;        
 
// valore di millisecondi, per cui si ritiene che ci sia "quiete"
long unsigned int pause = 5000; 
 
boolean lockLow = true;
boolean takeLowTime; 
int pirPin1 = 4; 
int pirPin = 3;    //il PIN di Arduino a cui è collegato il sensore
int ledPin = 13;   //il PIN a cui è connesso il LED
int ledPin1 = 12; 
int relePin = 11;
// Impostazione del sensore

void setup(){
pinMode (6, INPUT);
digitalWrite (6, HIGH);
Wire.begin();
RTC.begin();
lcd.init();
lcd.backlight();

lcd.setCursor(0,2);
lcd.print("Data - ");
lcd.setCursor(0,3);
lcd.print("Ora - ");
if (! RTC.isrunning()) {
RTC.adjust(DateTime(__DATE__, __TIME__));
}

Serial.begin(9600);
delay(300);//Let system settle
Serial.println("Humidity and temperature\n\n");
delay(700);//Wait rest of 1000ms recommended delay before
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print(" Antifurto IZ3ZLU ");
  Serial.begin(9600);
pinMode(pirPin1, INPUT);
  pinMode(pirPin, INPUT);
  pinMode(ledPin, OUTPUT);
pinMode(ledPin1, OUTPUT);
pinMode(relePin, OUTPUT);
  digitalWrite(pirPin, LOW);

 
  //Fase di calibrazione
  Serial.print("calibrating sensor ");
    for(int i = 0; i < calibrationTime; i++){
      Serial.print(".");
      delay(1000);
    
  Serial.println(" done");
    Serial.println("SENSOR ACTIVE");
    delay(50);
 }

  }
void loop(){
statepin = digitalRead (setpin);
if (statepin == LOW)
{
RTC.adjust(DateTime(__DATE__, __TIME__));
}
DateTime now = RTC.now();
sprintf(buffer1, "%02d:%02d:%02d", now.hour(), now.minute(), now.second());
lcd.setCursor(0,2);
lcd.print( buffer1 );
sprintf(buffer2, "%02d/%02d/%d", now.day(), now.month(), now.year());
lcd.setCursor(0,3);
lcd.print( buffer2 );
delay(1000);
  DHT.read11(dht_dpin);
lcd.setCursor(0,0);
lcd.print("Umidita': %");
lcd.setCursor(13,0);
lcd.print(DHT.humidity);
lcd.setCursor(0,1);
lcd.print("Temperatura: C");
lcd.setCursor(13,1);
lcd.print(DHT.temperature);
Serial.print("Current humidity = ");
Serial.print(DHT.humidity);
Serial.print("% ");
Serial.print("temperature = ");
Serial.print(DHT.temperature);
Serial.println("C ");
delay(800);
 
  if(digitalRead(pirPin) == HIGH){
lcd.setCursor(10,2);
lcd.print(" ALLARME 1");
 digitalWrite(ledPin, HIGH);   //Accendiamo il LED
digitalWrite(relePin, HIGH);
       if(lockLow){ 
 
         lockLow = false;           
         Serial.println("---");
         Serial.print("motion detected at ");
         Serial.print(millis()/1000);
         Serial.println(" sec");
         delay(50);
         }        
         takeLowTime = true;
       }
  if(digitalRead(pirPin1) == HIGH){
lcd.setCursor(10,3);
lcd.print(" ALLARME 2");
  digitalWrite(ledPin1, HIGH);   //Accendiamo il LED
digitalWrite(relePin, HIGH);
       if(lockLow){ 
 
         lockLow = false;           
         Serial.println("---");
         Serial.print("motion detected at ");
         Serial.print(millis()/1000);
         Serial.println(" sec");
         delay(50);
         }        
         takeLowTime = true;
       }
      // Questo IF permette di stabilire se non c'è più nessun movimento
     if(digitalRead(pirPin) == LOW){      
       digitalWrite(ledPin, LOW);  //Si spegne il LED
  lcd.setCursor(10,2);
lcd.print(" ");
if(digitalRead(pirPin1) == LOW){      
       digitalWrite(ledPin1, LOW);  //Si spegne il LED
digitalWrite(relePin, LOW);
  lcd.setCursor(10,3);
lcd.print(" ");
       if(takeLowTime){
        lowIn = millis();         
        takeLowTime = false;      
        }
 if(digitalRead(pirPin1) == LOW){      
       digitalWrite(ledPin1, LOW);  //Si spegne il LED
digitalWrite(relePin, LOW);
  lcd.setCursor(0,2);
lcd.print(" ");
       if(takeLowTime){
        lowIn = millis();         
        takeLowTime = false;      
        }
 
       if(!lockLow && millis() - lowIn > pause){ 
 
           lockLow = true;                       
           Serial.print("motion ended at ");      //output
           Serial.print((millis() - pause)/1000);
           Serial.println(" sec");
           delay(50);
           }
       }
  }
}
}
Ultima modifica: 3 Anni 11 Mesi fa da IZ3ZLU.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Antifurto semplice con Arduino 3 Anni 11 Mesi fa #1076

  • iz8ifl
  • Avatar di iz8ifl
  • OFFLINE
  • Amministratore
  • Messaggi: 522
  • Ringraziamenti ricevuti 108
  • Karma: 20
sempre al lavoro tu con il mondo di arduino :lol: :lol:

ciao Lanfranco i tuoi progetti con arduino sono sempre molto interessanti.
In effetti un progetto di questo tipo potrebbe aiutare qualcuno che come noi smanetta un po' con l'elettronica a proteggere la propria abitazione in piu ci sono altre letture interessanti che ogni giorno di solito si fanno.
Sarebbe bello includere un telecomando per attivarlo quando si esce di casa e disattivarlo quando si rientra magari utilizzando quei piccoli trasmettitori wireless o bluetooth.
Visto che ho qua un arduino nano potrei mettermi all'opera anche io ma mimancherebbero i sensori che dovrei reperire in giro. Peccato perchè all'ultima fiera che hanno fatto qua in zona c'era uno che vendeva di tutto per arduino e raspberry pi, non ne ho saputo approfittare e adesso mi tocca reperire su internet. Non ho fretta lo faro con calma.

saluti Salvatore
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Antifurto semplice con Arduino 3 Anni 11 Mesi fa #1077

  • IZ3ZLU
  • Avatar di IZ3ZLU
  • OFFLINE
  • Moderatore
  • Messaggi: 580
  • Ringraziamenti ricevuti 102
  • Karma: 44
Dai un occhio anche al mio topic su Nanino... è MOLTO interessante. in 20 minuti ho fatto un Arduino UNO.
Ciao
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
Tempo creazione pagina: 0.799 secondi
Powered by Forum Kunena
   
   
© PSKTRENTUNISTI ITALIAN CLUB (PIC)