Innholdsfortegnelse:

Elektronisk lommebok: 3 trinn
Elektronisk lommebok: 3 trinn

Video: Elektronisk lommebok: 3 trinn

Video: Elektronisk lommebok: 3 trinn
Video: The Third Industrial Revolution: A Radical New Sharing Economy 2024, Juni
Anonim
Elektronisk lommebok
Elektronisk lommebok

MERK: Jeg har nå Instructables som tilbyr Arduino -kode for RC522 og PN532.

I mitt forrige innlegg forklarte jeg det grunnleggende for kommunikasjon med MFRC522 og PN532 RFID -modulene for å lese/skrive data fra Mifare Classic 1k -tagger. I dette innlegget tar jeg det et skritt videre og viser hvordan jeg bruker disse modulene til å lage en elektronisk lommebok ut av taggene. Som med forrige innlegg, presenteres dette som en grunnleggende implementering, men bør danne grunnlag for en rekke applikasjoner som krever økning/reduksjon eller tellerfunksjoner.

Trinn 1: Dataintegritet

For en elektronisk lommebok er det alltid en bekymring for at noen kan legge til kreditter uten å betale for dem. Det er også en bekymring for at kredittene på taggen utilsiktet kan bli ødelagt under en dataskriving. Datatilgang krever bruk av tag -nøkkelen, så det er nødvendig å endre standardnøkkelen når taggen først initialiseres. Det er artikler på nettet som snakker om hvordan du kan hacke en tag selv om du ikke kjenner nøkkelen, men teknikken ikke er triviell. Jeg vil ikke anbefale å bruke disse kodene for bankkontoen din, men de er gode nok for mange mindre risikable applikasjoner.

Sannsynligheten for datakorrupsjon er relativt liten, men programvaren bør i det minste kunne håndtere den grunnleggende saken. Denne prosessen innebærer to trinn med det første trinnet for å oppdage korrupsjonen. I dette prosjektet håndteres det ved å lagre både kredittverdien og et 1 -talls komplement av kredittverdien. Det gir en enkel sammenligning av verdiene. Det andre trinnet er å lagre en sikkerhetskopiversjon av både kredittverdien og dens tillegg. Det gir mulighet for en gjenopprettingsoperasjon hvis det første settet med kreditter blir ødelagt. Hvis begge settene er ødelagt, prøver programvaren å initialisere taggen igjen, noe som resulterer i tap av alle studiepoeng.

Trinn 2: Maskinvare

Maskinvare
Maskinvare

Maskinvaretilkoblingene er vist i diagrammet ovenfor. Dette er det samme oppsettet som det forrige innlegget med tillegg av to brytere og en opptrekksmotstand. En bryter krever ikke en opptrekkmotstand fordi den er på en PIC-inngang som har en svak opptrekkskapasitet. I praksis ville begge bryterne være skjult fordi de brukes til å legge til kreditter og til å initialisere en tag. Initialiseringsbryteren er valgfri (for å gjøre manuell kredittnullstilling) fordi programvaren kan oppdage og initialisere en ny tag på egen hånd. Jumper pins kan brukes i stedet for brytere.

Trinn 3: Programvare

Tillegg til hovedløkken i programvaren ble gjort for å tillate lesing av de to bryterne og for å oppdage en tilstand som krever initialisering av tag. Som nevnt i maskinvaredelen kan initialisering av tagger kommanderes manuelt med en bryter. Programvaren kan også styre en tag -initialisering i to andre tilfeller. For det første, hvis den oppdager en ny tag eller datasektor og for det andre hvis begge settene med kredittdata er ødelagt.

Godkjenning av koder krever bruk av "nøkkel A" for måldatasektoren. Standardnøkkelen for Mifare Classic 1k -taggene er "FF FF FF FF FF FF", men bør endres for søknaden din. Programvaren gir definisjoner for både standardnøkkelen og en ny nøkkel ("My_Key"). Bare koble inn verdiene du vil ha i "My_Key". Programvaren prøver alltid å først godkjenne koden ved hjelp av "My_Key". Hvis det mislykkes, kalles rutinen for å initialisere koden, og standardnøkkelen brukes til autentisering. Initialiseringsrutinen endrer nøkkelen til “My_Key” og setter studiepoengene til null. Hvis du har en tag med en ikke-standardnøkkel og du ikke vet hva det er, kan ikke taggen autentiseres. Hvis dette skjer, kan det være lurt å sjekke andre datasektorer ved å bruke standardnøkkelen for å se om en er tilgjengelig. Trailerblokken, datablokken og sikkerhetskopieringsblokkene er alle definert i begynnelsen av programvarelisten slik at du enkelt kan endre dem.

Formatet for data lagret i koden for denne applikasjonen bruker bare positive tall (ingen underskudd tillatt) og verdier lagres som fire byte pakket BCD (Binary Coded Decimal). Det gir mulighet for et kredittområde fra 0 til 99, 999, 999 (to sifre per byte). Kredittverdien og dens 1 -komplement bruker bare 8 av de 16 bytes i en enkelt datablokk, og resten er polstret med nuller. Det er plass i den samme datablokken for sikkerhetskopien, men jeg bestemte meg for at det ville være tryggere å sette sikkerhetskopien i en egen datablokk. Sikkerhetskopieringsblokken er i samme sektor som datablokken, så en separat autentisering er ikke nødvendig. For å være enda tryggere kan du vurdere å sette sikkerhetskopien i en annen datasektor, men da vil det være nødvendig med et eget autentiseringstrinn for å få tilgang til disse dataene.

Når en lesning er gjort av studiepoengene, blir den komplementerte verdien også lest, og deretter blir de to sammenlignet med hverandre. Hvis det er feil samsvar, blir sikkerhetskopisettet av verdi/komplement lest og sammenlignet. Hvis de samsvarer, antas sikkerhetskopien å være korrekt og brukes til å reparere ødelagte data. Hvis sikkerhetskopiene ikke samsvarer, blir taggen ansett som dårlig, og det blir forsøkt å initialisere den på nytt.

Øknings- og reduseringsverdiene er definert nær forsiden av oppføringen og forventes å være i pakket BCD. Rutinene som gjør inkrementering og reduksjon gjør det effektivt på et 32-biters nummer. Matematikken er veldig enkel, men krever bruk av rutiner for å justere resultatene for dataene i hver pakket BCD -byte og fra en byte til den neste. Det oppnås ved bruk av makroer DAA (Decimal Adjust Addition) og DAS (Decimal Adjust Subtraction). Disse makroene sørger for at hvert 4-biters BCD-siffer alltid holder seg innenfor området 0-9.

I tillegg til displaymeldingene i forrige innlegg, har denne applikasjonen meldinger for mange av de ekstra trinnene - spesielt hvis det er datafeil og/eller taggen må fikses eller initialiseres. Kredittene vises også før og etter et trinn for å øke/redusere, slik at du kan se at verdiene endres.

Det er det for dette innlegget. Sjekk mine andre elektronikkprosjekter på: www.boomerrules.wordpress.com

Anbefalt: