giovedì 12 febbraio 2015

AllarmDuino 1.0 - Centrale di allarme antifurto

Ciao a tutti, volevo condividere con voi questo mio primo progetto, un po più complesso del solito per quanto mi riguarda, ma è sicuramente un buon inizio. Si tratta di una centrale di allarme antifurto che simpaticamente ho chiamato "AllarmDuino". E' una semplice centrale a una zona nel mio caso perché ho un solo PIR a disposizione, ma ovviamente espandibile, che si attiva o disattiva tramite un tag RFID, essa può memorizzare fino a tre tag più una chiave master.


*** AGGIORNAMENTO 1.1 ***
Oggi finalmente ho avuto un po di tempo libero a disposizione e ho approfittato per dedicarmi al progetto. In sostanza ho apportato delle modifiche al codice, suggerite anche da alcuni utenti, per renderlo ancora più funzionale ed affidabile. Ad esempio, a differenza della versione precedente, ho migliorato la gestione dei tempi di ingresso/uscita, sostituendo il “delay()” con la funzione “millis()”, e ho aggiunto la possibilità di scandire i secondi con un bip, usufruendo di un buzzer (funzione facoltativa). Inoltre grazie ad un relè è possibile comandare una normale sirena esterna autoalimentata al momento dell’allarme, e tramite codice si può anche impostare per quanto tempo deve suonare se l’allarme persiste.
Per questo aggiornamento consiglio l'utilizzo del display con l’ adattatore Serial I2C, che oltre a costare poco, serve a risparmiare alcuni pin che si possono sfruttare in seguito per aggiungere altri sensori.

Nota importante:
Prima di caricare il sorgente, bisogna inserire manualmente il codice DECIMALE della chiave che si vuole utilizzare come master. 
Per leggere il codice procedi in questo modo: 
1. Collega solo il lettore RFID come da schema.
2. Carica su Arduino lo sketch di esempio "cardRead" (si trova nella cartella examples della libreria RFIDRC522).
3. Apri il monitor seriale per ricevere l'output. 
4. Avvicina al lettore la chiave interessata.
5. Copia i cinque gruppi di cifre DEC che compongono il codice della chiave. 
6. Apri il sorgente e inseriscili nella parte iniziale dedicata alla chiave master.
7. Carica il sorgente e completa i collegamenti.

Materiale:
1. Arduino uno
1. Kit lettore RFID-RC522
1. Sensore PIR
1. Display LCD 16x2 con adattatore Serial I2C
1. Modulo relè
2. Led colorati
1. Pulsante
2. Resistenze da 220 ohm
1. Resistenza da 10 kohm


Software:



Schema:


Video dimostrativo:


63 commenti:

  1. salve vorrei provare il progetto ma c'è il codice?

    RispondiElimina
    Risposte
    1. Certo, lo trovi cliccando su "Source Code AllarmDuino 1.1". Ciao

      Elimina
    2. Questo commento è stato eliminato dall'autore.

      Elimina
  2. ciao io riesco a far leggere i miei tag come mai?
    li ho letti sia in hex sia in dec.

    RispondiElimina
    Risposte
    1. Ciao, dato che mi hai fornito poche informazioni, ti dico che la configurazione iniziale consiste solo nell'inserire il codice della propria card master nel sorgente prima di caricarlo. Fatto questo, una volta messo il tutto in funzione, potrai (avvicinando la card master) avere accesso alla funzione che memorizza i tuoi tag.

      Elimina
    2. Ciao e grazie della tua risposta, ho scaricato uno sketch per leggere le card sia in HEX che in DEC, ma non le riconosce nel tuo programma.
      Come hai rilevalo le chiavi dei tuoi tag?
      Una volta risolto i problemi con i tag volevo modificare questo programma aggiungendo un modulo gsm, cosi oltre che suonare mi chiami e mandi sms.
      Pensi sia fatibile?oppure meglio farlo uno da capo?

      Elimina
    3. Ciao Gionata, procedi in questo modo: carica lo sketch di esempio "cardRead" (lo trovi nella cartella examples della libreria RFIDRC522) e apri il monitor seriale per ricevere l'output. Avvicina al lettore la chiave che vorrai usare come master. A questo punto, come output, avrai il codice della chiave sia in decimale che esadecimale. Appuntati i cinque gruppi di cifre DEC. Ora apri il mio sketch e inseriscile nello stesso ordine nella parte iniziale dedicata alla chiave master. Fatto questo il tutto dovrebbe funzionare. Riguardo la modifica che vorresti apportare, ti dico che è senza dubbio fattibile, e senza stravolgere tanto il codice originale. Se possiedi una shield gsm con il SIM900 a bordo, prova a scaricare l'apposita libreria da questo sito http://www.gsmlib.org/index.html, è molto intuitiva e ha le funzioni di cui hai bisogno.

      Elimina
    4. Ciao grazie ora sono riuscito ad inserire la chiave master..... Era un mio errore.
      Ho modificato alcune cose ed aggiunto la funzione che se suona chiama 2 numeri da me impostati.
      Invece non è possibile inserire anche l'invio degli SMS,perché la memoria di arduino diventa piena e di conseguenza il progetto è instabile.
      Ora vorrei inserire la possibilità di disattivarlo tramite codice at ma ho qualche difficoltà...

      Elimina
    5. Questo commento è stato eliminato dall'autore.

      Elimina
  3. Ciao, voglio realizzare questo progetto su Arduino MEGA 2560 compatibile ma non so come configurarlo, all'avviarsi del sistema mi attiva il led ed il relè della sirena, premendo sul pulsante mi da il messaggio NESSUNA MEMORIA oppure esegue il reset e passando il tag o la card sul sensore non accade nulla. Come si configura? Grazie

    RispondiElimina
    Risposte
    1. Ciao, ho risolto, non avevo inserito correttamente il master key

      Elimina
    2. Ok Ismaele, se hai dubbi in futuro chiedi pure. Ciao

      Elimina
  4. Ciao volevo un aiuto.. avrei bisogno di aggiungere una linea h24 nel codice ma non sono riuscito.
    Uso arduino mega e non uno.
    La ringrazio

    RispondiElimina
  5. Ciao Gionata, prendendo lo sketch originale, se volessi far diventare il radar una linea h24, farei in questo modo:
    if (digitalRead(sensorePir1) == HIGH && statoAllarme == 0){
    zona=24;
    allarme();
    }
    Quindi un allarme istantaneo, indipendentemente dallo stato dell'antifurto, e senza tempo di ingresso. Non ho possibilità di testarlo ma in teoria dovrebbe essere così.

    RispondiElimina
  6. Ciao posso dire che l'ho provato e funziona perfettamente ti ringrazio.
    Ho aggiunto anche la funzione che chiama se la centrale e in allarme, ma l'inghippo più grande e che non ho trovato un modo per disattivarlo o attivarlo tramite SMS.
    Ma questo non è un problema del tuo progetto....
    Grazie ancora dell'aiuto che mi hai fornito.

    RispondiElimina
  7. Questo commento è stato eliminato dall'autore.

    RispondiElimina
  8. Salve volevo porre una domanda, ho provato in diversi metodi ma non riesco ad attivare e disattivare l'allarme con un messaggio.
    Non e possibile perché e presente RFID?
    Ho provato a dichiarare la funzione anche prima dell'RFID.

    RispondiElimina
  9. Questo commento è stato eliminato dall'autore.

    RispondiElimina
  10. ciao premetto che uso un mac e arduino uno,non riesco ad inserire la libreria del lettore schede, cioè ho messo la cartella all'interno di libraries,ma quando scrivo: include RFID rimane comunque in nero e non me lo prende come fa invece per la libreria del display ! non so se mi sono spiegato bene

    RispondiElimina
    Risposte
    1. "RFID.cpp" contiene caratteri non riconosciuti. Se il codice è stato creato con una versione
      precedente di Processing, potrebbe essere necessario usare Strumenti -> Correggi codifica e
      ricarica per aggiornare lo sketch alla codifica UTF-8. In alternativa è
      necessario cancellare i caratteri errati per eliminare questo avviso Mi scrive così

      Elimina
  11. Se volessi usare l' LCD senza adattatore ma diretteamente collegamdl cavo per cavo alle porte analogiche? Posso farlo senza dover modificare lo sketch?

    RispondiElimina
    Risposte
    1. Ciao Emanuele, il collegamento è possibile, ma dovresti comunque apportare alcune modifiche allo sketch. Ad esempio a differenza del adattatore I2C, dovrai importare la libreria standard "LiquidCrystal" che va inizializzata in maniera differente.

      Elimina
    2. Ciao, ho fatto tutto, un solo problema, ho bruciato l'adattore lcd ed ho preso il tuo sketch dove colleghi direttamente il display ai 5 pin analogici, ho seguito alla lettera il circuito su fritzing, adesso per lo sketch? Mi puoi dire come modificarlo o da dove prenderlo?
      E che libreria includere?
      Grazie mille, spero di risolvere al più presto ne ho davvero bisogno.
      Grazie.
      Vincenzo.

      Elimina
    3. Ciao, ho fatto tutto, un solo problema, ho bruciato l'adattore lcd ed ho preso il tuo sketch dove colleghi direttamente il display ai 5 pin analogici, ho seguito alla lettera il circuito su fritzing, adesso per lo sketch? Mi puoi dire come modificarlo o da dove prenderlo?
      E che libreria includere?
      Grazie mille, spero di risolvere al più presto ne ho davvero bisogno.
      Grazie.
      Vincenzo.

      Elimina
  12. ciao, dove posso trovare la libreria con relay, rfid reader ecc x arduino x fritzing? grazie in anticipo

    RispondiElimina
    Risposte
    1. Ciao Alessandro, questo è il link del relay https://github.com/rwaldron/fritzing-components
      questo per il lettore RFID https://github.com/miguelbalboa/rfid/tree/master/doc/fritzing

      Elimina
  13. ciao potresti dirmi come risolvere il mio problema ? l'errore è questo:"RFID.cpp" contiene caratteri non riconosciuti. Se il codice è stato creato con una versione
    precedente di Processing, potrebbe essere necessario usare Strumenti -> Correggi codifica e
    ricarica per aggiornare lo sketch alla codifica UTF-8. In alternativa è
    necessario cancellare i caratteri errati per eliminare questo avviso Mi scrive così

    RispondiElimina
    Risposte
    1. Ciao Luca, non avendo idea del problema, ho dato un occhiata in rete e ho trovato questo topic che potrebbe fare al caso tuo: https://github.com/MagoKimbra/MarlinKimbra/issues/24

      Elimina
    2. grazie mille ho risolto e un'altra cosa io se metto il codice in DEC nella prima parte del programma, non riesco a usare la card bianca cosa sbaglio?

      Elimina
    3. Ciao Luca, in cima alla pagina ho aggiunto la procedura per inserire nel sorgente il codice della propria card master.

      Elimina
  14. salve go provato il progetto ,complimenti veramente,mi potrebbe dire che tipo di buzzer lei ha usato ?se si sente abbastanza e se ha usato un amplificatore o un transistor per aumentare il suone del buzzer?

    RispondiElimina
    Risposte
    1. Ciao Fabrizio, se ti riferisci al video dimostrativo, ho utilizzato un normale buzzer a 5v acquistato su ebay, l'ho collegato semplicemente al GND e al pin dedicato di Arduino. Nel mio caso il suono è udibile in tutto l'appartamento, poi dipende da quale distanza vorresti sentirlo.

      Elimina
    2. Ho provato col il suo stesso buzzer ma suona continuamente

      Elimina
  15. Salve! avrei bisogno di un aiuto per andare avanti, allora il lettore mi legge la chiave e compare questo codice: F2217D6FC1
    vorrei capire dove e come inserire questa lettura nel codice sorgente, sono poco esperto di questo quindi se mi viene spiegato meglio forse ci capisco un po di più.
    Mi scuso e vorrei una risposta a breve possibilmente, grazie mille

    RispondiElimina
    Risposte
    1. oltretutto mi compare anche questo codice con la stessa chiava: 220403A
      aspetto risposta

      Elimina
    2. Devi convertire il codice esadecimale in decimale.
      quindi Il tuo F2217D6FC1 = 242 33 125 111 193
      Lo vai ad inserire nel programma dove trovi:
      // ***IMPORTANTE*** Inserire il codice della propria chiave master.
      #define masnum0 242
      #define masnum1 33
      #define masnum2 125
      #define masnum3 111
      #define masnum4 193

      Elimina
  16. ciaoo vorrei sapere il perchè nel verificare la programmazione mi dice che c'è un errore durante la compilazione, ho preso la programmazione che c'è in alto nel sito

    RispondiElimina
  17. Posso avere lo scketch, mi serve urgente, puoi mandarmelo, ti ringrazio tanto.

    RispondiElimina
  18. Mark per favore rispondimi, ho risolto il problema trovando il tuo sketch senza adattatore, ho un problema con la card, passo la card legge la card master poi mi da gestione chiavi chiavi master:0
    E poi me la da annullata, come devo fare?

    RispondiElimina
  19. Mark per favore rispondimi, ho risolto il problema trovando il tuo sketch senza adattatore, ho un problema con la card, passo la card legge la card master poi mi da gestione chiavi chiavi master:0
    E poi me la da annullata, come devo fare?

    RispondiElimina
  20. Ci sono riusito per la CARTA, non avendo l' adatattore per il display vorrei utilizzare la programmazione di quella con l'adattatore perché è migliore e mi offre il tempo di entrata ed uscita per il garage, come devo modificare???

    RispondiElimina
    Risposte
    1. Ciao Vincenzo, in questo link troverai l'archivio con lo sketch e lo schema di collegamento senza il convertitore I2C.
      Scusami se non ho potuto aiutarti subito ultimamente sono molto impegnato.
      https://drive.google.com/open?id=0Bz55lHJwklQSaDNUSFU0TjlPQkk

      Elimina
  21. Come è possibile parlare un attimo con te in modo che ti mando le foto e mi aiuti un attimo ti prego, mi serve entro stasera devo istallarlo dove posso contattati faceBook? Email? Whatsapp? In modo che ti mandò un video e vedi se puoi aiutarmi.grazie!

    RispondiElimina
  22. Come è possibile parlare un attimo con te in modo che ti mando le foto e mi aiuti un attimo ti prego, mi serve entro stasera devo istallarlo dove posso contattati faceBook? Email? Whatsapp? In modo che ti mandò un video e vedi se puoi aiutarmi.grazie!

    RispondiElimina
  23. Mi puoi rispondere per favore è urgente.

    RispondiElimina
  24. Questo commento è stato eliminato dall'autore.

    RispondiElimina
  25. Ciao,bel progetto,complimenti!Una domanda:a cosa serve il relay?Grazie

    RispondiElimina
  26. Questo commento è stato eliminato dall'autore.

    RispondiElimina
  27. Ciao, mi esce questo errore cosa devo fare??

    no matching function for call to 'LiquidCrystal_I2C::begin()

    RispondiElimina
  28. Ma cosa va collegato all'uscita del relè

    RispondiElimina
  29. Ciao a tutti e complimenti per questo bel progetto. Posso farvi una domanda: assemblo tutto e fino a ieri tutto funziona alla perfezione, stamattina il rfid reader non legge più niente, cosa può essere successo ? La scheda è alimentata con un alimentatore 12v e tutto il resto (pir e display) funzionano correttamente. Grazie

    RispondiElimina
  30. ciao sto usando un integrato mcp23017 per risparmiare pin su arduino uno come lo integro nello sketch

    RispondiElimina
  31. Buongiorno Mark,
    Complimenti per il progetto, molto bello e funzionale.
    Lo sto usando per il mio garage dove purtroppo non ho possibilità di connessione internet e quindi ho pensato di integrare un modulo gsm sim800l che faccia partire in caso di allarme semplici chiamate a 3 diversi numeri di cellulare, anche perché il garage è distante da casa.
    Potresti indicarmi gentilmente come dovrei procedere x integrare i comandi nello sketch?
    Saresti davvero di grande aiuto!!
    Grazie.
    Alessandro.

    RispondiElimina
  32. Ciao, se volessi usare lo sketch e i collegamenti con arduino MEGA devo cambiare qualcosa? le librerie sono compatibili con il MEGA ATMEGA 2560?

    Grazie!

    RispondiElimina
  33. CIAO! ma come è possibile contattare MARK87 per avere un aiuto per una modifica?

    RispondiElimina
  34. Ciao, non riesco a visualizzare tutto il messaggio sul display,ho caricato il tuo programma ma vedo solo la prima lettere di ogni comando

    RispondiElimina
  35. Ciao Mark,vorrei sapere se è possibile implementare anche un Keypad 4x4.
    Io uno Arduino Mega
    Ti lascio il link del progetto qui sotto e se riesci ti chiedo la cortesia se riesci già tu a implementare il codice con il keypad oppure me lo dici che lo faccio io.
    Grazie mille
    https://drive.google.com/open?id=1IaC1vDWhH8hVp-1qMEDzwEy0DKB0Wn8N

    RispondiElimina
  36. salve a tutti, il mio funziona non capisco perchè suona solo una volta anche se rileva il pir si accende il led giallo però non suona più è normale ciao nicola

    RispondiElimina