Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Programi
  • Izrada RFID brave pomoću Arduina. Uradi sam elektronska RFID brava na mikrokontroleru

Izrada RFID brave pomoću Arduina. Uradi sam elektronska RFID brava na mikrokontroleru

EM4100 oznaka pohranjuje 64 bita podataka, što znači da dizajn mora sadržavati 64-bitni pomični registar sastavljen od osam 8-bitnih 74HC165 registara. Registar se resetuje nakon svake 64 smjene kako bi se resetirali podaci i počeli ispočetka. Podaci na ulazima registra su sljedeći:
  • Vremenski obrazac: devet jedinica
  • ID proizvođača/verzije: 2 bloka od 5 bita, od kojih su 4 bita podaci, a peti paritet
  • Jedinstveni identifikator: 8 blokova od 5 bitova, od kojih su 4 bita podaci, a peti je paritet
  • Kontrolna suma: 4 paritetna bita, broje se po koloni
  • Stop bit: "0"

Čak su i šifrirane oznake ranjive na razne napade. Uz to, postaje sve lakše oponašati oznake na pametnim telefonima koji podržavaju NFC (koji obično rade na 13,56 MHz). Samo ispravno napišite aplikaciju za modulaciju polja i možete raditi šta god želite.

Kao standardni izgovor, da podsjetim da je autor (I prevodilac! - Bilješka prevod) ne snosi nikakvu odgovornost za posljedice korištenja informacija iz ovog članka. Čitalac mora biti odgovoran za sve svoje postupke.

Okvir

Ponekad Veoma Lucky. Prelijepo kućište bi nam dobro došlo upravo sada, kada je prototip gotov i kada je štampana ploča naručena. I u to vrijeme Fleming je završio sastavljanje i lansirao OSAA PhotonSaw mašinu za lasersko sečenje. Nakon godinu dana rada na projektu, laser je spreman za rezanje svojih prvih dijelova. Flemming i Roon vrše konačna podešavanja i zamenjuju aluminijumski poklopac laserskog ormarića. Možete zamisliti koliko smo svi bili uzbuđeni kada smo vidjeli da ova stvar funkcionira.

Dok je mašina radila, bili smo u mogućnosti da testiramo naš projekat pravi zivot. Kućište za našu RFID oznaku je napravljeno od 2 mm pleksiglasa. Ovo tijelo je prvi objekt napravljen na PhotonSawu, da!

Rodila se ideja da se zavojnica postavi na vanjsku stranu tijela. Isprva je odlučeno da se koristi polovina visine karoserije, ali to u praksi nije funkcioniralo (zato se ne koriste dodatne rupe na dugim stranama). Zavojnica savršeno pristaje po obodu cijelog tijela, iako sam sumnjao da bi pravokutni namotaj (105x55 mm) bio prevelik za normalnu elektromagnetnu komunikaciju.

Ispitna zavojnica je namotana, bez ikakvih proračuna, žicom od 0,4 mm u 66 zavoja. I, očito, opet smo imali sreće, jer je zavojnica ispala baš kako treba, sa induktivnošću od 645 μH, sa spojenom oznakom koja daje rezonantnu frekvenciju od 125,2 kHz. Testiranje na čitaču vrata pokazalo je da prototip radi sasvim dobro sa ovom zavojnicom.

Sa zavojnicom izvan kućišta, debljina potonjeg može se smanjiti. Unutrašnja debljina sada zavisi samo od visine delova na ploči, a uzimajući u obzir debljinu ploče trebalo bi da bude oko 6 mm. Također, bilo bi lijepo dodati malo gravure. Flemming je predložio zaokruživanje strana tijela iz estetskih i ergonomskih razloga. Zakrivljeno tijelo Također će biti bolje zaštititi bočne strane namotaja, jer tamo gdje nema velike napetosti, svitci žice vole da strše.

PhotonSaw mašina još nije u savršenom stanju: graviranje je uključeno gornji poklopac značajno pomerio naniže. Treba ga doraditi prije proizvodnje. konačna verzija kućišta. Zakrivljene staze su takođe bile podložne grešci u proračunu u softveru jer se snop nije vratio početna pozicija nakon prolaska zatvorene putanje. Ali u svakom slučaju, krive izgledaju zaista glatko.

PCB sklop

Naručena tabla je stigla:

Montaža nije bila mnogo teška. Na ploču je ucrtana pasta za lemljenje, svi dijelovi su postavljeni, a zatim zalemljeni u domaćoj pećnici.

Kroz izolacijski kapacitet (47 pF ima otpor od približno 27 kOhm na frekvenciji od 125 kHz) i zaštitne diode, struja se dovodi do energetskih šina. Energija koja dolazi iz zavojnice dovoljna je za održavanje napona napajanja od oko 1 V. Struja može doseći 250-500 μA. Iznenađujuće, čini se da 74HC čipovi rade sa ovim zalihama. Nažalost, pod ovom vrstom napetosti dešavaju se neke prilično čudne stvari. 74HC čipovi imaju interno kolo za resetovanje i morate biti sigurni da radi. Imajte na umu da onemogućavanje zaštitnih dioda ne pomaže. Na ulazima mikrokola nalaze se unutrašnje zaštitne diode koje se u ovom slučaju otvaraju i obavljaju isti posao.

Resetovanje napajanja se pokreće samo ako napon napajanja padne ispod određenog nivoa u određenom vremenskom periodu. Ako napon ostane previsok, unutrašnja logika može postati zbunjena jer neki njeni dijelovi mogu biti u nedefiniranom stanju dok drugi rade ispravno. Potrebno je interno resetovanje da bi se svi čipovi postavili u konzistentno stanje. Dakle, kolo će raditi nestabilno pri vrlo niskim naponima napajanja.

Uočeni su sljedeći simptomi: oznaka radi neko vrijeme, dok šalje ispravne podatke. Ako se zavojnica izvadi iz čitača, a zatim vrati nazad, možete se kladiti da li će se oznaka isključiti. Ponekad radi, ponekad ne. Onemogućavanje PLL-a pogoršava situaciju. Niska potrošnja energije znači da će čitač povremeno primati podatke sa oznake koja je isključena. To je ono što znači “energetski efikasan sistem”.

Postoje dva rješenja: 1) smanjiti kondenzator u krugu za oporavak sat signala do 15 pF, i 2) povežite otpornik od 22-100 kOhm između napajanja i uzemljenja kako biste izbacili višak energije. Druga metoda uzrokuje povećanje curenja tokom rada i nije stvarno potrebna kada se smanjuje kapacitivnost kondenzatora. Međutim, postoji kao opcija, i još uvijek je bolji od neodređenog stanja čipova.

Modulacija struje ili napona

Modulator je doneo novu dozu glavobolje. Modulacija je potpuno nestala kada je kalem postavljen na određenoj udaljenosti od čitača. Ovo se takođe može dogoditi kada se kalem pomera prema ili od čitača.

Ispostavilo se da je razlog u krugu modulatora. MOSFET-ovi kratki namotaj na otpornik određenog otpora. Međutim, ako je potrošnja energije iz kola velika, otpor modulatora je mnogo veći od otpora strujnih kola. To dovodi do činjenice da dubina modulacije zavisi od potrošene struje, što nije baš dobro. Situacija je još više pogoršana izborom ograničavajuće zener diode niskog napona nego u prototipu.

Odlučeno je da se modulator prebaci iz modusa modulacije napona u mod modulacije struje. Za prvi način rada, otpornik je bio u strujnom krugu, a sada je spojen između izvora i mase. Napon gejt-izvor će pasti na ovom otporniku sve dok vrijednost ne ostane malo iznad praga otvaranja tranzistora (0,9-1,1 V), što će tranzistor pretvoriti u linearni način rada. Sada će struja kroz tranzistor biti stabilna, bez obzira na napon odvoda.

Testiranje na prototipu pokazalo je da strujna modulacija radi vrlo dobro. Jeftini čitač bez imena više se ne ruši (u redu, možda jednom u stotinu ili tako nešto). Možemo pretpostaviti da će ova promjena odlično djelovati na druge čitaoce, a oznaka će sada vjerovatno moći raditi na većini njih.

Gotova verzija 1

Izmjene možete vidjeti na štampana ploča. Nisam imao SMD kondenzator od 15 pF, morao sam zalemiti običan sa nogama. Modulator je nabavio dodatne otpornike na izvorima tranzistora. Općenito prihvatljivo za prvu verziju.

(slike se mogu kliknuti)





Video demonstracija

Zaključak

Možda mislite da se ovaj projekat, izgrađen na logici 7400, može klasifikovati kao retro dizajn kola, ali to nije sasvim tačno. Prvo, moderna porodica 74HC nije toliko stara. Drugo, kola male snage su uvijek relevantna. Treće, pojedinačni čipovi logičkih elemenata(kao što je korišteni Schmitt okidač) se često koriste u savremeni razvoj. Često se zaboravlja da razvoj tehnologije ne prestaje za starije porodice čipova. Oni su jednostavno postali manje uočljivi na pozadini ukupne raznolikosti.

Pokazalo se da je analogni dio teže razviti od digitalnog dijela. Djelomično zbog nedostatka specifikacija, ali uglavnom zbog mnogih kompromisa potrebnih da bi se zadovoljili parametri i nepredviđenih nuspojava. Digitalni dizajni imaju relativno malo opcija, dok analogni obično zahtijevaju balans između različitih (i često suprotstavljenih) kriterija.

Moram priznati da su 74HC čipovi vrlo, vrlo dobro napravljeni. Programeri su znali šta rade i veoma su postigli niska potrošnja energije. U početku sam imao sumnje da li tag može raditi iz pasivnog napajanja, ali nakon čitanja specifikacija bilo je samo pitanje ispravnog dizajna kola. Iako još uvijek postoje mogućnosti za optimizaciju različitih dijelova oznake.

Sada da vidimo kako će ovaj projekat nastupiti na takmičenju 7400 2012. Prijave na konkurs se zatvaraju do 31. novembra. Autoru želimo puno sreće! - Bilješka prevod

Oznake: Dodajte oznake

RFID čitač - kartice i privjesci
na mikrokontroleru ATtiny13

Izvor: www.serasidis.gr
Vasilis Serasidis

prijevod: Vadim naručio RadioLotsman

IN U poslednje vremeŠiroku popularnost stekli su različiti projekti bazirani na RFID ključevima, koji se koriste u sigurnosnim, sigurnosnim i kontrolnim sistemima. U nekim preduzećima i organizacijama takvi sistemi su dopunjeni specijalizovanim softver, služe za evidentiranje radnog vremena, evidentiranje materijalnih sredstava itd.

Svaki sistem identifikacije radio frekvencije (RFID) sastoji se od uređaja za čitanje (čitač, čitač ili ispitivač) i transpondera (poznatog i kao RFID oznaka, ponekad se koristi i termin RFID oznaka). U ovom članku ćemo pogledati jednostavan uređaj za čitanje RFID ključeva koji podržavaju EM4100 protokol i rade na frekvenciji od 125 kHz. Ovaj tip RFID ključevi mogu biti u obliku privjeska ili kreditne kartice (slika ispod).

Glavna komponenta čitača je mikrokontroler Atmel AVR ATtiny13 , koji čita 10-cifreni jedinstveni identifikacioni broj ključa i šalje ga na ASCII kodiranje By serijski interfejs(UART) brzinom od 2400 bps do Host uređaja. Drugim rečima, čitalac jeste odvojeni modul, povezan sa glavnim procesorom ili mikrokontrolerom sistema (slika 2).

Shematski dijagram RFID čitač prikazano na slici ispod:

Razmotrimo glavne karakteristike kola. Mikrokontroler koristi ugrađeni PWM modulator za generiranje PB0 izlaza pravougaoni impulsi sa frekvencijom od 125 kHz. Ako je izlaz PB0 log. 0 (padajući rub impulsa), tranzistor T1 je u zatvorenom stanju, a na kalem L1 se preko otpornika R1 primjenjuje napon napajanja +5 V. Uzlazni rub na izlazu PB0 (log 1) otvara tranzistor T1, a gornji terminal zavojnice je spojen na masu. U ovom trenutku zavojnica je spojena paralelno sa kondenzatorom C2, formirajući LC generator (oscilatorni krug). Tranzistor se prebacuje 125.000 puta u sekundi (125 kHz). Kao rezultat toga, zavojnica generira sinusni signal frekvencije od 125 kHz

Modul čitača generiše elektromagnetno polje čija se energija koristi za napajanje RFID ključa. Prijenos energije između RFID ključa i čitača temelji se na principu rada konvencionalnog transformatora: primarni namotaj transformatora stvara indukovanu emf u svim ostalim namotajima. U našem slučaju, primarni namotaj je zavojnica čitača, a sekundarni namotaj je zavojnica RFID ključa. Elementi D1, C3 i R5 formiraju demodulator signala amplitudne modulacije.

Razmjena podataka između ključa i čitača

Proces razmjene podataka između RFID ključa i čitača je vrlo jednostavan, ali promišljen do najsitnijih detalja. Ako RFID ključ mora prenijeti zapisnik. 0, zatim povezuje određeno „opterećenje“ na svoj izvor napajanja, što zahtijeva više energije koju prenosi čitač. To će uzrokovati blagi pad napona na strani čitača; Upravo taj nivo čitalac percipira kao balvan. 0

RFID ukucaj opšti slučaj prenosi 64 bita podataka u sljedećem nizu (slika 6):

  1. Prvih 9 bitova (uvijek log. 1) su početni bitovi, koji označavaju početak razmjene podataka.
  2. 4 bita - najmanji bitni bitovi korisnika matični broj(D00 - D03).
  3. 1 bit (P0) - bit parnosti prethodna 4 bita.
  4. 4 bita su najvažniji bitovi identifikacionog broja korisnika (D04 - D07).
  5. 1 bit (P1) - bit parnosti prethodna 4 bita.
  6. 4 bita - prvi dio 32-bitnog serijski broj RFID ključ (D08 - D11).
  7. 1 bit (P2) - bit parnosti prethodna 4 bita.
  8. Zatim se prenose sljedeće grupe od 4 bita ključnog serijskog broja, svaka sa paritetnim bitom.
  9. Zatim se 4 paritetna bita prenose kolonu po kolonu. Na primjer, bit parnosti PC0 za bitove D00, D04, D08, D12, D16, D20, D24, D28, D32 i D36.
  10. 1 stop bit.

Podaci (64-bitni niz) koji se prenose pomoću RFID ključa.

Integritet podataka provjerava mikrokontroler tako što izračunava paritetne bite za svaki red i kolonu i upoređuje ih sa podacima primljenim od RFID ključa.

Dizajn zavojnice.

Induktor bez okvira u čitaču promjera 120 mm namotan je žicom promjera 0,5 mm i ima 58 zavoja, ali autor preporučuje dodavanje još 2 - 3 zavoja prilikom namotavanja. Da bi se poboljšala efikasnost zavojnice i povećala udaljenost čitanja podataka RFID ključa, potrebno je kalibrirati oscilirajući krug. Ako, nakon povezivanja osciloskopa na spojnu točku između R1 i L1, vidite izobličene vrhove na ekranu uređaja (slika 7), onda to ukazuje na potrebu kalibracije zavojnice L1.

Izobličenje signala koji generiše zavojnica L1 ukazuje na potrebu kalibracije.

Kalibracija se može izvršiti na dva načina nakon napajanja modula.

  1. Povežite sonde osciloskopa na spojnu tačku između R1 i L1 i, povećanjem ili smanjenjem broja zavoja L1 zavojnice, eliminišite izobličenje signala.
  2. Ako nemate osciloskop, polako pomičite RFID ključ na zavojnicu dok se ključ ne prepozna, kao što je označeno zvučni signal. Ako je ključ detektiran s udaljenosti od 2 cm, potrebno je dodati/ukloniti nekoliko okreta, a zatim ponovo provjeriti udaljenost s koje se ključ može pouzdano očitati. Koristeći kalibraciju, autor šeme je postigao pouzdano očitavanje RFID ključa od 3 cm.

Prilikom programiranja mikrokontrolera potrebno je podesiti sljedeću konfiguraciju Fuse bitova: niži bajt 0x7A i visoki bajt 0x1F (mikrokontroler radi od ugrađenog generatora takta od 9,6 MHz, razdjelnika frekvencija sata onemogućen na 8). Programski kod zauzima 1024 bajta u memoriji mikrokontrolera - koristi se cjelokupni raspoloživi kapacitet memorije mikrokontrolera ATtiny13. Stoga je u budućnosti, prilikom proširenja funkcionalnosti čitača, bolje koristiti još jedan 8-pinski AVR mikrokontroler, na primjer ATtiny85.

Preuzimanja:

Izvorni kod programa mikrokontrolera (AVRStudio 6), firmver (.hex) i dijagram strujnog kola -

Iz svima omiljene (barem se stvarno nadam) serije "Pogled iznutra" - više od šest mjeseci. Nije da se nije imalo o čemu pisati ili pričati, samo su me obuzele stvari koje će postati tema jednog od mojih sljedećih članaka na Habréu (nadam se da neće biti odbačen, jer će da bude u potpunosti posvećen IT temama). U međuvremenu, imamo slobodan minut, hajde da shvatimo šta je RFID (radiofrekventna identifikacija) - pridružiće im se jednostavnije oznake - ili kako je jedan mali korak u tehnologiji dramatično promenio živote miliona, pa čak i milijardi ljudi oko svijeta.

Predgovor

Htio bih odmah rezervirati.

Prije početka rada na ovom članku, zaista sam se nadao da će se iz mikrofotografija, a posebno iz optike, informacija pronađenih na internetu i nekih saznanja iz prošlih publikacija, moći utvrditi gdje se i koji elementi mikrokola nalaze. Barem na "svakodnevnom" nivou: kažu, ovo je memorija, ovo je strujni krug, a ovdje se odvija obrada informacija. Zaista, čini se da je RFID najjednostavniji uređaj, najjednostavniji "kompjuter" kojeg možete zamisliti...

Međutim, život je napravio svoja prilagođavanja i sve što sam uspio pronaći: opći dijagram uređaja nove generacije oznaka, fotografije kako bi, na primjer, memorija trebala izgledati - ne znam ni zašto sam Ne obraćajte pažnju na ovo (možda će biti prilike za poboljšanje?! ), i skandale, intrige, otkrića A5 procesora iz chipworks-a.

Teorijski dio

Po tradiciji, počnimo s nekim uvodnim dijelom.
RFID
Istorija tehnologije prepoznavanja radio frekvencija - možda tako možemo nazvati sve zamislive i nezamislive varijante RFID (radio-frekventne identifikacije) - seže u 40-te godine 20. veka, kada su SSSR, Evropa i SAD aktivno razvijale sve vrste elektronska tehnologija.

U to vrijeme, svaki proizvod na struju još je bio novitet, tako da su se naučnici suočili sa neoranom poljem: gdje god bodnuo, kao u Crnozemlju, drška lopate - izraslo bi drvo. Procijenite sami: Maksvel je svoje zakone predložio tek pre pola veka (1884. godine). A teorije zasnovane na ovim jednačinama počele su se pojavljivati ​​2-3 decenije kasnije (između 1900. i 1914.), uključujući teoriju radio talasa (od njihovog otkrića, do modela modulacije signala, itd.). Osim toga, priprema i vođenje Drugog svjetskog rata ostavilo je traga na ovim prostorima.

Kao rezultat toga, do kraja 40-ih godina razvijeni su sistemi za prepoznavanje „prijatelj ili neprijatelj“, koji su bili nešto veći od opisanih, ali su radili na gotovo istom principu kao i moderne RFID oznake.

Prva demonstracija nečega bliskog modernom RFID-u izvedena je 1973. godine u Istraživačkoj laboratoriji Los Alamosa, a jedan od prvih patenata za ovu vrstu identifikacionog sistema primljen je deceniju kasnije - 1983. godine. Više detalja o istoriji RFID može se naći na Wiki i nekim drugim sajtovima ( i ).

Zbog ugrađene baterije, aktivne oznake imaju značajno veći radijus rad, dimenzije, složenije “punjenje” (na oznaku možete dodati termometar, higrometar ili čak cijeli GPS čip za pozicioniranje) i odgovarajuću cijenu.

Oznake se mogu klasificirati na različite načine: po radnoj frekvenciji (LF – niskofrekventna ~130KHz, HF – visokofrekventna ~14MHz i UHF – ultravisoka frekvencija ~900MHz), po vrsti memorije unutar oznake (čitaj- samo, napiši jednom i upiši jednom). Inače, NFC, toliko voljen i promoviran od strane svih proizvođača, odnosi se na HF opseg, koji ima niz dobro poznatih problema.

Ostale oznake
Nažalost, cijena RFID oznaka u odnosu na druge vrste identifikacije je prilično visoka, pa, na primjer, hranu i drugu „tradicionalnu“ robu i dalje kupujemo pomoću bar kodova (ili bar kodova), ponekad QR kodova i zaštite tzv. oznake za krađu (ili EAS - elektronski nadzor artikla) ​​pružaju zaštitu od krađe.

Tri najčešće vrste (sve fotografije preuzete sa Wiki):

Pred nama su mnoga divna otkrića, ponekad potpuno neočekivana i naravno teška geek pornografija u formatu HD!

Ako nekome teorija nije dovoljna, dobrodošli na ovu stranicu na engleskom jeziku.

Praktični dio

Dakle, koje su oznake pronađene u svijetu oko nas:


Lijeva kolona od vrha do dna: mapa moskovskog metroa, propusnica Aeroexpress, plastičnu karticu za pristup zgradi, RFID tag predstavljen od strane kompanije Perekrestok na izložbi RosNanoForum-2011. Desna kolona od vrha do dna: radio frekvencijska EAS oznaka, akustomagnetna EAS oznaka, bonus karta za moskovski javni prevoz sa magnetnom trakom, RFID kartica posjetitelja RosNanoForuma čak sadrži dvije oznake.

Prva će biti objavljena kartica moskovskog metroa - počnimo.

U prvom krugu. Karta za metro u Moskvi
Prvo potopite karticu u običnu vodu kako biste uklonili slojeve papira koji skrivaju samo srce ove "žige".


Ogoljena karta moskovskog metroa

Sada ga pažljivo pogledajmo pri malom uvećanju pomoću optičkog mikroskopa:


Mikrofotografije čipa kartice za pristup moskovskom metrou

Čip je prilično čvrsto fiksiran i želim da istaknem da su sve 4 “noge” pričvršćene za antenu - ovo će nam kasnije biti od koristi za poređenje sa drugom RFID oznakom. Preklapanjem plastične baze na pola gdje se nalazi čip i lagano protresanjem s jedne na drugu stranu, lako se oslobađa. Kao rezultat, imamo čip veličine iglene uši:


Optički mikrosnimci čipa odmah nakon odvajanja od antene

Pa, poigrajmo se trikom:


Promjena pozicije fokusa sa donjeg sloja na gornji sloj

Sada malo intrige.

Postoje glasine da Mikron razvija i proizvodi čipove za moskovski metro vlastitu snagu koristeći sličnu Mifare tehnologiju (u najmanju ruku, pričvršćivanje na antenu je drugačije - noge su drugačijeg oblika). Dana 22. avgusta, bez objave rata i izdajničko poslao apel Mikronu za pojašnjenje da li se ovaj čip u principu negdje može vidjeti, do 3.11 nije bilo odgovora. Jedan od novinara (naime, Alexander Erlikh) na IXBT forumu je također namjeravao da razjasni ove informacije od predstavnika Mikron-a, ali dalje ovog trenutka stvari i dalje postoje, odnosno zvanični predstavnici Microna izbegavaju da odgovore na direktno postavljeno pitanje.

Karta o kojoj smo gore govorili je očigledno proizvedena (ili samo montirana na antenu?) u preduzeću Mikron (Zelenograd) - pogledajte linkove ispod - koristeći tehnologiju NXP-a, poznate kompanije u RFID krugovima, što jasno nagovještavaju 3 ogromne slova i godina izdavanja tehnologije (a možda i godina proizvodnje) na gornjem sloju metalizacije čipa. Ako pretpostavimo da se 2009. odnosi na godinu kada je tehnologija lansirana, a skraćenica CUL1V2 se dešifruje kao Circuit ULTralite 1 Version 2 (tu pretpostavku potvrđuje i ova vijest), onda na NXP web stranici možete pronaći detaljan opis ovih čips (zadnja dva reda na listi)

Inače, prošle godine je za učesnike Internet olimpijade o nanotehnologiji organizovana ekskurzija u tvornicu Micron (foto i video reportaže), tako da nema smisla govoriti da oprema tamo miruje, ali i konstataciju "momak u belom mantilu" da proizvode oznake po 70 nm standardima, pitao bih se...

Prema statistikama prikupljenim nakon analize čipova od 109 karata za metro (prilično reprezentativan uzorak), prema normalnoj distribuciji, šanse da se pronađe „neobična“ karta su ~109^1/2 ili oko 10%, ali se tope sa svaka otvorena karta...

Pažljivo oko je već uočilo glavnu razliku između dva Mifare čipa - natpis Philips2001. Naime, Philips je još 1998. godine kupio američkog proizvođača mikroelektronike Mikron (ne brkati ga sa našim Zelenogradskim Mikron). A 2006. godine, NXP se odvojio od Philipsa.

Lako je uočiti i oznaku CLU1V1C, koja na osnovu gore navedenog znači Circuit ULTralite 1 Version 1C. Odnosno, ova oznaka je prethodnik Mifarea, koji koristi moskovski metro, i stoga je kompatibilan s njim u svojim glavnim parametrima. Međutim, kao iu prethodnom slučaju, 2001. je indikacija godine razvoja i implementacije tehnologije ili godine proizvodnje. Čudno je da Aeroexpress koristi zastarjele oznake...

U trećem krugu. Plastična kartica
Jednog dana sam odlučio jednom od mojih prijatelja pokazati članke i fotografije na Habrahabru. Zatim je pitao da li ima nepotrebna kartica za sljedeći članak o RFID-u. Do tada se tek preselila da studira na EPFL-u i dala mi karticu koja omogućava pristup jednoj od zgrada Moskovskog državnog univerziteta. Kartica je, shodno tome, bez ikakvih oznaka, a nisam siguran ni da išta piše na njoj, osim uobičajenog ključa za ulazak u zgradu.
Kartica je potpuno plastična, pa smo je odmah stavili u aceton na bukvalno nekoliko desetina minuta:


Uzimanje acetonskih kupki

Unutra je sve prilično standardno - antena i čip, međutim, ispostavilo se da su na malom komadu PCB-a. Nažalost, bez ikakvih identifikacionih oznaka - tipičan kineski noname. Jedino što možete znati o ovom čipu i kartici je da su napravljeni/pripadaju nekom TK41 standardu. Na rasprodajama ima puno takvih kartica kao što su ali-baba i dealextreme.

U četvrtom krugu. Raskrsnica
Zatim želim pogledati dvije oznake predstavljene na izložbi RosNanoForum 2011. Prva od njih je predstavljena s velikom patosom, rekavši da je to skoro panaceja za lopove i krađu. I općenito, ova oznaka će omogućiti trgovinama da u potpunosti pređu na samoposluživanje. Nažalost, ispostavilo se da je efektivni menadžer malo više nego potpuno nekompetentan u pitanjima školske fizike. I nakon prijedloga da se testira efikasnost njega i oznake pomoću jakog magneta pričvršćenog za oznaku, brzo je zataškao temu...

Nakon par kupovina u SmartShop-u, ostalo mi je nekoliko oznaka na raspolaganju. Nakon što smo jedan od njih očistili od ljepila i bijelog zaštitnog sloja, vidimo sljedeće:


Nova etiketa za lanac trgovina Perekrestok

Radimo isto što i Mifare, pažljivo ga odvojimo od polimerne baze i antene i stavimo na sto optičkog mikroskopa:


Optičke mikrofotografije oznake namijenjene za korištenje u SmartShop-u

Sretnom koincidencijom (ili nas je ljepilo iznevjerilo, ili je ovo bilo namjerno), oznaka se brzo otkinula sa podloge, a njena površina je ostala bez tragova ljepila. Skrenuo bih vam pažnju da ako Mifare ima sva 4 kontakta pričvršćena na antenu (2 kontakta na svakom kraju), ovdje vidimo da su dva kontakta spojena na dva mala jastučića koji nisu u kontaktu sa antenom.

Hajde da se malo poigramo sa fokusom različitim dijelovima oznake:


Promjena fokusa...


Maksimalno uvećanje optičkog mikroskopa

Poslednja fotografija u gornjem levom uglu očigledno prikazuje EEPROM memorijski modul, pošto zauzima oko trećinu površine čipa i ima „pravilnu“ strukturu.

Danas ću govoriti o RFID modulu RC522, baziranom na MFRC522 čipu. Napajanje 3.3V, domet detekcije do 6cm. Dizajniran za čitanje i RFID zapisi oznake sa frekvencijom od 13,56 MHz. Frekvencija in u ovom slučaju je veoma važno, pošto RFID oznake postoje u tri frekventna opsega:


  • Oznake LF opsega (125-134 kHz)

  • Oznake HF opsega (13,56 MHz)

  • Oznake UHF opsega (860-960 MHz)

Ovaj modul radi sa oznakama HF opsega, posebno sa MIFARE protokolom.

Za rad sa modulom možete koristiti standardna biblioteka RFID uključen Arduino IDE, međutim, postoji još jedna biblioteka napisana posebno za ovaj modul - MFRC522 (1 MB). Obje biblioteke su prilično zgodne, ali MFRC522 ima više posebne funkcije, što omogućava smanjenje konačnog programskog koda što je više moguće.

Veza

Neki ljudi će naići na problem - naziv pinova u većini lekcija i vodiča možda neće odgovarati pinoutu na vašem modulu. Ako skice ukazuju na SS pin, ali ga vaš modul nema, onda je najvjerovatnije označen kao SDA. U nastavku ću dati tabelu povezivanja modula za najčešće ploče.

MFRC522 Arduino Uno Arduino Mega Arduino Nano v3

Arduino Leonardo/Micro

Arduino Pro Micro
RST 9 5 D9 RESET/ICSP-5 RST
SDA(SS) 10 53 D10 10 10
MOSI 11 (ICSP-4) 51 D11 ICSP-4 16
MISO 12 (ICSP-1) 50 D12 ICSP-1 14
SCK 13 (ICSP-3) 52 D13 ICSP-3 15
3.3V 3.3V 3.3V Stabilizator 3.3V Stabilizator 3.3V Stabilizator 3.3V
GND GND GND GND GND GND

SS(SDA) i RST kontrolni pinovi su navedeni na skici, tako da ako se vaša ploča razlikuje od one koju ću koristiti u svojim primjerima, a ja koristim UNO R3, navedite pinove iz tabele na početku skice :


#defini SS_PIN 10 #defini RST_PIN 9

Primjer br. 1: Čitanje broja kartice

Pogledajmo primjer iz RFID biblioteke - cardRead. Ne prikazuje podatke sa kartice, već samo njen broj, što je obično dovoljno za mnoge zadatke.


#include #include #define SS_PIN 10 #define RST_PIN 9 RFID rfid(SS_PIN, RST_PIN); // Podaci o broju kartice pohranjeni su u 5 varijabli, pamtit ćemo ih da provjerimo da li smo takvu karticu već pročitali int serNum0; int serNum1; int serNum2; int serNum3; int serNum4; void setup() ( Serial.begin(9600); SPI.begin(); rfid.init(); ) void loop() ( if (rfid.isCard()) ( if (rfid.readCardSerial()) ( // Uporedite broj kartice sa brojem prethodne kartice ako (rfid.serNum != serNum0 && rfid.serNum != serNum1 && rfid.serNum != serNum2 && rfid.serNum != serNum3 && rfid.serNum != serNum ! * Ako je kartica nova, pročitajte */ Serial.println(" "); Serial.println("Kartica pronađena"); serNum0 = rfid.serNum; serNum1 = rfid.serNum; serNum2 = rfid.serNum; serNum3 = rfid .serNum; serNum4 = rfid.serNum; //Izlaz broja kartice Serial.println("Cardnumber:"); Serial.print("Dec: "); Serial.print(rfid.serNum,DEC); Serial.print( )", "); Serial .print(rfid.serNum,DEC); Serial.print(", "); Serial.print(rfid.serNum,DEC); Serial.print(", "); Serial.print( rfid.serNum,DEC); Serial.print(", "); Serial.print(rfid.serNum,DEC); Serial.println(" "); Serial.print("Hex: "); Serial.print(rfid .serNum,HEX); Serial .print(", "); Serial.print(rfid.serNum,HEX); Serial.print(", "); Serial.print(rfid.serNum,HEX); Serial.print(", "); Serial.print(rfid.serNum,HEX); Serial.print(", "); Serial.print(rfid.serNum,HEX); Serial.println(" "); ) else ( /* Ako je ovo već pročitana kartica, samo odštampajte tačku */ Serial.print("."); ) ) ) rfid.halt(); )

Skica je učitana, LED za napajanje na modulu svetli, ali modul ne reaguje na karticu? Nema potrebe za panikom ili trčanjem u potrazi za “ispravnim” primjerima rada. Najvjerojatnije jednostavno nema kontakta na jednoj od igala - rupe na ploči su nešto veće od debljine kratkospojnika, pa ih vrijedi pokušati preurediti. Da li LED na ploči ne svijetli? Pokušajte promijeniti kratkospojnik koji vodi na 3,3V i provjerite je li spojen na 3,3V na ploči; napajanje od 5V može lako ubiti vašu ploču.

Recimo da sve radi za vas. Zatim, čitanje RFID oznaka na monitoru serijski port videcemo sledece:


Ovdje sam pročitao 3 različite oznake, i kao što vidite, on je uspješno pročitao sve 3.

Primjer #2: Čitanje podataka sa kartice

Razmotrimo sofisticiraniju opciju - čitat će ne samo broj kartice, već i sve podatke dostupne za čitanje. Ovaj put uzmimo primjer iz biblioteke MFRC522 - DumpInfo.


#include #include #define RST_PIN 9 // #define SS_PIN 10 // MFRC522 mfrc522(SS_PIN, RST_PIN); // Kreirajte instancu MFRC522 void setup() ( Serial.begin(9600); // Inicijalizirajte monitor serijskog porta dok (!Serial); // Ne radite ništa dok se ne otvori (za Arduino na ATMEGA32U4 čipu) SPI.begin( ) ; // Inicijaliziraj SPI sabirnicu mfrc522.PCD_Init(); // Inicijaliziraj RFID modul ShowReaderDetails(); // Prikaži podatke o MFRC522 modulu Serial.println(F("Skeniraj PICC da vidi UID, tip i blokove podataka ..." )); ) void loop() ( // Tražim nova mapa if (! mfrc522.PICC_IsNewCardPresent()) ( return; ) // Odaberite jednu od kartica if (! mfrc522.PICC_ReadCardSerial()) ( return; ) // Izlaz podataka sa kartice mfrc522.PICC_DumpToSerial(2&(mfrc5) ); ) void ShowReaderDetails() ( // Dobijte bajt broja verzije modula v = mfrc522.PCD_ReadRegister(mfrc522.VersionReg); Serial.print(F("MFRC522 verzija softvera: 0x")); Serial.print(v, HEX); if (v == 0x91) Serial.print(F(" = v1.0")); else if (v == 0x92) Serial.print(F(" = v2.0")); else Serial.print( F (" (nepoznato)")); Serial.println(""); // Kada primimo 0x00 ili 0xFF, prijenos podataka je prekinut ako ((v == 0x00) || (v == 0xFF)) ( Serial .println( F("UPOZORENJE: Greška u komunikaciji, da li je MFRC522 ispravno povezan?")); ) )

Ako je prethodni primjer radio bez grešaka, ni to ne bi trebao biti problem. Međutim, ispostavilo se da propusnica za metro, koja je bez problema dala broj kartice u prethodnom primjeru, u ovome ima neotkriven tip podataka, a modul nije mogao pročitati ništa osim broja kartice.

Kao rezultat toga, nakon čitanja podataka sa kartice, dobijamo njen tip, identifikator i podatke iz 16 memorijskih sektora. Treba napomenuti da se MIFARE 1K standardne kartice sastoje od 16 sektora, svaki sektor se sastoji od 4 bloka, a svaki blok sadrži 16 bajtova podataka.


Primjer br. 3: Upisivanje novog identifikatora na karticu

U ovom primjeru ćemo pogledati promjenu identifikatora kartice (UID). Važno je znati da ne podržavaju sve kartice promjenu ID-a. Kartica se može ponovo upisivati, ali to samo znači da se podaci mogu ponovo upisivati. Nažalost, kartice koje sam imao u rukama nisu podržavale prepisivanje UID-a, ali ću ovdje dati skicni kod za svaki slučaj.


#include #include /* Postavite novi UID ovdje */ #define NEW_UID (0xDE, 0xAD, 0xBE, 0xEF) #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522(SS_PIN, RST_PIN); MFRC522::MIFARE_Key ključ; void setup() ( Serial.begin(9600); while (!Serial); SPI.begin(); mfrc522.PCD_Init(); Serial.println(F("Upozorenje: ovaj primjer prepisuje UID vaše UID promjenjive kartice, koristite pažljivo!")); za (bajt i = 0; i< 6; i++) { key.keyByte[i] = 0xFF; } } void loop() { if (! mfrc522.PICC_IsNewCardPresent() || ! mfrc522.PICC_ReadCardSerial()) { delay(50); return; } // Считываем текущий UID Serial.print(F("Card UID:")); for (byte i = 0; i < mfrc522.uid.size; i++) { Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "); Serial.print(mfrc522.uid.uidByte[i], HEX); } Serial.println(); // Записываем новый UID byte newUid = NEW_UID; if (mfrc522.MIFARE_SetUid(newUid, (byte)4, true)) { Serial.println(F("Wrote new UID to card.")); } // Halt PICC and re-select it so DumpToSerial doesn"t get confused mfrc522.PICC_HaltA(); if (! mfrc522.PICC_IsNewCardPresent() || ! mfrc522.PICC_ReadCardSerial()) { return; } // Считываем данные с карты Serial.println(F("New UID and contents:")); mfrc522.PICC_DumpToSerial(&(mfrc522.uid)); delay(2000); }

Primjer br. 4: Upisivanje podataka na karticu

Evo konačno do čega smo toliko dugo dolazili - snimanja podataka na karticu. “Najslađi” dio rada sa modulom je mogućnost da napravite kopiju postojeće kartice, dodate ili promijenite nešto, ovo je mnogo zanimljivije od jednostavnog čitanja.

Promijenimo jedan od blokova podataka na mapi:


#include #include #define RST_PIN 9 #define SS_PIN 10 MFRC522 mfrc522(SS_PIN, RST_PIN); MFRC522::MIFARE_Key ključ; void setup() ( Serial.begin(9600); while (!Serial); SPI.begin(); mfrc522.PCD_Init(); // Pripremite ključ // koristite ključ FFFFFFFFFFFFh koji je standard za prazne kartice za (bajt i = 0; i< 6; i++) { key.keyByte[i] = 0xFF; } Serial.println(F("Scan a MIFARE Classic PICC to demonstrate read and write.")); Serial.print(F("Using key (for A and B):")); dump_byte_array(key.keyByte, MFRC522::MF_KEY_SIZE); Serial.println(); Serial.println(F("BEWARE: Data will be written to the PICC, in sector #1")); } void loop() { // Ждем новую карту if (! mfrc522.PICC_IsNewCardPresent()) return; // Выбираем одну из карт if (! mfrc522.PICC_ReadCardSerial()) return; // Показываем подробности карты Serial.print(F("Card UID:")); dump_byte_array(mfrc522.uid.uidByte, mfrc522.uid.size); Serial.println(); Serial.print(F("PICC type: ")); byte piccType = mfrc522.PICC_GetType(mfrc522.uid.sak); Serial.println(mfrc522.PICC_GetTypeName(piccType)); // Проверяем совместимость if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI && piccType != MFRC522::PICC_TYPE_MIFARE_1K && piccType != MFRC522::PICC_TYPE_MIFARE_4K) { Serial.println(F("This sample only works with MIFARE Classic cards.")); return; } // В этом примере мы используем первый сектор данных карты, блок 4 byte sector = 1; byte blockAddr = 4; byte dataBlock = { // Данные, которые мы запишем на карту 0x01, 0x02, 0x03, 0x04, // 1, 2, 3, 4, 0x05, 0x06, 0x07, 0x08, // 5, 6, 7, 8, 0x08, 0x09, 0xff, 0x0b, // 9, 10, 255, 12, 0x0c, 0x0d, 0x0e, 0x0f // 13, 14, 15, 16 }; byte trailerBlock = 7; byte status; byte buffer; byte size = sizeof(buffer); // Аутентификация Serial.println(F("Authenticating using key A...")); status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, trailerBlock, &key, &(mfrc522.uid)); if (status != MFRC522::STATUS_OK) { Serial.print(F("PCD_Authenticate() failed: ")); Serial.println(mfrc522.GetStatusCodeName(status)); return; } // Показываем текущие данные сектора Serial.println(F("Current data in sector:")); mfrc522.PICC_DumpMifareClassicSectorToSerial(&(mfrc522.uid), &key, sector); Serial.println(); // Читаем данные из блока Serial.print(F("Reading data from block ")); Serial.print(blockAddr); Serial.println(F(" ...")); status = mfrc522.MIFARE_Read(blockAddr, buffer, &size); if (status != MFRC522::STATUS_OK) { Serial.print(F("MIFARE_Read() failed: ")); Serial.println(mfrc522.GetStatusCodeName(status)); } Serial.print(F("Data in block ")); Serial.print(blockAddr); Serial.println(F(":")); dump_byte_array(buffer, 16); Serial.println(); Serial.println(); // Аутентификация Serial.println(F("Authenticating again using key B...")); status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_B, trailerBlock, &key, &(mfrc522.uid)); if (status != MFRC522::STATUS_OK) { Serial.print(F("PCD_Authenticate() failed: ")); Serial.println(mfrc522.GetStatusCodeName(status)); return; } // Записываем данные в блок Serial.print(F("Writing data into block ")); Serial.print(blockAddr); Serial.println(F(" ...")); dump_byte_array(dataBlock, 16); Serial.println(); status = mfrc522.MIFARE_Write(blockAddr, dataBlock, 16); if (status != MFRC522::STATUS_OK) { Serial.print(F("MIFARE_Write() failed: ")); Serial.println(mfrc522.GetStatusCodeName(status)); } Serial.println(); // Читаем данные снова, чтобы проверить, что запись прошла успешно Serial.print(F("Reading data from block ")); Serial.print(blockAddr); Serial.println(F(" ...")); status = mfrc522.MIFARE_Read(blockAddr, buffer, &size); if (status != MFRC522::STATUS_OK) { Serial.print(F("MIFARE_Read() failed: ")); Serial.println(mfrc522.GetStatusCodeName(status)); } Serial.print(F("Data in block ")); Serial.print(blockAddr); Serial.println(F(":")); dump_byte_array(buffer, 16); Serial.println(); Serial.println(F("Checking result...")); byte count = 0; for (byte i = 0; i < 16; i++) { if (buffer[i] == dataBlock[i]) count++; } Serial.print(F("Number of bytes that match = ")); Serial.println(count); if (count == 16) { Serial.println(F("Success:-)")); } else { Serial.println(F("Failure, no match:-(")); Serial.println(F(" perhaps the write didn"t work properly...")); } Serial.println(); // Выводим данные Serial.println(F("Current data in sector:")); mfrc522.PICC_DumpMifareClassicSectorToSerial(&(mfrc522.uid), &key, sector); Serial.println(); mfrc522.PICC_HaltA(); mfrc522.PCD_StopCrypto1(); } void dump_byte_array(byte *buffer, byte bufferSize) { for (byte i = 0; i < bufferSize; i++) { Serial.print(buffer[i] < 0x10 ? " 0" : " "); Serial.print(buffer[i], HEX); } }

I kao rezultat, dobivamo karticu s modificiranim blokom podataka:


Sada, nakon što ste naučili čitati i pisati blokove podataka o karticama, možete eksperimentirati s oznakama koje najvjerovatnije imate - propusnice, putne karte javni prijevoz. Pokušajte čitati i pisati podatke sa ovih kartica, par duplih prolaza nikad ne škodi, zar ne?)

To je sve, pretplatite se i pratite publikacije. Sljedeći put ću vam reći i pokazati kako se koristi standard prikaz znakova 1602 dodaje prilagođene karaktere, u suštini dodajući grafiku na ekran.

  • Programiranje mikrokontrolera
  • Kao što znate, mnogi pristupni sistemi koriste RFID kartice EM-Marin standarda sa frekvencijom od 125 KHz. Interfon u mojoj kući nije bio izuzetak. Jedan problem - bilo bi lijepo naučiti kako kopirati takve kartice, jer cijene za njihovo kopiranje nisu ohrabrujuće. Naravno, postoji dosta shema za fotokopir aparate na mreži (a Kinezi prodaju svoje kopirke za novčiće - međutim, često stavljaju svoju lozinku na diskove prilikom kopiranja), ali zašto ne napraviti svoj vlastiti fotokopir aparat? O tome je članak u nastavku.

    Vrijedno je započeti razvoj fotokopirnog uređaja tako što ćete saznati na što se takve oznake mogu kopirati? Nakon čitanja foruma, možete saznati da su najčešće praznine za kopiranje T5577, T5557, EM4305.

    Sada nam treba dijagram. Uzmimo analogni dio takvog fotokopirnog uređaja od RECTO-a i spojimo ga na atmega8 mikrokontroler. Hajde da dodamo konvertor nivoa za povezivanje na COM port baziran na max232 (oni koji zele mogu koristiti ST232 ili nesto drugo za povezivanje preko USB-a, ali ja imam COM port na kompjuteru, kao i USB-COM adapter, tako da je to moj zadatak nije stajao).

    Dobićete ovaj dijagram:

    Kakva je ona? Dual emitter follower, oscilirajući krug, detektor i RC filteri. Zbog činjenice da RC filteri imaju različite vremenske konstante, upoređivanjem nivoa napona između stupnjeva, moguće je izolovati promjenu signala RFID oznake. Ovim zadatkom će se baviti komparator ugrađen u atmega8. Generisanje signala od 125 KHz će biti obezbeđeno od strane PWM kontrolera ugrađenog u atmega8.

    Kombinacija RFID oznake i čitača formira transformator, gdje je oznaka sekundarni namotaj. Informacija se prenosi oznakom promjenom opterećenja sekundarnog namotaja. Kao rezultat toga, struja u zavojnici čitača (primarnom namotu) se mijenja. Gornji analogni dio kola je odgovoran za izolaciju ovih strujnih impulsa. Oscilatorno kolo potrebno je konfigurirati na maksimalni napon V kontrolna tačka, na primjer, namotavanje/namotavanje zavoja zavojnice. Istina, kažu da je bolje imati napon malo manji od maksimalnog - radi stabilnije. Imam oko 40 V na mojoj testnoj tački.

    Kopirana oznaka koristi Manchester kodiranje. Da bi se dešifrirao ovaj kod, dovoljno je preskočiti tri četvrtine perioda utora bita za bilo kakvu promjenu ivice signala i, na osnovu pada signala koji ga prati, snimiti vrijednost bita koja će odgovarati vrijednosti signala nakon pada. Prilikom dekodiranja vrijedi odrediti prozor u kojem bi trebao doći do pada signala - ne više od polovine perioda bitnog slota.

    Metodu za dekodiranje Manchesterskog kodiranja i kod za ovo sam preuzeo od Shadsa. Mogli ste, naravno, da napišete svoj, ali ja sam žurio da pokrenem kopir aparat - želeo sam da se uverim da kolo radi i da li su oznake prihvaćene. Dakle, ovaj fragment je ostao u kodu kopirke. Takođe se pokazalo da je moj komparator konfigurisan obrnuto od onoga što je potrebno kodu za dekodiranje. Promijenjen u kodu. Dakle, dobili smo nizove nula i jedinica. Kako mogu od njih dobiti kod kartice?

    I vrlo je jednostavno. Pretpostavimo da broj kartice prema grickanju ima oblik AB CD EF GH IJ. Mapa pokazuje ovo:

    1) Devet jedinica na početku;
    2) Grickanje A;
    3) Nibble paritet A (1 bit);
    4) Grickanje B;
    5) Nibble paritet B (1 bit);

    16) Grickanje I;
    17) Nibble paritet I (1 bit);
    18) Nibble J;
    19) Nibble paritet J (1 bit);
    20) Nibble pariteta kolone za nibble A B C D E F G H I J;
    21) Bit 0.

    Čitamo svih 64 bita, dešifrujemo i dobijamo 40 bita koda kartice. Logično je da ako sami izdamo takav kod, zatvarajući zavojnicu kartice priključene na čitač, dobijemo emulator kartice. Ali sada nas on ne zanima.

    Naučili smo čitati kartu, ali kako možemo prenijeti podatke na kartu? Da biste to učinili, jednostavno morate uključiti ili isključiti frekvenciju od 125 KHz u skladu s komunikacijskim protokolom s karticom. Tokom „tišine” čitača, kartica se napaja pohranjenom energijom.

    T5557/T5577 praznine su u potpunosti kompatibilne jedna s drugom u smislu protokola snimanja, međutim, imaju malo drugačiji minimum i maksimalna vremena impulsa (srećom, vremena T5557 se preklapaju sa T5577). EM4305 ima drugačiji protokol snimanja.

    Za snimanje T5557 koristio sam kod BolshoyK. Tabela ispod prikazuje parametre signala za privezak za ključeve T5557.

    Snimanje počinje sa StartGape signalom - potrebno je da isključite signal od 125 KHz na otprilike 300 µs. Ovo je signal kartici da će podaci sada početi da se prenose na nju. Zatim biste trebali prenijeti informacije u prazno. Kodiranje prenesenih podataka je isti Manchester.

    Praznine T5557/T5577 i EM4305 su multifunkcionalne i mogu različite vrste modulacije, lozinke za podršku i još mnogo toga. Svaki disk na ploči ima skup 32-bitnih blokova. Namjena ovih blokova je drugačija. Neki imaju izdanu šifru ključa (potrebna su dva bloka). U ostalima - konfiguracija. Treće, identifikator proizvođača. Koristićemo ograničenu funkcionalnost, tako da oni koji žele da razumeju šta svi ovi bitovi znače mogu pogledati dokumentaciju za praznine (priložio sam je u arhivu).

    Blokovi su sakupljeni u dvije stranice (0 i 1).

    Na nultoj stranici nalazi se konfiguracijski blok sa indeksom 0. To je ono što ćemo postaviti. Za T5557/T5577 imat ćemo sljedeće konfiguracijske bajtove: 0x00.0x14.0x80.0x40 u skladu sa tabelom iz dokumentacije (crvenom bojom sam označio modove odabrane jednim bitom):

    Tako smo odabrali: frekvenciju prenosa podataka RF/64 (125 KHz/64), kodiranje tipa Manchester, izdavanje blokova do sekunde (u blokovima 1 i 2 imaćemo šifru koju izdaje kartica). Prije pisanja, mora se poslati opcode (2 bita opcode) i jedan latch bit (lockbit). Opkodovi 10b i 11b prethode upisu podataka za stranice 0 i 1 (najmanji bitni bit specificira broj stranice, bit najznačajniji specificira kod za pisanje stranice). Izdajemo 10b za operacijski kod (sav posao se obavlja sa nultom stranicom) i 0b za latch bit. Nakon prijenosa svih ovih podataka, potrebno je prenijeti trobitnu adresu stranice koja se upisuje. Svi prijenosi podataka za T5557/T5577 se izvode od najznačajnijeg bita do najmanjeg bita.

    Postavljanjem koda kartice u blok 1 i 2 i konfiguracijom u bloku 0, možete dobiti duplikat RFID oznake. Kao što vidite, sve je jednostavno.

    Sljedeća vrsta praznina je EM4305. Tako da sam morao sam da se pozabavim snimanjem ove praznine. Također se sastoji od blokova od 32 bita, ali im je namjena drugačija.

    Kodiranje podataka koji se prenose na karticu zasniva se na razlikama u vremenskom intervalu. Ako je bilo razlike u vremenskom intervalu, onda je nula, a ako nije bilo je jedan. Konfiguraciona riječ je pohranjena u bajtu 4 i za sebe sam je definirao na sljedeći način: 0x5F,0x80,0x01,0x00 (Manchester kodiranje, RF/64, izlazna riječ 6). U riječima 5 i 6 pišem kod kartice (istih 64 bita koje proizvodi kartica). EM4305 zahtijeva da se prijenos izvrši od najmanjeg bitnog do najznačajnijeg. Kartica razumije da s njom počinje razmjena nakon što joj da kombinaciju impulsa:

    1. Isključujemo polje na 48 µs.
    2. Uključujemo polje na 96 μs.
    3. Isključite polje na 320 µs.
    4. Uključujemo polje na 136 μs.
    5. Onemogućite polje do sljedeće naredbe.
    Naredba za upisivanje bloka na kartu se prenosi na sljedeći način:
    1. Šaljemo gornji niz impulsa.
    2. Šaljemo 0b.
    3. Prenosimo CC0-CC1 i njihov paritet P. (0101b za snimanje, vidi tabelu ispod).
    4. Prenosimo adresu bloka (vidi tabelu), dvije zadnje nule i parnost adrese.
    5. Prenosimo blok podatke (32 bita).

    Format komande


    Komandni kodovi

    Block Address Format

    Ovo postavlja konfiguraciju praznine EM4305 i njen kod.

    Zapravo, jednostavnom fotokopir aparatu ne treba ništa više.

    Napravio sam nekoliko verzija fotokopir aparata sa različitim displejima. Na primjer, evo kopir aparata sa 1602 displejom:

    A evo i snimka kopir aparata koji radi na displeju LPH9157-02.

    Najbolji članci na ovu temu