Innehållsförteckning:

Elektronisk plånbok: 3 steg
Elektronisk plånbok: 3 steg

Video: Elektronisk plånbok: 3 steg

Video: Elektronisk plånbok: 3 steg
Video: Steg 3: Installation schakt 2024, Juni
Anonim
Elektronisk plånbok
Elektronisk plånbok

OBS: Jag har nu Instructables som erbjuder Arduino -kod för RC522 och PN532.

I mitt förra inlägg redogjorde jag för grunderna för kommunikation med MFRC522 och PN532 RFID -moduler för att läsa/skriva data från Mifare Classic 1k -taggar. I det här inlägget tar jag det ett steg längre och visar hur jag använder dessa moduler för att skapa en elektronisk plånbok av taggarna. Precis som med föregående inlägg presenteras detta som en grundläggande implementering men bör utgöra en grund för en mängd olika applikationer som kräver ökade/minskade eller sammanställningsfunktioner.

Steg 1: Dataintegritet

För en elektronisk plånbok finns det alltid en oro för att någon kan lägga till krediter utan att betala för dem. Det finns också en oro för att krediterna på taggen kan bli oavsiktligt skadade under en dataskrivning. Dataåtkomst kräver användning av taggnyckeln så det är nödvändigt att ändra standardnyckeln när taggen initialiseras. Det finns artiklar online som talar om hur man hackar en tagg även om du inte känner till nyckeln men tekniken inte är trivial. Jag skulle inte rekommendera att använda dessa taggar för ditt bankkonto men de är tillräckligt bra för många mindre riskfyllda applikationer.

Sannolikheten för datakorruption är relativt liten men programvaran bör åtminstone kunna hantera grundfallet. Denna process involverar två steg med det första steget för att helt enkelt upptäcka korruptionen. I detta projekt hanteras det genom att lagra både kreditvärdet och ett 1: s komplement av kreditvärdet. Det möjliggör en enkel jämförelse av värdena. Det andra steget är att lagra en backupversion av både kreditvärdet och dess komplement. Det möjliggör en återställningsoperation om den första uppsättningen krediter blir skadad. Om båda uppsättningarna är skadade försöker programvaran att initiera taggen igen, vilket resulterar i förlust av alla krediter.

Steg 2: Hårdvara

Hårdvara
Hårdvara

Hårdvaruanslutningarna visas i diagrammet ovan. Detta är samma inställning som föregående inlägg med tillägg av två omkopplare och ett uppdragningsmotstånd. En switch kräver inte ett pull-up-motstånd eftersom det är på en PIC-ingång som har en svag pull-up-funktion inbyggd. I praktiken skulle båda switcharna döljas eftersom de används för att lägga till krediter och för att initiera en tagg. Initialiseringsomkopplaren är valfri (för att göra manuell kreditnollställning) eftersom programvaran kan upptäcka och initiera en ny tagg på egen hand. Bygelnålar kan användas istället för omkopplare.

Steg 3: Programvara

Tillägg till huvudslingan i programvaran gjordes för att möjliggöra avläsning av de två omkopplarna och för detektering av ett tillstånd som kräver tag -initialisering. Som nämnts i maskinvarusektionen kan initialisering av taggar styras manuellt med en switch. Programvaran kan också styra en tag -initialisering i två andra fall. För det första, om den upptäcker en ny tagg eller datasektor och för det andra, om båda uppsättningarna kreditdata är skadade.

Autentisering av taggar kräver användning av "nyckel A" för måldatasektorn. Standardnyckeln för Mifare Classic 1k -taggarna är "FF FF FF FF FF FF" men bör ändras för din applikation. Programvaran tillhandahåller definieringar för både standardnyckeln och en ny nyckel ("My_Key"). Anslut bara vilka värden du vill till "My_Key". Programvaran försöker alltid autentisera taggen med "My_Key". Om det misslyckas kallas rutinen för att initiera taggen och standardnyckeln används för autentisering. Initieringsrutinen ändrar nyckeln till “My_Key” och sätter krediterna till noll. Om du har en tagg med en icke-standardnyckel och du inte vet vad det är, kan taggen inte autentiseras. Om detta händer kanske du vill kontrollera andra datasektorer med standardnyckeln för att se om en sådan är tillgänglig. Trailerblocket, datablocket och säkerhetskopieringsblocken definieras alla i början av programvarulistan så att du enkelt kan ändra dem.

Formatet för data som lagras i taggen för den här applikationen använder endast positiva tal (inga underskott tillåts) och värden lagras som fyra byte packad BCD (Binary Coded Decimal). Det möjliggör ett kreditintervall från 0 till 99, 999, 999 (två siffror per byte). Kreditvärdet och dess 1: s komplement använder endast 8 av de 16 byte i ett enda datablock och resten är vadderade med nollor. Det finns plats i samma datablock för säkerhetskopian men jag bestämde mig för att det skulle vara säkrare att lägga säkerhetskopian i ett separat datablock. Säkerhetskopieringsblocket finns i samma sektor som datablocket så en separat autentisering krävs inte. För att vara ännu säkrare kan du överväga att placera säkerhetskopian i en annan datasektor, men då skulle ett separat autentiseringssteg behövas för att komma åt den informationen.

När en läsning görs av krediterna läses också det kompletterade värdet och sedan jämförs de två mot varandra. Om det finns en felanpassning läses och jämförs backupsatsen av värde/komplement. Om de matchar antas säkerhetskopian vara korrekt och används för att reparera skadad data. Om säkerhetskopiorna inte matchar anses taggen vara dålig och ett försök görs att initiera den igen.

Öknings- och minskningsvärdena definieras nära listans framsida och förväntas vara i packad BCD. De rutiner som gör inkrementering och minskning gör det effektivt på ett 32-bitars tal. Matematiken är mycket enkel men kräver användning av rutiner för att justera resultaten för bär inom varje packad BCD -byte och från en byte till nästa. Det uppnås med hjälp av makron DAA (Decimal Adjust Addition) och DAS (Decimal Adjust Subtraction). Dessa makron ser till att varje 4-bitars BCD-siffra alltid ligger inom intervallet 0-9.

Förutom displaymeddelandena i föregående inlägg har den här applikationen meddelanden för många av de ytterligare stegen - särskilt om det finns datafel och/eller taggen måste fixas eller initieras. Krediterna visas också före och efter ett steg/minskningssteg så att du kan se värdena förändras.

Det är det för det här inlägget. Kolla in mina andra elektronikprojekt på: www.boomerrules.wordpress.com

Rekommenderad: