Progetto controllo rfid con credito

Buongiorno a tutti,
vorrei creare una specie di controllo accessi. Volevo capire se è fattibile con Arduino e che dispositivi dovrei acquistare per provare a creare il software.

Provo a spiegare cosa vorrei creare.
Con un lettore rfid vado a leggere una tessera. La tessera se viene riconosciuta dovrà poi attivarmi un relè per un certo tempo.
Alle tessere verrà precaricato un credito che poi verrà scalato man mano che la tessera verrà letta.
Il credito residuo deve essere visualizzato su un display, ipotizziamo un lcd.

Volevo capire in che modo Arduino potrebbe salvare il credito residuo di ogni tessera e poi come poterlo resettare, dato che la memoria del dispositivo supporta un certo numero di letture-scritture. E' possibile usare una scheda sd oppure bisogna creare un server per esempio con un raspberry ?
Grazie per gli eventuali chiarimenti.

Dipende da quante tessere sono e la frequenza del passaggio tessere, ogni cella EEPROM garantisce sicuramente 100.000 scritture quinti potresti anche usare la EEPROm interna se la frequenza di carico/scarico credito non è così elevata da raggiungere tale limite in tempi brevi (tralasciando tutte le tecniche descritte dal produttore per gestire al meglio la EEPROM e prolungarne la vita), ovvio che se passi alla SD tale limite viene superato e un semplice cambio di SD in caso di rotture risolverebbe il problema (tralasciando che se non hai fatto il backup dei crediti i clienti non saranno felici).
La procedura potrebbe prevedere una cartd "master" che se passata fa andare il sistema in modalità ricarica, a questo punto passi la tessera da caricare e ... Come prevedi di indicare il credito da caricare?
La gestione del relé e dell'mcd con arduino è banale quindi non c'è molto da dire sicuramente potrai sfruttarlo per gestire il progetto.
Se poi puoi collegare in qualche modo (Seriale o simile) Arduino con un Raspberry puoi spsotare la logica carico/scarico su Raspberry con un interfaccia web magari e demandare ad Arduino la sola visualizzazione credito, gestiore rilevazione card e gestione relé.
La vera domanda è, è un progetto a scopo di studio o pensi di impiegarlo in un dispositivo reale? Perché se pensi di usarlo sul campo allora è bene tenere a mente che ne Arduino ne Raspberry hanno le necessarie certificazioni per il loro uso in ambito civile/industriale quindi dovresti crearti una scheda basata sulla MCU con tutte le certificazioni del caso

... ricordo male io o ci sono carte RFID con una parte "programmabile" (protetta da password)? In tal caso il credito potrebbe essere memorizzato direttamente sulla carta.

Vantaggio, NON serve memoria locale per il credito. :slight_smile:
Svantaggio, se il cliente si perde la carta perde anche il credito e ... non so se sarebbe contento. ::slight_smile:

Guglielmo

Grazie ad entrambi per le risposte rapidissime. Il sistema in futuro dovrebbe andare in campo però per il momento interessa studiarne là fattibilità. Avevo pensato pure io alle schede riscrivibili. In modo da poter scalare il credito direttamente dalla tessera, ma non ho ancora trovato alcun esempio di codice e tipo di scheda da acquistare.

La perdita della tessera ci può anche stare nel senso che la tessera per esempio viene data ad un cliente x un basso prezzo dove all’ interno sono presenti 10 crediti per esempio. Ogni attivazione del rele mi farà diminuire il credito finché la tessera dovrà essere restituita è sostituita con una carica.

Questo per semplificare il tutto.

Hai già studiato QUESTA libreria ?

Guglielmo

Si ho già guardato ma non trovo esempi simili dove si va a scrivere sulla tessera delle variabili.

A me interessava capire se con arduino, delle tessere mifare riscrivibili posso creare il sistema e magari come suggerito con una tessera master poter ricaricare le tessere con il credito esaurito.

Se mi confermate che con solo arduino,lettore mfrc522,display ed un relè riesco a creare il tutto inizio a buttar giù qualcosa.

Grazie ancora.

Certo che puoi!

nicola_t:
Se mi confermate che con solo arduino,lettore mfrc522,display ed un relè riesco a creare il tutto inizio a buttar giù qualcosa.

Grazie ancora.

Io aggiungerei anche una tastiera per indicare l'importo del credito da ricaricare a meno che non sia un valore fisso

gpb01:
... ricordo male io o ci sono carte RFID con una parte "programmabile" (protetta da password)? In tal caso il credito potrebbe essere memorizzato direttamente sulla carta.

Vantaggio, NON serve memoria locale per il credito. :slight_smile:
Svantaggio, se il cliente si perde la carta perde anche il credito e ... non so se sarebbe contento. ::slight_smile:

Aggiungo un altro svantaggio: se il cliente è "smart" si legge la memoria della card e si auto-ricarica. :slight_smile:

No, no, il credito deve stare sempre sul sistema centrale, la card deve essere solo un identificativo.

Quindi se parliamo di un sistemino completamente autonomo (quindi escludiamo connessioni ad un server centrale) la soluzione con scheda SD è la migliore, secondo me, perché permette anche di spegnere il dispositivo, estrarre la card, e modificare i valori per poi rimetterla dentro. Sulla SD magari metterei anche un file con il log delle transazioni effettuate, per ricostruire i movimenti.

Inoltre suggerirei anche di implementare una interfaccia testuale lato seriale, ossia se collego alla USB un PC con un terminale seriale, posso anche vedere menu e dare comandi, senza spegnere né estrarre la SD.

I tag Mifare supportano l'autenticazione con chiavi crittografiche, per cui si possono proteggere in modo che l'utente non possa metterci mano.

(E sì, prima che lo chiediate, la cifratura è già stata forzata.)

docdoc:
Aggiungo un altro svantaggio: se il cliente è "smart" si legge la memoria della card e si auto-ricarica. :slight_smile:

docdoc ... leggi sempre cose in fretta e a metà ... ::slight_smile:

gpb01:
... ricordo male io o ci sono carte RFID con una parte "programmabile" (protetta da password)?

Guglielmo

Edit: SukkoPera mi ha anticipato ... :smiley:

SukkoPera:
I tag Mifare supportano l'autenticazione con chiavi crittografiche, per cui si possono proteggere in modo che l'utente non possa metterci mano.

Si, ma implementare cifrature su Arduino mi pare un filino esagerato... :wink:

Poi tutto dipende ovviamente dai requisiti (come insegna la Risk Analysis) ossia in una determinata vulnerabilità qual è il danno in rapporto alla probabilità dell'evento ed al costo per mitigarlo.

In questo caso penso che sia qualcosa di relativamente semplice e debba essere di basso costo, quindi basta sfruttare il tag standard come identificativo dell'account e in base a questo determinare il credito, e quindi scalare l'importo (o ricaricare), tenendo i dati nella SD onboard.

gpb01:
docdoc ... leggi sempre cose in fretta e a metà ... ::slight_smile:

No, avevo letto, ma ora (leggi sopra la mia risposta a Sukkopera) mi sono spiegato meglio... :wink:

Aggiungo, sempre per precisare: si, il contenuto sarà pure cifrato all'interno, ma se si può leggere usando una password e non con un certificato, la vulnerabilità è nella password: se metto "12345" è il codice che uso nella mia valigetta (vediamo chi coglie la citazione :wink: ).

Sono d'accordo con docdoc sia per la parte tecnica ma sopratutto per la parte pratica di fidelizzazione del cliente, d'accordo che se perde la tessera non è che può imputare chissà cosa se è stato correttamente avvisato ma potergli dire ok il costo della nuova tessera è 5 € ma il tuo credito di 35 € non lo perdi ci si fa sempre una figura migliore.
Chiaro che le due cose potrebbero viaggiare assieme, ovvero tag con area protetta da password e log su sd garantirebbe comunque la possibilità di determinare il credito residuo anche in assenza della tessera, nondimeno analizzando i movimenti si può sgamare l'utente "smart" che a fronte di una ricarica da 20 € usa servizi per 3000 € (e chi come me aveva un certo ericcson con vodafone sa di cosa parlo :slight_smile: ) e lo si blocca ma a questo punto da aggegio autonomo sta diventando un gestionale :slight_smile:

docdoc:
Si, ma implementare cifrature su Arduino mi pare un filino esagerato... :wink:

La cifratura NON la devi fare tu da software su Arduino ... viene fatta dal lettore/carte ...

fabpolli:
... sopratutto per la parte pratica di fidelizzazione del cliente ...

... e di questo l'OP è conscio, difatti lo avevo chiaramente indicato come "Svantaggio" ed ha anche risposto:

nicola_t:
La perdita della tessera ci può anche stare nel senso che la tessera per esempio viene data ad un cliente x un basso prezzo dove all’ interno sono presenti 10 crediti per esempio ...

... quindi, sembra, che per lui non sia un problema. ::slight_smile:

Guglielmo

Ma scusate, nei vostri uffici come funzionano le "chiavette del caffè"?

Concordo comunque che la scelta dipende dal contesto: la macchina in cui sta il lettore è online? Hai modo e capacità di mettere in piedi un database? La consegna delle tessere deve essere immediata o può prevedere una fase di "registrazione"?

Quanto alla cifratura, è appunto implementata dal tag, non da Arduino. Mi pare che alcuni abbiano anche la possibilità di distruggere il contenuto dopo N tentativi di accesso con chiave scorretta, per prevenire il bruteforcing.

Le chiavette che io sappia sono cifrate e con un ID del fornitore, per cui chiavette anche identiche e con la stessa codifica non funzionano su macchinette di altri fornitori. La conferma ce l'ho avuto col fatto che la chiavetta della macchina della sede dove lavoro funziona anche da un cliente, che ha lo stesso fornitore.
Inoltre questa cosa conferma anche che il credito è registrato all'interno della chiavetta stessa.

Detto questo, per una attività commerciale di quella portata è normale che abbiano implementato chiavette con cifratura (che non credo sia semplicemente basata su passphrase ma su verifica del certificato con quello dell'apparato), per uno scopo "amatoriale" è una inutile complicazione oltre ad essere ben più costose.

E invece quelle chiavette sono probabilmente dei tag Mifare identici a quelli di cui parliamo ;).

La sicurezza è interamente basata sul fatto che la chiave di cifratura è dentro alle macchine e inaccessibile all'utente. Le chiavette non funzionano su macchine di fornitori diversi perché hanno chiavi di cifratura diverse.

Ringrazio tutti per le varie risposte. Da quanto ho capito la soluzione che fa al mio caso è appunto dare tessere scrivibili al cliente. Il sistema è in un contesto in cui non se ne prevede la manomissione e comunque sia non provoca alcuna perdita. Al massimo per aggiungere una sicurezza in più potrei appunto aggiungere una password come stavo leggendo nei vari post. Comunque vedo di procurarmi il materiale in modo da poter iniziare a fare qualcosa. Allora lettore mfrc522, display lcd, arduino va bene il nano oppure consigliate un mega o l'uno? Per le tessere quelle comprese con il lettore vanno bene o dove procurarne altre?
Grazie di nuovo.

Non è una protezione con password ciò di cui stiamo parlando, è proprio autenticazione tramite un algoritmo crittografico tra tessera e lettore, abbastanza trasparente al programmatore.

Se non prevedi di attaccarci molto altro, va bene un Nano. Quante tessere ti serviranno lo saprai ben tu...