Turinys:

Elektroninė piniginė: 3 žingsniai
Elektroninė piniginė: 3 žingsniai

Video: Elektroninė piniginė: 3 žingsniai

Video: Elektroninė piniginė: 3 žingsniai
Video: Eurofondo elektroninė piniginė 2024, Birželis
Anonim
Elektroninė piniginė
Elektroninė piniginė

PASTABA: dabar turiu „Instructables“, siūlančią „Arduino“kodą RC522 ir PN532.

Ankstesniame įraše išsamiai aprašiau bendravimo su MFRC522 ir PN532 RFID moduliais pagrindus, kad būtų galima skaityti/rašyti duomenis iš „Mifare Classic 1k“žymų. Šiame įraše žengiu dar vieną žingsnį ir parodau, kaip panaudoti tuos modulius, kad iš žymų būtų sukurta elektroninė piniginė. Kaip ir ankstesniame pranešime, tai pateikiama kaip pagrindinis įgyvendinimas, tačiau tai turėtų būti pagrindas įvairioms programoms, kurioms reikia didinimo/mažinimo ar skaičiavimo funkcijų.

1 veiksmas: duomenų vientisumas

Dėl elektroninės piniginės visada nerimaujama, kad kas nors gali pridėti kreditus nemokėdamas už juos. Taip pat nerimaujama, kad rašant duomenis gali būti netyčia sugadinti žymos užrašai. Prieigai prie duomenų reikia naudoti žymos raktą, todėl pirmą kartą inicijuojant žymą būtina pakeisti numatytąjį raktą. Internete yra straipsnių, kuriuose kalbama apie tai, kaip nulaužti žymą, net jei nežinote rakto, tačiau technika nėra menka. Nerekomenduočiau naudoti šių žymų savo banko sąskaitai, tačiau jos yra pakankamai geros daugeliui mažiau rizikingų programų.

Duomenų sugadinimo tikimybė yra palyginti maža, tačiau programinė įranga turėtų sugebėti bent jau išspręsti pagrindinį atvejį. Šis procesas apima du žingsnius, kurių pirmasis žingsnis yra tiesiog aptikti korupciją. Šiame projekte, kuris tvarkomas saugojant kredito vertę ir kredito vertės 1 papildymą. Tai leidžia paprasčiausiai palyginti vertybes. Antrasis žingsnis yra išsaugoti atsarginę kredito vertės ir jos papildymo versiją. Tai leidžia susigrąžinti operaciją, jei sugadinamas pirmasis kreditų rinkinys. Jei abu rinkiniai yra sugadinti, programinė įranga bando iš naujo inicijuoti žymą, todėl prarandami visi kreditai.

2 žingsnis: Aparatūra

Techninė įranga
Techninė įranga

Techninės įrangos jungtys parodytos aukščiau esančioje diagramoje. Tai tokia pati sąranka kaip ir ankstesniame pranešime, pridedant du jungiklius ir ištraukiamąjį rezistorių. Vienam jungikliui nereikia ištraukimo rezistoriaus, nes jis yra PIC įvestyje, kurioje yra silpna pritraukimo galimybė. Praktiškai abu jungikliai būtų paslėpti, nes jie naudojami pridedant kreditus ir inicijuojant žymą. Inicializavimo jungiklis yra neprivalomas (norint rankiniu būdu panaikinti kredito nulį), nes programinė įranga gali aptikti ir inicijuoti naują žymą pati. Vietoj jungiklių galima naudoti trumpiklius.

3 žingsnis: programinė įranga

Buvo pridėta pagrindinė programinės įrangos kilpa, kad būtų galima nuskaityti du jungiklius ir aptikti būklę, kuriai reikia inicijuoti žymą. Kaip minėta techninės įrangos skyriuje, žymos inicijavimą galima valdyti rankiniu būdu jungikliu. Programinė įranga taip pat gali liepti inicijuoti žymą dviem kitais atvejais. Pirma, jei aptinka naują žymą ar duomenų sektorių, ir, antra, jei abu kredito duomenų rinkiniai yra sugadinti.

Norint patvirtinti žymas, reikia naudoti „raktą A“tiksliniam duomenų sektoriui. Numatytasis „Mifare Classic 1k“žymų raktas yra „FF FF FF FF FF FF“, tačiau jis turėtų būti pakeistas jūsų programai. Programinė įranga pateikia numatytojo rakto ir naujo rakto apibrėžimus („My_Key“). Tiesiog įjunkite norimas vertes į „My_Key“. Programinė įranga visada bando pirmiausia patvirtinti žymą naudodami „My_Key“. Jei nepavyksta, iškviečiama žymos inicijavimo tvarka ir autentifikavimui naudojamas numatytasis raktas. Inicijavimo tvarka pakeičia raktą į „My_Key“ir nustato kreditus į nulį. Jei turite žymą su nenumatytuoju raktu ir nežinote, kas tai yra, žyma negali būti patvirtinta. Jei taip atsitiks, galbūt norėsite patikrinti kitus duomenų sektorius naudodami numatytąjį raktą, kad pamatytumėte, ar toks yra. Anonsų blokas, duomenų blokas ir atsarginės kopijos yra apibrėžti programinės įrangos sąrašo pradžioje, kad galėtumėte lengvai juos pakeisti.

Šios programos žymoje saugomų duomenų formatas naudoja tik teigiamus skaičius (trūkumai neleidžiami), o reikšmės saugomos kaip keturi baitai supakuoto BCD (dvejetainis koduotas dešimtainis). Tai leidžia kredito diapazoną nuo 0 iki 99, 999, 999 (du skaitmenys už baitą). Kredito vertė ir jos 1 papildas naudoja tik 8 iš 16 baitų viename duomenų bloke, o likusieji yra užpildyti nuliais. Tame pačiame duomenų bloke yra vietos atsarginei kopijai, bet nusprendžiau, kad saugiau būtų atsarginę kopiją sudėti į atskirą duomenų bloką. Atsarginis blokas yra tame pačiame sektoriuje kaip ir duomenų blokas, todėl atskiro autentifikavimo nereikia. Jei norite būti dar saugesnis, galite apsvarstyti galimybę sukurti atsarginę kopiją kitame duomenų sektoriuje, tačiau norint pasiekti šiuos duomenis reikia atlikti atskirą autentifikavimo veiksmą.

Kai perskaitomi kreditai, taip pat skaitoma papildyta vertė, o tada jie lyginami vienas su kitu. Jei yra neatitikimų, perskaitomas ir lyginamas atsarginis vertės/papildymo rinkinys. Jei jie sutampa, laikoma, kad atsarginė kopija yra teisinga ir naudojama sugadintiems duomenims taisyti. Jei atsarginės kopijos nesutampa, laikoma, kad žyma yra bloga ir bandoma ją iš naujo inicijuoti.

Padidinimo ir sumažėjimo vertės yra apibrėžtos sąrašo priekyje ir tikimasi, kad jos bus supakuotos BCD. Įprastos procedūros, kurios didina ir mažina, veiksmingai tai daro 32 bitų skaičiumi. Matematika yra labai paprasta, tačiau norint naudoti rezultatus kiekvienam supakuotam BCD baitui ir iš vieno baito į kitą, reikia naudoti įprastas procedūras. Tai pasiekiama naudojant makrokomandas DAA (dešimtainio koregavimo pridėjimas) ir DAS (dešimtainio koregavimo atimtis). Šios makrokomandos užtikrina, kad kiekvienas 4 bitų BCD skaitmuo visada būtų 0–9 intervale.

Be ankstesnio įrašo rodomų pranešimų, šioje programoje yra pranešimų apie daugelį papildomų veiksmų, ypač jei yra duomenų klaidų ir (arba) žyma turi būti pataisyta arba inicijuota. Kreditai taip pat rodomi prieš ir po didinimo/mažinimo žingsnio, kad matytumėte, kaip keičiasi vertės.

Tai šiam įrašui. Peržiūrėkite kitus mano elektronikos projektus: www.boomerrules.wordpress.com

Rekomenduojamas: