Indholdsfortegnelse:

Elektronisk tegnebog: 3 trin
Elektronisk tegnebog: 3 trin

Video: Elektronisk tegnebog: 3 trin

Video: Elektronisk tegnebog: 3 trin
Video: MOFT Snap On - это магнитная подставка, держатель и кошелек для телефонов с MagSafe для всех iPhone 2024, Juni
Anonim
Elektronisk tegnebog
Elektronisk tegnebog

BEMÆRK: Jeg har nu Instructables, der tilbyder Arduino -kode til RC522 og PN532.

I mit tidligere indlæg detaljerede jeg det grundlæggende for kommunikation med MFRC522 og PN532 RFID -modulerne for at læse/skrive data fra Mifare Classic 1k -tags. I dette indlæg tager jeg det et skridt videre og viser, hvordan man bruger disse moduler til at oprette en elektronisk tegnebog ud af mærkerne. Som med det forrige indlæg præsenteres dette som en grundlæggende implementering, men bør danne grundlag for en række applikationer, der kræver tilvækst/formindskelse eller opregningsfunktioner.

Trin 1: Dataintegritet

For en elektronisk tegnebog er der altid en bekymring for, at nogen kan tilføje kreditter uden at betale for dem. Der er også en bekymring for, at kreditterne på mærket kan blive utilsigtet ødelagt under en dataskrivning. Dataadgang kræver brug af tag -nøglen, så det er nødvendigt at ændre standardnøglen, når tagget først initialiseres. Der er artikler online, der taler om, hvordan man hacker et tag, selvom du ikke kender nøglen, men teknikken ikke er triviel. Jeg vil ikke anbefale at bruge disse tags til din bankkonto, men de er gode nok til masser af mindre risikable applikationer.

Sandsynligheden for datakorruption er relativt lille, men softwaren bør i det mindste kunne håndtere grundsagen. Denne proces involverer to trin med det første trin til simpelthen at opdage korruptionen. I dette projekt håndteres det ved at gemme både kreditværdien samt et 1’er -supplement af kreditværdien. Det giver mulighed for en simpel sammenligning af værdierne. Det andet trin er at gemme en backup -version af både kreditværdien og dens supplement. Det giver mulighed for en gendannelsesoperation, hvis det første sæt kreditter bliver ødelagt. Hvis begge sæt er beskadiget, forsøger softwaren at geninitialisere mærket, hvilket resulterer i tab af alle kreditter.

Trin 2: Hardware

Hardware
Hardware

Hardwareforbindelserne er vist i diagrammet ovenfor. Dette er den samme opsætning som den forrige post med tilføjelse af to kontakter og en pull-up modstand. Én switch kræver ikke en pull-up-modstand, fordi den er på en PIC-indgang, der har en svag pull-up-funktion indbygget. I praksis ville begge switches være skjult, fordi de bruges til at tilføje kreditter og til at initialisere et tag. Initialiseringsomskifteren er valgfri (for at foretage manuel kreditnulstilling), fordi softwaren kan registrere og initialisere et nyt tag på egen hånd. Jumper pins kunne bruges i stedet for kontakter.

Trin 3: Software

Tilføjelser til hovedsløjfen i softwaren blev foretaget for at muliggøre læsning af de to switches og for påvisning af en tilstand, der kræver initialisering af mærker. Som nævnt i hardware -afsnittet kan initialisering af mærker styres manuelt med en switch. Softwaren kan også styre en taginitialisering i to andre tilfælde. For det første, hvis det registrerer et nyt tag eller en datasektor og for det andet, hvis begge sæt kreditdata er beskadiget.

Godkendelse af tags kræver brug af "nøgle A" til måldatasektoren. Standardnøglen til Mifare Classic 1k -tags er "FF FF FF FF FF FF", men bør ændres for din applikation. Softwaren giver definitioner for både standardnøglen og en ny nøgle ("My_Key"). Tilslut bare de værdier, du ønsker, til "My_Key". Softwaren forsøger altid først at godkende mærket ved hjælp af "My_Key". Hvis det mislykkes, kaldes rutinen for at initialisere mærket, og standardnøglen bruges til godkendelse. Initialiseringsrutinen ændrer nøglen til "My_Key" og sætter kreditterne til nul. Hvis du har et mærke med en ikke-standardnøgle, og du ikke ved, hvad det er, kan tagget ikke godkendes. Hvis dette sker, vil du måske kontrollere andre datasektorer ved hjælp af standardnøglen for at se, om der er en tilgængelig. Trailerblokken, datablokken og backupblokkene er alle defineret i begyndelsen af softwarelisten, så du nemt kan ændre dem.

Formatet for data, der er gemt i tagget til denne applikation, bruger kun positive tal (ingen underskud tilladt), og værdier gemmes som fire bytes pakket BCD (Binary Coded Decimal). Det giver mulighed for et kreditinterval fra 0 til 99, 999, 999 (to cifre pr. Byte). Kreditværdien og dens 1’er komplement bruger kun 8 af de 16 bytes i en enkelt datablok, og resten er polstret med nuller. Der er plads i den samme datablok til sikkerhedskopien, men jeg besluttede, at det ville være mere sikkert at lægge sikkerhedskopien i en separat datablok. Backupblokken er i samme sektor som datablokken, så en separat godkendelse er ikke påkrævet. For at være endnu mere sikker kan du overveje at placere sikkerhedskopien i en anden datasektor, men så er det nødvendigt med et separat godkendelsestrin for at få adgang til disse data.

Når der er læst af kreditterne, læses den supplerede værdi også, og derefter sammenlignes de to med hinanden. Hvis der er en uoverensstemmelse, læses og sammenlignes backupsættet af værdi/komplement. Hvis de matcher, antages sikkerhedskopien at være korrekt og bruges til at reparere de beskadigede data. Hvis sikkerhedskopierne ikke matcher, anses tagget for at være dårligt, og der gøres et forsøg på at initialisere det igen.

Forøgelses- og formindskelsesværdierne er defineret nær forsiden af fortegnelsen og forventes at være i pakket BCD. De rutiner, der foretager inkrementering og reduktion, gør det effektivt på et 32-bit nummer. Matematikken er meget enkel, men kræver brug af rutiner til at justere resultaterne for transporter inden for hver pakket BCD -byte og fra en byte til den næste. Det opnås ved brug af makroer DAA (Decimal Adjust Addition) og DAS (Decimal Adjust Subtraction). Disse makroer sikrer, at hvert 4-bit BCD-ciffer altid forbliver inden for området 0-9.

Ud over displaymeddelelserne i det forrige indlæg har denne applikation beskeder til mange af de ekstra trin - især hvis der er datafejl og/eller tagget skal rettes eller initialiseres. Kreditterne vises også før og efter et trin/stigningstrin, så du kan se værdierne ændre sig.

Det er det for dette indlæg. Tjek mine andre elektronikprojekter på: www.boomerrules.wordpress.com

Anbefalede: