Sommario:

Portafoglio elettronico: 3 passaggi
Portafoglio elettronico: 3 passaggi

Video: Portafoglio elettronico: 3 passaggi

Video: Portafoglio elettronico: 3 passaggi
Video: Wallet MagSafe economico ? #shorts 2024, Novembre
Anonim
Portafoglio elettronico
Portafoglio elettronico

NOTA: ora ho Instructables che offrono il codice Arduino per RC522 e PN532.

Nel mio post precedente ho dettagliato le basi per comunicare con i moduli RFID MFRC522 e PN532 per leggere/scrivere dati dai tag Mifare Classic 1k. In questo post faccio un ulteriore passo avanti e mostro come utilizzare quei moduli per creare un portafoglio elettronico dai tag. Come nel post precedente, questa viene presentata come un'implementazione di base, ma dovrebbe fornire una base per una varietà di applicazioni che richiedono funzioni di incremento/decremento o conteggio.

Passaggio 1: integrità dei dati

Per un portafoglio elettronico c'è sempre la preoccupazione che qualcuno possa aggiungere crediti senza pagarli. C'è anche il timore che i crediti sul tag possano essere inavvertitamente danneggiati durante la scrittura dei dati. Gli accessi ai dati richiedono l'uso della chiave tag quindi è necessario cambiare la chiave predefinita quando il tag viene inizializzato per la prima volta. Ci sono articoli online che parlano di come hackerare un tag anche se non si conosce la chiave ma la tecnica non è banale. Non consiglierei di utilizzare questi tag per il tuo conto bancario, ma sono abbastanza buoni per molte applicazioni meno rischiose.

La probabilità di danneggiamento dei dati è relativamente piccola, ma il software dovrebbe essere in grado di gestire almeno il caso di base. Questo processo prevede due passaggi con il primo passaggio per rilevare semplicemente il danneggiamento. In questo progetto che viene gestito memorizzando sia il valore del credito che un complemento a 1 del valore del credito. Ciò consente un semplice confronto dei valori. Il secondo passaggio consiste nell'archiviare una versione di backup sia del valore del credito che del suo complemento. Ciò consente un'operazione di ripristino se il primo set di crediti viene danneggiato. Se entrambi i set sono danneggiati, il software tenta di reinizializzare il tag, con conseguente perdita di tutti i crediti.

Passaggio 2: hardware

Hardware
Hardware

Le connessioni hardware sono mostrate nello schema sopra. Questa è la stessa configurazione del post precedente con l'aggiunta di due interruttori e un resistore di pull-up. Uno switch non richiede un resistore di pull-up perché si trova su un ingresso PIC che ha una debole capacità di pull-up incorporata. In pratica entrambi gli switch sarebbero nascosti perché vengono utilizzati per aggiungere crediti e per inizializzare un tag. L'interruttore di inizializzazione è facoltativo (per eseguire l'azzeramento manuale del credito) perché il software può rilevare e inizializzare da solo un nuovo tag. I pin dei ponticelli potrebbero essere utilizzati al posto degli interruttori.

Passaggio 3: software

Sono state apportate aggiunte al loop principale nel software per consentire la lettura dei due interruttori e il rilevamento di una condizione che richiede l'inizializzazione del tag. Come menzionato nella sezione hardware, l'inizializzazione dei tag può essere comandata manualmente con un interruttore. Il software può anche comandare l'inizializzazione di un tag in altri due casi. Primo, se rileva un nuovo tag o settore dati e in secondo luogo, se entrambi i set di dati del credito sono danneggiati.

L'autenticazione dei tag richiede l'uso della "chiave A" per il settore dati di destinazione. La chiave predefinita per i tag Mifare Classic 1k è "FF FF FF FF FF FF" ma dovrebbe essere modificata per la tua applicazione. Il software fornisce le definizioni sia per la chiave predefinita che per una nuova chiave ("My_Key"). Basta inserire i valori desiderati in "My_Key". Il software tenta sempre di autenticare prima il tag utilizzando "My_Key". Se fallisce, viene chiamata la routine per inizializzare il tag e viene utilizzata la chiave predefinita per l'autenticazione. La routine di inizializzazione cambia la chiave in “My_Key” e azzera i crediti. Se hai un tag con una chiave non predefinita e non sai di cosa si tratta, il tag non può essere autenticato. Se ciò accade, potresti voler controllare altri settori di dati utilizzando la chiave predefinita per vedere se ne è disponibile uno. I blocchi Trailer, Blocco dati e Backup sono tutti definiti all'inizio dell'elenco del software in modo da poterli modificare facilmente.

Il formato per i dati archiviati nel tag per questa applicazione utilizza solo numeri positivi (nessun deficit consentito) e i valori sono archiviati come quattro byte di BCD (Binary Coded Decimal) compressi. Ciò consente un intervallo di credito da 0 a 99, 999, 999 (due cifre per byte). Il valore del credito e il suo complemento a 1 utilizzano solo 8 dei 16 byte in un singolo blocco di dati e il resto viene riempito con zeri. C'è spazio nello stesso blocco dati per la copia di backup, ma ho deciso che sarebbe stato più sicuro mettere il backup in un blocco dati separato. Il blocco di backup si trova nello stesso settore del blocco dati, quindi non è richiesta un'autenticazione separata. Per essere ancora più sicuri, potresti considerare di inserire il backup in un settore dati diverso, ma in tal caso sarebbe necessario un passaggio di autenticazione separato per accedere a tali dati.

Quando viene eseguita una lettura dei crediti viene letto anche il valore complementare e quindi i due vengono confrontati tra loro. In caso di mancata corrispondenza, il set di backup di valore/complemento viene letto e confrontato. Se corrispondono, si presume che il backup sia corretto e viene utilizzato per riparare i dati danneggiati. Se le copie di backup non corrispondono, il tag viene considerato non valido e viene effettuato un tentativo di reinizializzarlo.

I valori di incremento e decremento sono definiti nella parte anteriore dell'elenco e dovrebbero essere in formato BCD compresso. Le routine che eseguono l'incremento e il decremento lo fanno effettivamente su un numero a 32 bit. La matematica è molto semplice ma richiede l'uso di routine per regolare i risultati per i carry all'interno di ogni byte BCD compresso e da un byte all'altro. Ciò si ottiene utilizzando le macro DAA (Decimal Adjust Addition) e DAS (Decimal Adjust Subtraction). Queste macro assicurano che ogni cifra BCD a 4 bit rimanga sempre nell'intervallo 0-9.

Oltre ai messaggi visualizzati nel post precedente, questa applicazione contiene messaggi per molti dei passaggi aggiuntivi, in particolare se ci sono errori nei dati e/o il tag deve essere corretto o inizializzato. I crediti vengono visualizzati anche prima e dopo un passaggio di incremento/decremento in modo da poter vedere il cambiamento dei valori.

Questo è tutto per questo post. Dai un'occhiata ai miei altri progetti di elettronica su: www.boomerrules.wordpress.com

Consigliato: