CamperOnLine
  • Camper
    • Camper usati
    • Camper nuovi
    • Produttori
    • Listino
    • Cataloghi
    • Concessionari e rete vendita
    • Noleggio
    • Van
    • Caravan
    • Fiere
    • Rimessaggi
    • Le prove di CamperOnLine
    • Provati da voi
    • Primo acquisto
    • Area professionisti
  • Accessori
    • Accessori e Prodotti
    • Camping Sport Magenta accessori
    • Produttori
    • Antenne TV
    • Ammortizzatori
    • GPS
    • Pneumatici
    • Rimorchi
    • Provati da Voi
    • Fai da te
  • Viaggi
    • Diari di viaggi in camper
    • Eventi
    • Foto
    • Check list
    • Traghetti
    • Trasporti
  • Sosta
    • Cerca Strutture
    • Sosta
    • Aree sosta camper
    • Campeggi
    • Agriturismi con sosta camper
    • App Camperonline App
    • 10 Consigli utili per la sosta
    • Area strutture
  • Forum
    • Tutti i Forum
    • Sosta
    • Gruppi
    • Compagni
    • Italia
    • Estero
    • Marchi
    • Meccanica
    • Cellula
    • Accessori
    • Eventi
    • Leggi
    • Comportamenti
    • Disabili
    • In camper per
    • Altro Camper
    • Altro
    • Extra
    • FAQ
    • Regolamento
    • Attivi
    • Preferiti
    • Cerca
  • Community
    • COL
    • CamperOnFest
    • Convenzioni Convenzioni
    • Amici
    • Furti
    • Informativa Privacy
    • Lavoro
  • COL
    • News
    • Newsletter
    • Pubblicità
    • Contatto
    • Ora
    • RSS RSS
    • Video
    • Facebook
    • Instagram
  • Magazine
  • Italiano
    • Bienvenue
    • Welcome
    • Willkommen
  • Accedi
CamperOnLine
Camping Sport Magenta
  1. Forum
  2. Tecnica
  3. Accessori
Galleria

Allarme con Arduino stepbystep per duri come me...

Nuovo
Cerca
SostaGruppiCompagniItaliaEsteroMarchiMeccanicaCellulaAccessoriEventiLeggiComportamentiDisabiliIn camper perAltro CamperAltroExtra
1 20 8
12
georgatosat
georgatosat
14/05/2013 214
Inserito il 12/02/2015 alle: 21:05:05
Salve, è da un po' che cerco di cimentarmi in questa avventura grazie anche ai preziosi post su questo forum di camperos e gelax, ma nonostante i numerosi tentativi non riesco a venirne fuori...la difficolta maggiore visto che mi mancano le basi è il dover partire da progetti già avanzati, in compilazione mi da un saccco di errori e non ne vengo fuori...ecco quindi la mia idea di partire da zero nello sviluppo di un allarme che spero col tempo riesca a diventare "avanzato"! partiamo proprio dall'inizio: ho momentaneamente collegato arduino mega ad un display a due righe i2c e ho provato questo sketch per verificarne il funzionamento:
">
id="quote"> Questa per me è stata la base di partenza, una sorta di "messaggio all'accensione"... Adesso ho aggiunto un lettore rfid, questo è lo stato attuale del mio step: Ora bisogna integrare lo sketch per poterlo fare interagire, visto che ci siamo aggiungerei anche tre led per vedere lo stato ed un contatto magnetico ma qui dovete aiutarmi nei collegamenti... Spero che anche ad altri "duri" come me seguino questo post in modo da realizzare un bel progetto comune... Post in aggiornamento MATERIALE UTILIZZATO: Arduino mega 2650 ( http://store.arduino.cc/product/A000067?language=it ) Lettore rfid RCC ( http://www.miniinthebox.com/it/rfid-rc522-rf-ic-card-sensor-module-blu-argento_p617739.html) Display lcd i2c ( http://www.miniinthebox.com/it/arduino-iic-i2c-twi-1602-di-serie-modulo-display-lcd_p508937.html ) Breadboard ( http://www.miniinthebox.com/it/bread-board-830-point-solderless-breadboard-201211270080069_p478904.html )

Modificato da georgatosat il 12/02/2015 alle 21:11:56
15
macrocd
macrocd
19/01/2010 228
Inserito il 13/02/2015 alle: 20:18:41
Ciao, Gli Rfid sono memorie che contengo alcuni Byte nel tuo caso credo si tratti di 4 byte. devi quindi creare un codice che sia in grado di leggere la porta interessata di solito di tipo seriale e interpretare i dati letti. inizia da questo link: [url] http://ismanettoneblog.altervista.org/blog/lezione-11-come-utilizzare-rfid-reader-per-carte-magnetiche/ M.
12
georgatosat
georgatosat
14/05/2013 214
Inserito il 13/02/2015 alle: 21:03:39
quote:Risposta al messaggio di macrocd inserito in data 13/02/2015  20:18:41 (

Visualizza messaggio in nuova finestra

)
>
> Grazie Macrocd per il tuo interessamento, avevo già visto quel link ed ho anche già iniziato a giocarci... ho già letto i 4 byte identificativi dei due tag e della mastercard, non riesco però a compilare lo sketch in modo da gestire l'inserimento e il disinserimento dell'allarme, come base di partenza sto seguendo questo esempio:

https://www.youtube.com/watch?v...

Sono giorni che cerco di modificare il suo sketch per vedere di adattarlo al mio Hardware, ma non ne vengo fuori....
15
macrocd
macrocd
19/01/2010 228
Inserito il 13/02/2015 alle: 22:39:21
...anche io sto affrontando un progetto ambizioso con arduino... e ho diversi problemi in primis il tempo... affronta riga per riga confrontando il tuo sketch con quello del link. poi se vuoi lo vediamo ..
12
georgatosat
georgatosat
14/05/2013 214
Inserito il 13/02/2015 alle: 22:58:40
Attualmente sto lavorando su questo sketch e sembra compilarlo correttamente, l'unico problema è come inserire i 4 byte hex della mia carta, visto che in questo sketch chiede 5 numeri credo decimali: // Codice della mia chiave master da sostituire con il vostro. #define masnum0 70 #define masnum1 43 #define masnum2 191 #define masnum3 180 #define masnum4 102
quote:/** * Centrale antifurto costruita con Arduino. Materiali: * Arduino Mega, lettore RFID RC522, contatto magnetico, 3 led colorati, * un pulsante, un modulo relè. * Importante, collegare il lettore RFID ai pin di Arduino come segue: * MOSI: Pin 51 / ICSP-4 * MISO: Pin 50 / ICSP-1 * SCK: Pin 52 / ISCP-3 * SDA: Pin 53 * RST: Pin 5 */ #include <SPI.h> #include <RFID.h> #include <EEPROM.h> #include <Wire.h> #include <LiquidCrystal_I2C.h> #define SS_PIN 5 #define RST_PIN 53 // Codice della mia chiave master da sostituire con il vostro. #define masnum0 70 #define masnum1 43 #define masnum2 191 #define masnum3 180 #define masnum4 102 #define sensorePir1 5 // Ingresso sensore 1 #define releSirena 7 // A questo pin si può collegare ad esempio un relè che comanda una sirena esterna autoalimentata #define ledRosso 15 // E' il led che indica lo stato della centrale #define ledGiallo 14 // E' il led che indica lo stato del sensore 1 #define resetKey 6 // pulsante di reset e visualizzazione memoria di allarme #define dispositivo1 3 // Uscita dispositivo 1 #define pausa 5000 // Costante che definisce il tempo di ingresso, in questo caso 5 secondi. Il tempo di uscita è possibile modificarlo qualche istruzione più in fondo. RFID rfid(SS_PIN, RST_PIN); LiquidCrystal_I2C lcd(0x27,16,2); String readString = String(30); boolean statoAntifurto = 0; // Variabile antifurto attivo boolean statoAllarme = 0; // Variabile centrale in allarme boolean statoPir1 = 0; // Variabile di stato del sensore 1 boolean statoDispositivo1 = 0; // Variabile di stato on/off del dispositivo boolean cardMaster = 0; // Variabile modalità chiave master boolean memoriaAllarme = 0; // Variabile per gestire la memoria di allarme boolean tastoPremuto = 0; // Variabile che controlla la pressione prolungata del tasto reset int slave; // Contatore di chiavi salvate int lamp; // Variabile per il lampeggio nel tempo di uscita int sernum0; int sernum1; int sernum2; int sernum3; int sernum4; void setup() { lcd.begin(); SPI.begin(); rfid.init(); Serial.begin(9600); pinMode(ledRosso, OUTPUT); pinMode(releSirena, OUTPUT); pinMode(ledGiallo, OUTPUT); pinMode(dispositivo1, OUTPUT); pinMode(sensorePir1,INPUT); pinMode(resetKey, INPUT); digitalWrite(ledRosso, LOW); digitalWrite(ledGiallo, LOW); digitalWrite(dispositivo1, HIGH); standby(); } void loop() { // Inizio blocco per la gestione locale della centrale // Rileva un tag... if (rfid.isCard()) { // Legge il seriale... if (rfid.readCardSerial()) { sernum0 = rfid.serNum[0]; sernum1 = rfid.serNum[1]; sernum2 = rfid.serNum[2]; sernum3 = rfid.serNum[3]; sernum4 = rfid.serNum[4]; slave = EEPROM.read(0); // Se il seriale letto corrisponde con il seriale Master // attiva o disattiva la modalita Memorizzazione chiavi // e in più visualizza il numero di chiavi salvate... if (sernum0 == masnum0 && sernum1 == masnum1 && sernum2 == masnum2 && sernum3 == masnum3 && sernum4 == masnum4) { if (statoAntifurto == 0) { lcd.backlight(); if (cardMaster==0) { lcd.clear(); lcd.print("CARD MASTER"); delay(2000); lcd.clear(); lcd.print("GESTIONE CHIAVI"); cardMaster = 1; lcd.setCursor(0, 1); lcd.print("Chiavi slave: "); lcd.setCursor(15, 1); lcd.print(slave); delay(3000); } else { cardMaster = 0; lcd.setCursor(0, 1); lcd.print("Annullata "); delay(3000); standby(); } } } // Se invece il seriale letto corrisponde con uno dei tre gruppi // di chiavi memorizzate allora attiva o disattiva l'allarme. else if ((sernum0 == EEPROM.read(1) && sernum1 == EEPROM.read(2) && sernum2 == EEPROM.read(3) && sernum3 == EEPROM.read(4) && sernum4 == EEPROM.read(5)) || (sernum0 == EEPROM.read(6) && sernum1 == EEPROM.read(7) && sernum2 == EEPROM.read(8) && sernum3 == EEPROM.read(9) && sernum4 == EEPROM.read(10)) || (sernum0 == EEPROM.read(11) && sernum1 == EEPROM.read(12) && sernum2 == EEPROM.read(13) && sernum3 == EEPROM.read(14) && sernum4 == EEPROM.read(15))) { lcd.backlight(); if (cardMaster==0) { if (statoAntifurto == 0) { statoAntifurto = 1; lcd.clear(); lcd.print("CHIAVE VALIDA"); delay(2000); lcd.clear(); lcd.print("TEMPO DI USCITA"); lamp=1; for (lamp; lamp <= 10; lamp++) { //Sostituire il 10 con il numero di secondi che si desidera per il tempo di uscita. digitalWrite(ledRosso, HIGH); delay(500); digitalWrite(ledRosso, LOW); delay(500); } attiva(); } else { statoAntifurto = 0; statoAllarme = 0; lcd.clear(); lcd.print("CHIAVE VALIDA"); delay(2000); disattiva(); } } } // Se il seriale letto è diverso dal master e nemmeno presente in memoria, // e se è attiva la modalita Memorizzazione chiavi, salva il seriale in memoria // come slave1, slave2 o slave3. else if (cardMaster == 1 && slave == 0) { lcd.clear(); lcd.print("Chiave rilevata!"); EEPROM.write(0, 1); EEPROM.write(1, sernum0); EEPROM.write(2, sernum1); EEPROM.write(3, sernum2); EEPROM.write(4, sernum3); EEPROM.write(5, sernum4); cardMaster = 0; delay(1000); lcd.setCursor(0, 1); lcd.print("Slave 1 salvata!"); delay(3000); standby(); } else if (cardMaster == 1 && slave == 1) { lcd.clear(); lcd.print("Chiave rilevata!"); EEPROM.write(0, 2); EEPROM.write(6, sernum0); EEPROM.write(7, sernum1); EEPROM.write(8, sernum2); EEPROM.write(9, sernum3); EEPROM.write(10, sernum4); cardMaster = 0; delay(1000); lcd.setCursor(0, 1); lcd.print("Slave 2 salvata!"); delay(3000); standby(); } else if (cardMaster == 1 && slave == 2) { lcd.clear(); lcd.print("Chiave rilevata!"); EEPROM.write(0, 3); EEPROM.write(11, sernum0); EEPROM.write(12, sernum1); EEPROM.write(13, sernum2); EEPROM.write(14, sernum3); EEPROM.write(15, sernum4); cardMaster = 0; lcd.setCursor(0, 1); lcd.print("Slave 3 salvata!"); delay(3000); standby(); } } } rfid.halt(); // Se l'infrarosso rileva un movimento accende il led giallo if (digitalRead(sensorePir1) == HIGH) { digitalWrite(ledGiallo, HIGH); statoPir1=1; } else { digitalWrite(ledGiallo, LOW); statoPir1=0; } // Se l'infrarosso rileva un movimento e l'antifurto e attivo // e quindi non in allarme, attiva l'allarme e memorizza la zona corrispondente. if (digitalRead(sensorePir1) == HIGH && statoAntifurto == 1 && statoAllarme == 0){ allarme(); if (memoriaAllarme == 0) { memoriaAllarme = 1; EEPROM.write(16, 1); // Con questa istruzione salva la zona numero 1 in memoria, } } // Se è stata attivata con la card Master la modalità "Memorizzazione chiavi", // premendo il pulsante di reset si azzera il database // delle chiavi salvate fino a quel momento. if (digitalRead(resetKey) == HIGH && cardMaster == 1) { cardMaster = 0; for (int i=0; i<16; i++){ EEPROM.write(i, 0); } lcd.backlight(); lcd.clear(); lcd.print("Reset chiavi..."); delay(3000); standby(); } // Se si preme il tasto reset mentre la centrale e in standby si potrà visualizzare l'ultima memoria di allarme // se si mantiene premuto invece si effettua un reset if (digitalRead(resetKey) == HIGH && statoAntifurto == 0) { tastoPremuto=1; delay(1000); if (digitalRead(resetKey) == HIGH && statoAntifurto == 0 && tastoPremuto == 1) { tastoPremuto=0; EEPROM.write(16, 0); lcd.backlight(); lcd.clear(); lcd.print("Memoria Allarme:"); lcd.setCursor(0, 1); lcd.print("Reset"); delay(3000); standby(); } else { tastoPremuto=0; lcd.backlight(); lcd.clear(); lcd.print("Memoria Allarme:"); lcd.setCursor(0, 1); if (EEPROM.read(16) > 0) { lcd.print("Zona "); lcd.setCursor(5, 1); lcd.print(EEPROM.read(16)); } else { lcd.print("Nessuna Memoria"); } delay(3000); standby(); } } } void standby() { lcd.clear(); lcd.print("AllarmDuino 2.0"); delay(1000); lcd.noBacklight(); } void allarme() { delay(pausa); statoAllarme = 1; digitalWrite(releSirena,HIGH); lcd.backlight(); lcd.clear(); lcd.print(" ALLARME! "); delay(1000); lcd.noBacklight(); } void attiva() { statoAntifurto=1; digitalWrite(ledRosso, HIGH); lcd.backlight(); lcd.clear(); lcd.print(" ANTIFURTO "); lcd.setCursor(0, 1); lcd.print(" ATTIVO "); delay(1000); lcd.noBacklight(); } void disattiva() { statoAntifurto=0; statoAllarme=0; memoriaAllarme = 0; digitalWrite(ledRosso, LOW); digitalWrite(releSirena, LOW); lcd.backlight(); lcd.clear(); lcd.print(" ANTIFURTO "); lcd.setCursor(0, 1); lcd.print(" DISATTIVO "); delay(2000); standby(); }>
>

Modificato da georgatosat il 13/02/2015 alle 23:03:33
Slovenia, Friuli, Trentino e Veneto
Slovenia, Friuli, Trentino e Veneto
Ponte del 1° Maggio 2009: Puglia in cam
Ponte del 1° Maggio 2009: Puglia in cam
Estete 2008: le Falesie di Etretat in ca
Estete 2008: le Falesie di Etretat in ca
Dal Piemonte al Baltico passando per Bre
Dal Piemonte al Baltico passando per Bre
Viaggio in Croazia, Bosnia-Erzegovina e
Viaggio in Croazia, Bosnia-Erzegovina e
Previous Next
15
macrocd
macrocd
19/01/2010 228
Inserito il 13/02/2015 alle: 23:35:16
prendi un'altro sketch dove riesci a leggere i numeri di carta ad esempio nella cartella delle librerie rfid. leggi la tua carta master e sostituisci il codice letto in : #define masnumXX capisci cosa leggi in seriale e in che formato. vai su calcolatrice di windows, visualizza programmatore e traduci da dec a Hex o viceversa.
12
georgatosat
georgatosat
14/05/2013 214
Inserito il 14/02/2015 alle: 00:03:48
quote:Risposta al messaggio di macrocd inserito in data 13/02/2015  23:35:16 (Visualizza messaggio in nuova finestra)>
> Ho gia letto i numeri della carta, quindi per un ipotetico A1B2C3D4 dovrei mettere cosi?: #define masnum A1B2C3D4 oppure cosi?: #define masnum0 A1 #define masnum1 B2 #define masnum2 C3 #define masnum3 D4
15
macrocd
macrocd
19/01/2010 228
Inserito il 14/02/2015 alle: 08:53:05
Io scriverei: A1 hex = 161 dec B2 hex = 178 dec quindi #define masnum0 161; #define masnum1 178; ecc... perchè un byte in esadecimale ha solo 2 cifre quindi suppongo che sono letti in decimale. M.
14
gelax
gelax
28/11/2010 267
Inserito il 25/05/2015 alle: 22:37:06
In ritardo.... avrai già risolto ...;-)
Guarda se questo semplice codice ti può essere di aiuto...


/*  Connessione RFID
* Pin layout should be as follows (on Arduino Uno):
* MOSI: Pin 11 / ICSP-4
* MISO: Pin 12 / ICSP-1
* SCK: Pin 13 / ISCP-3
* SS: Pin 10
* RST: Pin 9
* VCC 3,3
* GND
Serial DEC 131 253 59 170 239   HEX 83 FD 3B AA EF  Chiave
Serial DEC 149 166 13 214 232   HEX 95 A6 D D6 E8  Tessara

*/

#include
#define RST_PIN 9
#define SS_PIN 10
RFID rfid(SS_PIN, RST_PIN);
int serNum0;
int serNum1;
int serNum2;
int serNum3;
int serNum4;
int carta1[5] = { 131, 253, 59, 170, 239 };
int cartaOK = 0;
int cartaNOK = 0;

void setup() {
}

void loop() {
if (rfid.isCard()) {
    if (rfid.readCardSerial()) {
      if (rfid.serNum[0] == carta1[0] && rfid.serNum[1] == carta1[1] && rfid.serNum[2] == carta1[2] && rfid.serNum[3] == carta1[3] && rfid.serNum[4] == carta1[4])
      {
        cartaOK = 1;
      } else {
        cartaNOK = 1;
      }
    }
  }


  if (cartaOK == 1) {

     // Inserisci qui il codice da eseguire se la carta è riconosciuta
    }
 if (cartaNOK == 1) {
      Serial.println("Errore Carta");
      TonoNOK();
 // Inserisci qui il codice da eseguire in caso di errore
    }

    cartaOK = 0;
    cartaNOK = 0;
    rfid.halt();
    delay(500);
  }

Modificato da gelax il 25/05/2015 alle 22:57:11
SostaGruppiCompagniItaliaEsteroMarchiMeccanicaCellulaAccessoriEventiLeggiComportamentiDisabiliIn camper perAltro CamperAltroExtra

Come-scegliere-il-camper
2
152K Facebook
340K Instagram
42.2K TikTok
69,6K Youtube
CamperOnLine - Copyright © 1998-2025 - P.Iva 06953990014
Informativa privacy
Loading...

Accedi

Recupera Password
Nuovo utente

Vuoi eliminare il messaggio?

Sottoscrizione

Anteprima

PREFERENZA

Il messaggio è in fase di inserimento.

loading

CamperOnLine

Buongiorno gentile utente,

da oltre 20 anni Camperonline offre gratuitamente tutti i suoi servizi
grazie agli inserzionisti che ci hanno dato la loro fiducia, permettici di continuare il nostro lavoro disattivando il blocco delle pubblicità.

Grazie della collaborazione.

Azione eseguita con successo

Azione Fallita

Condividi

Condividi questa pagina con:

O copia il link