Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Programet
  • Bërja e një bllokimi RFID duke përdorur Arduino. Bëjeni vetë bllokimin elektronik RFID në një mikrokontrollues

Bërja e një bllokimi RFID duke përdorur Arduino. Bëjeni vetë bllokimin elektronik RFID në një mikrokontrollues

Etiketa EM4100 ruan 64 bit të dhëna, që do të thotë se dizajni duhet të përmbajë një regjistër zhvendosjeje 64-bitësh të përbërë nga tetë regjistra 8-bit 74HC165. Regjistri rivendoset pas çdo 64 ndërrimi për të rivendosur të dhënat dhe për të filluar nga e para. Të dhënat në hyrjet e regjistrit janë si më poshtë:
  • Modeli i kohës: nëntë njësi
  • ID-ja e prodhuesit/versionit: 2 blloqe me 5 bit, nga të cilët 4 bit janë të dhëna dhe i pesti është barazi
  • Identifikues unik: 8 blloqe me 5 bit, nga të cilët 4 bit janë të dhëna dhe i pesti është barazi
  • Shuma kontrolluese: 4 bit barazie, të numëruara për kolonë
  • Biti i ndalimit: "0"

Edhe etiketat e koduara janë të prekshme ndaj një sërë sulmesh. Për më tepër, po bëhet gjithnjë e më e lehtë të imitohen etiketat në telefonat inteligjentë me NFC (të cilët zakonisht funksionojnë në 13,56 MHz). Thjesht shkruani saktë një aplikacion për modulimin e fushës dhe mund të bëni çfarë të doni.

Si justifikim standard, më lejoni t'ju kujtoj se autori (Dhe një përkthyes! - shënim përkthimi) nuk mban asnjë përgjegjësi për pasojat e përdorimit të informacionit nga ky nen. Lexuesi duhet të jetë përgjegjës për të gjitha veprimet e tij.

Kornizë

Ndonjehere Shumë me fat. Një kuti e bukur do t'i vinte në punë pikërisht tani, kur prototipi të ketë përfunduar dhe bordi i qarkut të printuar të jetë porositur. Dhe ishte në këtë kohë që Fleming mbaroi montimin dhe lëshoi ​​në treg makinën e prerjes me lazer OSAA PhotonSaw. Pas një viti pune në projekt, lazeri është gati të presë pjesët e para. Flemming dhe Roon bëjnë rregullimet përfundimtare dhe zëvendësojnë kapakun e aluminit të kabinetit të lazerit. Mund ta imagjinoni se sa të entuziazmuar ishim të gjithë kur pamë që kjo gjë funksiononte.

Me makinën në punë, ne ishim në gjendje të testonim projektin tonë jeta reale. Strehimi për etiketën tonë RFID ishte bërë nga pleksiglas 2 mm. Ky trup është objekti i parë i bërë në PhotonSaw, po!

Lindi ideja për të vendosur spiralen në pjesën e jashtme të trupit. Në fillim u vendos që të përdoret gjysma e lartësisë së trupit, por kjo nuk funksionoi në praktikë (për rrjedhojë, vrimat shtesë në anët e gjata nuk përdoren). Spiralja përshtatet në mënyrë të përkryer rreth perimetrit të të gjithë trupit, megjithëse kisha dyshime nëse mbështjellja drejtkëndore (105x55 mm) do të ishte shumë e madhe për komunikimin normal elektromagnetik.

Spiralja e provës është mbështjellë, pa asnjë llogaritje, me tel 0.4 mm në 66 rrotullime. Dhe, padyshim, ne ishim përsëri me fat, sepse spiralja doli saktësisht siç duhej, me një induktivitet prej 645 μH, me një etiketë të lidhur që jep një frekuencë rezonante prej 125.2 kHz. Testimi në një lexues dere tregoi se prototipi funksionon mirë me këtë spirale.

Me një spirale jashtë strehimit, trashësia e kësaj të fundit mund të zvogëlohet. Trashësia e brendshme tani varet vetëm nga lartësia e pjesëve në tabelë, dhe duke marrë parasysh trashësinë e tabelës duhet të jetë rreth 6 mm. Gjithashtu, do të ishte mirë të shtoni disa gdhendje. Flemming propozoi rrumbullakimin e anëve të trupit për arsye estetike dhe ergonomike. Trup i lakuar Gjithashtu do të jetë më mirë të mbrohen anët e spirales, sepse aty ku nuk ka shumë tension, mbështjelljet e telit duan të dalin jashtë.

Makina PhotonSaw nuk është ende në gjendje perfekte: gdhendje e ndezur mbulesa e sipërme zbriti ndjeshëm. Duhet të finalizohet përpara prodhimit. versioni perfundimtar banesat. Shtigjet e lakuara gjithashtu iu nënshtruan një gabimi llogaritjeje në softuer pasi rreze nuk u kthye pozicioni fillestar pasi kalon një trajektore të mbyllur. Por gjithsesi, kthesat duken vërtet të lëmuara.

Asambleja e PCB

Bordi i porositur ka mbërritur:

Asambleja nuk ishte shumë e vështirë. Pasta e saldimit u vendos me shabllon në tabelë, të gjitha pjesët u vendosën dhe më pas u ngjitën në një furrë të bërë vetë.

Nëpërmjet kapacitetit të izolimit (47 pF ka një rezistencë prej afërsisht 27 kOhm në një frekuencë prej 125 kHz) dhe diodave mbrojtëse, rryma furnizohet në shinat e fuqisë. Energjia që vjen nga spiralja është e mjaftueshme për të ruajtur tensionin e furnizimit prej rreth 1 V. Rryma mund të arrijë 250-500 μA. Çuditërisht, çipat 74HC duket se funksionojnë me këtë furnizim. Fatkeqësisht, nën këtë lloj tensioni, ndodhin disa gjëra mjaft të çuditshme. Çipat 74HC kanë një qark të brendshëm të rivendosjes dhe duhet të siguroheni që funksionon. Ju lutemi vini re se çaktivizimi i diodave mbrojtëse nuk ndihmon. Në hyrjet e mikroqarqeve ka dioda mbrojtëse të brendshme, të cilat në këtë rast hapen dhe kryejnë të njëjtën punë.

Rivendosja e energjisë aktivizohet vetëm nëse voltazhi i furnizimit bie nën një nivel të caktuar për një periudhë të caktuar kohe. Nëse voltazhi mbetet shumë i lartë, atëherë logjika e brendshme mund të ngatërrohet sepse disa pjesë të tij mund të jenë në një gjendje të papërcaktuar ndërsa të tjerat funksionojnë siç duhet. Kërkohet një rivendosje e brendshme për të vendosur të gjithë çipat në një gjendje të qëndrueshme. Kështu, qarku do të funksionojë i paqëndrueshëm në tensione shumë të ulëta të furnizimit.

Janë vërejtur simptomat e mëposhtme: etiketa funksionon për ca kohë, ndërsa dërgon të dhëna të sakta. Nëse spiralja hiqet nga lexuesi dhe më pas kthehet, mund të vini bast nëse etiketa do të fiket. Ndonjëherë funksionon, ndonjëherë jo. Çaktivizimi i PLL e përkeqëson situatën. Konsumi i ulët i energjisë do të thotë që lexuesi do të marrë herë pas here të dhëna nga një etiketë që është e fikur. Kjo është ajo që do të thotë "sistem efikas energjetik".

Ekzistojnë dy zgjidhje: 1) zvogëloni kondensatorin në qarkun e rikuperimit sinjali i orës deri në 15 pF dhe 2) lidhni një rezistencë 22-100 kOhm midis furnizimit me energji elektrike dhe tokës për të hedhur energjinë e tepërt. Metoda e dytë shkakton rritjen e rrjedhjeve gjatë funksionimit dhe nuk është vërtet e nevojshme kur zvogëlohet kapaciteti i kondensatorit. Sidoqoftë, ai ofrohet si opsion, dhe është akoma më i mirë se gjendja e papërcaktuar e çipave.

Modulimi i rrymës ose i tensionit

Modulatori solli një dozë të re të dhimbjes së kokës. Modulimi u zhduk plotësisht kur spiralja u vendos në një distancë të caktuar nga lexuesi. Kjo mund të ndodhë gjithashtu kur lëvizni spiralen drejt ose larg lexuesit.

Arsyeja doli të ishte në qarkun e modulatorit. MOSFET-ët e shkurtojnë spiralen në një rezistencë me një rezistencë të caktuar. Sidoqoftë, nëse konsumi i energjisë nga qarku është i lartë, rezistenca e modulatorit është shumë më e lartë se rezistenca e qarqeve të energjisë. Kjo çon në faktin se thellësia e modulimit varet nga rryma e konsumuar, e cila nuk është shumë e mirë. Situata u përkeqësua nga zgjedhja e një diode zener kufizuese me më shumë tension i ulët sesa në prototip.

U vendos që modulatori të kalonte nga modulimi i tensionit në modulimin aktual. Për mënyrën e parë, rezistenca ishte në qarkun e kullimit, dhe tani ajo është e lidhur midis burimit dhe tokës. Tensioni i burimit të portës do të bjerë në këtë rezistencë derisa një vlerë të mbetet pak mbi pragun e hapjes së tranzitorit (0.9-1.1 V), i cili do ta kthejë tranzitorin në mënyra lineare. Tani rryma përmes tranzistorit do të jetë e qëndrueshme, pavarësisht nga tensioni i kullimit.

Testimi në një prototip tregoi se modulimi aktual funksionon shumë mirë. Lexuesi i lirë pa emër nuk rrëzohet më (në rregull, ndoshta një herë në njëqind apo më shumë). Mund të supozojmë se ky ndryshim do të funksionojë mrekullisht tek lexuesit e tjerë, dhe etiketa tani ndoshta do të jetë në gjendje të funksionojë në shumicën e tyre.

Versioni i përfunduar 1

Ju mund të shihni ndryshimet e bëra në bordi i qarkut të printuar. Nuk kisha një kondensator SMD 15 pF, më duhej të lidhja një të rregullt me ​​këmbë. Modulatori ka fituar rezistorë shtesë në burimet e transistorëve. Në përgjithësi i pranueshëm për versionin e parë.

(fotot mund të klikohen)





Video demonstrim

konkluzioni

Ju mund të mendoni se ky projekt, i ndërtuar mbi logjikën 7400, mund të klasifikohet si dizajn retro qark, por kjo nuk është plotësisht e vërtetë. Së pari, familja moderne 74HC nuk është aq e vjetër. Së dyti, qarqet me fuqi të ulët janë gjithmonë të rëndësishme. Së treti, patate të skuqura të vetme elementet logjike(të tilla si këmbëza e përdorur Schmitt) përdoren shpesh në zhvillimet moderne. Shpesh harrohet se zhvillimi i teknologjisë nuk ndalet për familjet më të vjetra të çipave. Ata thjesht u bënë më pak të dukshëm në sfondin e diversitetit të përgjithshëm.

Pjesa analoge doli të ishte më e vështirë për t'u zhvilluar sesa pjesa dixhitale. Pjesërisht për shkak të mungesës së specifikimeve, por kryesisht për shkak të kompromiseve të shumta që kërkohen për plotësimin e parametrave dhe efekteve anësore të paparashikuara. Modelet dixhitale kanë relativisht pak opsione, ndërsa ato analoge zakonisht kërkojnë një ekuilibër midis kritereve të ndryshme (dhe shpesh të kundërta).

Më duhet të pranoj se çipat 74HC janë bërë shumë, shumë mirë. Zhvilluesit e dinin se çfarë po bënin dhe arritën shumë konsumi i ulët i energjisë. Në fillim kisha disa dyshime nëse etiketa mund të funksiononte nga fuqia pasive, por pas leximit të specifikimeve ishte vetëm një çështje e dizajnit të saktë të qarkut. Megjithëse, ka ende mundësi për të optimizuar pjesë të ndryshme të etiketës.

Tani le të shohim se si do të funksionojë ky projekt në konkursin 7400 2012. Aplikimet për konkursin mbyllen më 31 nëntor. I urojmë suksese autorit! - shënim përkthimi

Etiketa: Shtoni etiketa

Lexuesi RFID - kartat dhe çelësat
në mikrokontrolluesin ATtiny13

Burimi: www.serasidis.gr
Vasilis Serasidis

Përkthimi: Vadim porositur nga RadioLotsman

Kohët e fundit Projekte të ndryshme të bazuara në çelësat RFID, të përdorura në sistemet e sigurisë, sigurisë dhe kontrollit të aksesit, kanë fituar popullaritet të gjerë. Në disa ndërmarrje dhe organizata, sisteme të tilla plotësohen nga të specializuara software, përdoren për regjistrimin e orarit të punës, regjistrimin e pasurive materiale etj.

Çdo sistem identifikimi i frekuencave radio (RFID) përbëhet nga një pajisje leximi (lexues, lexues ose pyetës) dhe një transponder (i njohur gjithashtu si etiketë RFID, ndonjëherë përdoret edhe termi etiketë RFID). Në këtë artikull do të shikojmë një pajisje të thjeshtë për leximin e çelësave RFID që mbështesin protokollin EM4100 dhe funksionojnë në një frekuencë prej 125 kHz. Ky llojÇelësat RFID mund të jenë në formën e një fob çelësi ose një karte krediti (Figura më poshtë).

Komponenti kryesor i lexuesit është mikrokontrolluesi Atmel AVR ATtiny13 , i cili lexon numrin unik të identifikimit 10-shifror të çelësit dhe ia dërgon Kodimi ASCII Nga ndërfaqe serike(UART) në 2400 bps në pajisjen Host. Me fjalë të tjera, lexuesi është modul i veçantë, i lidhur me procesorin kryesor ose mikrokontrolluesin e sistemit (Figura 2).

Diagram skematik lexues RFID treguar në foton më poshtë:

Le të shqyrtojmë tiparet kryesore të qarkut. Mikrokontrolluesi përdor një modulator të integruar PWM për të gjeneruar dalje PB0 pulset drejtkëndëshe me një frekuencë prej 125 kHz. Nëse dalja PB0 është log. 0 (buza në rënie e pulsit), transistori T1 është në gjendje të mbyllur dhe një tension furnizimi +5 V aplikohet në spiralen L1 përmes rezistencës R1. Buza në rritje në daljen PB0 (log 1) hap transistorin T1 dhe terminali i sipërm i spirales është i lidhur me tokën. Në këtë moment, spiralja lidhet paralelisht me kondensatorin C2, duke formuar një gjenerator LC (qark oshilues). Transistori ndërron 125,000 herë në sekondë (125 kHz). Si rezultat, spiralja gjeneron një sinjal sinusoidal me një frekuencë prej 125 kHz

Moduli i lexuesit gjeneron një fushë elektromagnetike, energjia e së cilës përdoret për të fuqizuar çelësin RFID. Transferimi i energjisë midis çelësit RFID dhe lexuesit bazohet në parimin e funksionimit të një transformatori konvencional: dredha-dredha parësore e transformatorit krijon një emf të induktuar në të gjitha mbështjelljet e tjera. Për rastin tonë, mbështjellja kryesore është spiralja e lexuesit, dhe mbështjellja dytësore është spiralja e çelësit RFID. Elementet D1, C3 dhe R5 formojnë një demodulator të sinjalit të modulimit të amplitudës.

Shkëmbimi i të dhënave ndërmjet çelësit dhe lexuesit

Procesi i shkëmbimit të të dhënave midis çelësit RFID dhe lexuesit është shumë i thjeshtë, por i menduar deri në detajet më të vogla. Nëse çelësi RFID duhet të transmetojë një regjistër. 0, atëherë lidh një "ngarkesë" të caktuar me burimin e tij të energjisë, i cili kërkon më shumë energji të transmetuar nga lexuesi. Kjo do të shkaktojë një rënie të lehtë të tensionit në anën e lexuesit; Është ky nivel që perceptohet nga lexuesi si një regjistër. 0

Çelësi RFID futet rast i përgjithshëm transmeton 64 bit të dhëna në sekuencën e mëposhtme (Figura 6):

  1. 9 bitët e parë (gjithmonë log. 1) janë bit startues, që tregojnë fillimin e shkëmbimit të të dhënave.
  2. 4 bit - pjesët më pak të rëndësishme të përdoruesit numrin e identifikimit(D00 - D03).
  3. 1 bit (P0) - bit i barazisë së 4 biteve të mëparshëm.
  4. 4 bit janë pjesët më të rëndësishme të numrit të identifikimit të përdoruesit (D04 - D07).
  5. 1 bit (P1) - bit i barazisë së 4 biteve të mëparshëm.
  6. 4 bit - pjesa e parë e 32-bit numër serikÇelësi RFID (D08 - D11).
  7. 1 bit (P2) - bit i barazisë së 4 biteve të mëparshëm.
  8. Më pas, transmetohen grupet e mëposhtme me 4 bit të numrit të serisë së çelësit, secili me një bit barazie.
  9. Pastaj 4 bitet e barazisë transmetohen kolonë për kolonë. Për shembull, biti i barazisë PC0 për bitet D00, D04, D08, D12, D16, D20, D24, D28, D32 dhe D36.
  10. 1 bit ndalimi.

Të dhënat (sekuenca 64-bit) e transmetuar nga çelësi RFID.

Integriteti i të dhënave kontrollohet nga mikrokontrolluesi duke llogaritur bitet e barazisë për çdo rresht dhe kolonë dhe duke e krahasuar atë me të dhënat e marra nga çelësi RFID.

Dizajni i mbështjelljes.

Induktori pa kornizë në lexues me një diametër prej 120 mm është i mbështjellë me një tel me diametër 0,5 mm dhe ka 58 kthesa, por autori rekomandon shtimin e 2 - 3 kthesave të tjera gjatë dredha-dredha. Për të përmirësuar efikasitetin e spirales dhe për të rritur distancën e leximit të të dhënave kryesore RFID, është e nevojshme të kalibroni qarkun lëkundës. Nëse, pasi të keni lidhur një oshiloskop në pikën e lidhjes midis R1 dhe L1, shihni majat e shtrembëruara në ekranin e pajisjes (Figura 7), atëherë kjo tregon nevojën për të kalibruar spiralen L1.

Shtrembërimi i sinjalit të gjeneruar nga spiralja L1 tregon nevojën për kalibrim.

Kalibrimi mund të kryhet në dy mënyra pas furnizimit me energji në modul.

  1. Lidhni sondat e oshiloskopit në pikën e lidhjes midis R1 dhe L1 dhe, duke rritur ose ulur numrin e rrotullimeve të spirales L1, eliminoni shtrembërimin e sinjalit.
  2. Nëse nuk keni një oshiloskop, atëherë lëvizni ngadalë tastin RFID në spirale derisa çelësi të njihet, siç tregohet nga sinjal zanor. Nëse çelësi zbulohet nga një distancë prej 2 cm, atëherë është e nevojshme të shtoni/hiqni disa kthesa dhe më pas të kontrolloni përsëri distancën nga e cila çelësi mund të lexohet me siguri. Duke përdorur kalibrimin, autori i skemës arriti një lexim të besueshëm të çelësit RFID nga 3 cm.

Kur programoni mikrokontrolluesin, është e nevojshme të vendosni konfigurimin e mëposhtëm të biteve të siguresave: bajt i ulët 0x7A dhe bajt i lartë 0x1F (mikrokontrolluesi funksionon nga një gjenerator i integruar i orës 9,6 MHz, ndarës frekuenca e orës me aftësi të kufizuara në 8). Kodi i programit zë 1024 Bajt në memorien e mikrokontrolluesit - përdoret i gjithë kapaciteti i disponueshëm i memories së mikrokontrolluesit ATtiny13. Prandaj, në të ardhmen, kur zgjeroni funksionalitetin e lexuesit, është më mirë të përdorni një tjetër 8-pin Mikrokontrollues AVR, për shembull ATtiny85.

Shkarkimet:

Kodi burimor i programit të mikrokontrolluesit (AVRStudio 6), firmware (.hex) dhe diagrami i qarkut -

Nga seria e preferuar e të gjithëve (të paktën kështu shpresoj vërtet) "Një pamje nga brenda" - më shumë se gjashtë muaj. Nuk është se nuk kishte asgjë për të shkruar apo për të folur, vetëm se më pushtuan gjëra që do të bëhen temë e një prej artikujve të mi të ardhshëm në Habré (shpresoj që nuk do të hiqet, pasi do të" t'i kushtohet tërësisht temave të TI). Ndërkohë, ne kemi një minutë të lirë, le të kuptojmë se çfarë është RFID (identifikimi me frekuencë radio) - ato do të bashkohen me etiketa më të thjeshta - ose se si një hap i vogël në teknologji ka ndryshuar në mënyrë dramatike jetën e miliona dhe madje miliarda njerëzve Rreth botës.

Parathënie

Do të doja të bëja një rezervim menjëherë.

Para se të filloja punën për këtë artikull, shpresoja vërtet që nga mikrofotografitë, dhe veçanërisht nga optika, informacioni i gjetur në internet dhe disa njohuri nga botimet e kaluara, do të ishte e mundur të përcaktohej se ku dhe cilët elementë të mikroqarkullimit ndodhen. Të paktën në nivelin "e përditshëm": ata thonë, kjo është memorie, ky është qarku i furnizimit me energji elektrike dhe këtu bëhet përpunimi i informacionit. Në të vërtetë, duket se RFID është pajisja më e thjeshtë, "kompjuteri" më i thjeshtë që mund të mendoni ...

Sidoqoftë, jeta bëri rregullimet e veta dhe gjithçka që arrita të gjeja: një diagram të përgjithshëm të pajisjes së një gjenerate të re etiketash, fotografi se si duhet të duket, për shembull, një kujtim - as nuk e di pse e bëra Mos i kushtoni vëmendje kësaj (ndoshta do të ketë një mundësi për t'u përmirësuar?! ), dhe skandale, intriga, zbulime të procesorëve A5 nga chipworks.

Pjesa teorike

Sipas traditës, le të fillojmë me një pjesë hyrëse.
RFID
Historia e teknologjisë së njohjes së frekuencave radio - ndoshta kështu mund t'i quajmë të gjitha variantet e imagjinueshme dhe të pakonceptueshme të RFID (identifikimi i frekuencës së radios) - shkon prapa në vitet 40 të shekullit të 20-të, kur BRSS, Evropa dhe SHBA zhvilluan në mënyrë aktive të gjitha llojet e teknologjinë elektronike.

Në atë kohë, çdo produkt i mundësuar nga energjia elektrike ishte ende një risi, kështu që shkencëtarët u përballën me një fushë të paploruar: kudo që të goditje, si në Rajonin e Tokës së Zezë, një dorezë lopatë - do të rritej një pemë. Gjykoni vetë: Maxwell propozoi ligjet e tij vetëm gjysmë shekulli më parë (në 1884). Dhe teoritë e bazuara në këto ekuacione filluan të shfaqen 2-3 dekada më vonë (midis 1900 dhe 1914), duke përfshirë teorinë e valëve të radios (nga zbulimi i tyre, tek modelet e modulimit të sinjalit, etj.). Plus, përgatitja dhe zhvillimi i Luftës së Dytë Botërore la gjurmë në këtë zonë.

Si rezultat, deri në fund të viteve 40, u zhvilluan sistemet e njohjes "mik ose armik", të cilat ishin disi më të mëdha se ato të përshkruara, por funksionuan praktikisht në të njëjtin parim si etiketat moderne RFID.

Demonstrimi i parë i diçkaje afër RFID moderne u krye në 1973 në Laboratorin Kërkimor Los Alamosa, dhe një nga patentat e para për këtë lloj sistemi identifikimi u mor një dekadë më vonë - në 1983. Më shumë detaje rreth historisë së RFID mund të gjenden në Wiki dhe në disa sajte të tjera ( dhe ).

Për shkak të baterisë së integruar, etiketat aktive kanë dukshëm rreze më të madhe puna, dimensionet, "mbushja" më komplekse (mund të shtoni një termometër, higrometër, apo edhe një çip të tërë pozicionimi GPS në etiketë) dhe çmimin përkatës.

Etiketat mund të klasifikohen në mënyra të ndryshme: sipas frekuencës së funksionimit (LF - me frekuencë të ulët ~ 130 KHz, HF - me frekuencë të lartë ~ 14 MHz dhe UHF - me frekuencë ultra të lartë ~ 900 MHz), sipas llojit të memories brenda etiketës (lexo- vetëm, shkruaj-një herë dhe shkruaj-një herë). Nga rruga, NFC, aq e dashur dhe e promovuar nga të gjithë prodhuesit, i referohet gamës HF, e cila ka një sërë problemesh të njohura.

Etiketa të tjera
Fatkeqësisht, kostoja e etiketave RFID në krahasim me llojet e tjera të identifikimit është mjaft e lartë, kështu që, për shembull, ne ende blejmë ushqime dhe mallra të tjera "tradicionale" duke përdorur barkode (ose barkode), ndonjëherë kode QR dhe mbrojtje të ashtuquajtur anti- etiketat e vjedhjes (ose EAS - mbikëqyrja elektronike e artikujve) ofrojnë mbrojtje kundër vjedhjes.

Tre llojet më të zakonshme (të gjitha fotot e marra nga Wiki):

Ka shumë zbulime të mrekullueshme përpara nesh, ndonjëherë krejtësisht të papritura dhe sigurisht pornografi të vështira në format HD!

Nëse teoria nuk është e mjaftueshme për dikë, mirë se vini në këtë faqe në gjuhën angleze.

Pjesa praktike

Pra, cilat shenja u gjetën në botën përreth nesh:


Kolona e majtë nga lart poshtë: harta e metrosë së Moskës, kalimi Aeroexpress, një kartë plastike për hyrjen në ndërtesë, një etiketë RFID e paraqitur nga kompania Perekrestok në ekspozitën RosNanoForum-2011. Kolona e djathtë nga lart poshtë: etiketa EAS e frekuencës radio, etiketa akustomagnetike EAS, biletë bonus për transportin publik të Moskës me një shirit magnetik, karta e vizitorëve RFID e RosNanoForum madje përmban dy etiketa.

E para që shpallet është karta e Metrosë së Moskës - le të fillojmë.

Në rrethin e parë. Bileta e metrosë në Moskë
Së pari, njomni kartën në ujë të thjeshtë për të hequr shtresat e letrës që fshehin vetë zemrën e kësaj "shenje".


Harta e zhveshur e metrosë së Moskës

Tani le ta shohim me kujdes në zmadhim të ulët duke përdorur një mikroskop optik:


Mikrofotografitë e një çipi karte për qasje në metronë e Moskës

Çipi është fiksuar mjaft fort dhe dua të theksoj se të 4 "këmbët" janë ngjitur në antenë - kjo do të jetë e dobishme për ne më vonë për krahasim me një etiketë tjetër RFID. Duke e palosur bazën plastike në gjysmë ku ndodhet çipi dhe duke e tundur pak nga njëra anë në tjetrën, ajo lirohet lehtësisht. Si rezultat, ne kemi një çip me madhësinë e një syri gjilpëre:


Mikrografi optik i çipit menjëherë pas ndarjes nga antena

Epo, le të luajmë me mashtrimin:


Ndryshimi i pozicionit të fokusit nga shtresa e poshtme në shtresën e sipërme

Tani për pak intrigë.

Ka zëra se Mikron po zhvillon dhe prodhon çipa për metronë e Moskës forcën e vet duke përdorur një teknologji të ngjashme Mifare (në minimum, lidhja me antenën është e ndryshme - këmbët janë të një forme tjetër). Më 22 gusht, pa shpallur luftë dhe pabesisht i dërgoi një apel Mikron për sqarim nëse ky çip në parim mund të shihej diku, deri në 3.11 nuk kishte asnjë përgjigje. Një nga gazetarët (domethënë Alexander Erlikh) në forumin IXBT do të sqaronte gjithashtu ky informacion nga përfaqësuesit e Mikron, por me radhë ky moment gjërat janë ende aty, pra përfaqësuesit zyrtarë të Micron po i shmangen përgjigjes së pyetjes së shtruar drejtpërdrejt.

Bileta e diskutuar më sipër me sa duket është prodhuar (ose thjesht e montuar në antenë?) në ndërmarrjen Mikron (Zelenograd) - shih lidhjet më poshtë - duke përdorur teknologjinë nga NXP, një kompani e njohur në qarqet RFID, e cila nënkuptohet qartë nga 3 të mëdhenj. shkronjat dhe viti i lëshimit të teknologjisë (dhe ndoshta viti i prodhimit) në shtresën e sipërme të metalizimit të çipit. Nëse supozojmë se viti 2009 i referohet vitit kur u lançua teknologjia, dhe shkurtesa CUL1V2 deshifrohet si Circuit ULtralite 1 Version 2 (ky supozim konfirmohet edhe nga ky lajm), atëherë në faqen e internetit NXP mund të gjeni një përshkrim të detajuar të këtyre patate të skuqura (dy rreshtat e fundit në listë)

Meqë ra fjala, vitin e kaluar u organizua një ekskursion në fabrikën Micron (raporte foto dhe video) për pjesëmarrësit e Olimpiadës së Internetit për Nanoteknologjinë, kështu që nuk ka kuptim të thuhet se pajisjet atje janë boshe, por edhe deklarata e “Djalë me pallto të bardhë” që prodhojnë etiketa me standarde 70 nm, do ta vë në dyshim...

Sipas statistikave të mbledhura pas analizimit të çipave të 109 biletave të metrosë (një mostër mjaft përfaqësuese), sipas shpërndarjes normale, shanset për të gjetur një biletë "të pazakontë" janë ~109^1/2 ose rreth 10%, por ato shkrihen me çdo biletë e hapur...

Një sy i kujdesshëm tashmë ka vënë re ndryshimin kryesor midis dy çipave Mifare - mbishkrimi Philips2001. Në fakt, në vitin 1998, Philips bleu prodhuesin amerikan të mikroelektronikës Mikron (për të mos u ngatërruar me Zelenograd Mikronin tonë). Dhe në vitin 2006, NXP u shkëput nga Philips.

Është gjithashtu e lehtë të vërehet shenja CLU1V1C, e cila, bazuar në sa më sipër, do të thotë Circuit ULTralite 1 Version 1C. Kjo do të thotë, kjo etiketë është paraardhësi i Mifare, i përdorur nga metroja e Moskës, dhe, për rrjedhojë, është në përputhje me të në parametrat e tij kryesorë. Megjithatë, si në rastin e mëparshëm, viti 2001 është një tregues i vitit të zhvillimit dhe zbatimit të teknologjisë ose vitit të prodhimit. Është e çuditshme që Aeroexpress përdor etiketa të vjetruara...

Në rrethin e tretë. Një kartë plastike
Një ditë, vendosa t'i tregoja një prej miqve të mi artikuj dhe fotografi në Habrahabr. Pastaj ai e pyeti nëse ajo kishte ndonjë kartë e panevojshme për artikullin tjetër rreth RFID. Në atë kohë, ajo sapo ishte zhvendosur për të studiuar në EPFL dhe më dha një kartë që lejon hyrjen në një nga ndërtesat e Universitetit Shtetëror të Moskës. Karta, në përputhje me rrethanat, është pa asnjë shenjë, dhe as nuk jam i sigurt se diçka shkruhet në të, përveç çelësit të zakonshëm për të hyrë në ndërtesë.
Karta është plotësisht plastike, kështu që ne e vendosim menjëherë në aceton për fjalë për fjalë disa dhjetëra minuta:


Marrja e banjove me aceton

Gjithçka brenda është mjaft standarde - një antenë dhe një çip, megjithatë, doli të ishte në një copë të vogël PCB. Fatkeqësisht, pa asnjë shenjë identifikimi - një emër tipik kinez. E vetmja gjë që mund të dini për këtë çip dhe kartë është se ato janë bërë/i përkasin disa standardeve TK41. Ka shumë karta të tilla në shitje si ali-baba dhe dealextreme.

Në rrethin e katërt. Udhëkryq
Më pas, dua të shikoj dy etiketa të paraqitura në ekspozitën RosNanoForum 2011. E para prej tyre u prezantua me patos të madh, duke thënë se ishte pothuajse një ilaç për hajdutët dhe vjedhjet e dyqaneve. Dhe në përgjithësi, kjo etiketë do t'i lejojë dyqanet të kalojnë plotësisht në vetë-shërbim. Fatkeqësisht, menaxheri efektiv doli të ishte pak më shumë se plotësisht i paaftë në çështjet e fizikës së shkollës. Dhe pas propozimit për të testuar efektivitetin e tij dhe etiketës duke përdorur një magnet të fortë të bashkangjitur në etiketë, ai shpejt e mbylli temën ...

Pas disa blerjeve në SmartShop, më kishin mbetur në dispozicion disa etiketa. Pasi kemi pastruar njërën prej tyre nga zamja dhe shtresa e bardhë mbrojtëse, shohim sa vijon:


Etiketë e re për zinxhirin e dyqaneve Perekrestok

Ne bëjmë të njëjtën gjë si Mifare, e shkëputim me kujdes nga baza polimer dhe antena dhe e vendosim në tryezën e mikroskopit optik:


Mikrofotografi optike të një etikete të destinuara për përdorim në SmartShop

Nga një rastësi fatlume (ose zamja na zhgënjeu, ose kjo ishte menduar), shenja u shkëput shpejt nga baza dhe sipërfaqja e saj mbeti pa asnjë gjurmë zam. Unë do të doja të tërhiqja vëmendjen tuaj për faktin se nëse Mifare ka të 4 kontaktet e bashkangjitura në antenë (2 kontakte në secilin skaj), këtu shohim se dy kontakte janë të lidhura me dy jastëkë të vegjël që nuk janë në kontakt me antenën.

Le të luajmë pak me fokus pjesë të ndryshme etiketa:


Po ndryshon fokusin...


Zmadhimi maksimal i një mikroskopi optik

Fotografia e fundit në pjesën e sipërme majtas me sa duket tregon një modul memorie EEPROM, pasi ai zë rreth një të tretën e sipërfaqes së çipit dhe ka një strukturë "të rregullt".

Sot do të flas për modulin RFID RC522, bazuar në çipin MFRC522. Furnizimi me energji elektrike 3.3V, diapazoni i zbulimit deri në 6cm. Projektuar për lexim dhe Regjistrimet RFID etiketa me një frekuencë prej 13,56 MHz. Frekuenca në në këtë rastështë shumë e rëndësishme, pasi etiketat RFID ekzistojnë në tre intervale frekuencash:


  • Shenjat e diapazonit LF (125-134 kHz)

  • Etiketat e brezit HF (13,56 MHz)

  • Etiketat e brezit UHF (860-960 MHz)

Ky modul i veçantë funksionon me etiketat e brezit HF, veçanërisht me protokollin MIFARE.

Për të punuar me modulin mund të përdorni bibliotekë standarde RFID i përfshirë Arduino IDE, megjithatë, ekziston një bibliotekë tjetër e shkruar posaçërisht për këtë modul - MFRC522 (1 MB). Të dyja bibliotekat janë mjaft të përshtatshme, por MFRC522 ka më shumë funksione të veçanta, duke lejuar të reduktohet sa më shumë kodi përfundimtar i programit.

Lidhje

Disa njerëz do të hasin një problem - emri i kunjave në shumicën e mësimeve dhe udhëzuesve mund të mos përputhet me pikën në modulin tuaj. Nëse skicat tregojnë pinin SS, por moduli juaj nuk e ka atë, atëherë ka shumë të ngjarë që është shënuar si SDA. Më poshtë do të jap një tabelë lidhjeje të modulit për bordet më të zakonshme.

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.3 V 3.3 V 3.3 V Stabilizues 3.3V Stabilizues 3.3V Stabilizues 3.3V
GND GND GND GND GND GND

Kunjat e kontrollit SS(SDA) dhe RST janë të specifikuara në skicë, kështu që nëse bordi juaj është i ndryshëm nga ai që do të përdor në shembujt e mi dhe po përdor UNO R3, tregoni kunjat nga tabela në fillim të skicës :


#define SS_PIN 10 #define RST_PIN 9

Shembulli nr. 1: Leximi i numrit të kartës

Le të shohim një shembull nga biblioteka RFID - cardLead. Nuk shfaq të dhëna nga karta, por vetëm numrin e saj, i cili zakonisht është i mjaftueshëm për shumë detyra.


#include #include #define SS_PIN 10 #define RST_PIN 9 RFID rfid(SS_PIN, RST_PIN); // Të dhënat për numrin e kartës ruhen në 5 variabla, ne do t'i kujtojmë ato për të kontrolluar nëse e kemi lexuar tashmë një kartë të tillë 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()) ( // Krahasoni numrin e kartës me numrin e kartës së mëparshme nëse (rfid.serNum != serNum0 && rfid.serNum != serNum1 && rfid.serNum != serNum2 && rfid.serNum != serNum3 && rfid.serNum != serNum4) ( / * Nëse karta është e re, atëherë lexoni */ Serial.println(" "); Serial.println("Karta e gjetur"); serNum0 = rfid.serNum; serNum1 = rfid.serNum; serNum2 = rfid.serNum; serNum3 = rfid .serNum; serNum4 = rfid.serNum; //Nxjerr numrin e kartës Serial.println("Numri i kartës:"); Serial.print("Dhjetor: "); 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 ( /* Nëse kjo është tashmë një kartë e lexuar, thjesht printoni pikën */ Serial.print("."); ) ) ) rfid.halt(); )

Skica është ngarkuar, drita LED e energjisë në modul ndizet, por moduli nuk i përgjigjet kartës? Nuk ka nevojë për panik ose vrap për të kërkuar shembujt "korrektë" të punës. Me shumë mundësi, thjesht nuk ka asnjë kontakt në njërën nga kunjat - vrimat në tabelë janë pak më të mëdha se trashësia e kërcyesit, kështu që ia vlen të përpiqeni t'i rirregulloni ato. A nuk është ndezur LED në tabelë? Provoni të ndryshoni kërcyesin që çon në 3.3V dhe sigurohuni që ai të jetë i lidhur me 3.3V në tabelë; furnizimi me energji 5V mund ta vrasë me lehtësi tabelën tuaj.

Le të themi se gjithçka funksionon për ju. Pastaj, duke lexuar etiketat RFID në monitor porta serike do të shohim sa vijon:


Këtu lexova 3 etiketa të ndryshme, dhe siç mund ta shihni, ai i lexoi me sukses të tre.

Shembulli #2: Leximi i të dhënave nga një kartë

Le të shqyrtojmë një opsion më të sofistikuar - do të lexojë jo vetëm numrin e kartës, por edhe të gjitha të dhënat e disponueshme për lexim. Këtë herë le të marrim një shembull nga biblioteka MFRC522 - DumpInfo.


#include #include #define RST_PIN 9 // #define SS_PIN 10 // MFRC522 mfrc522(SS_PIN, RST_PIN); ( ) ; // Inicializoni autobusin SPI mfrc522.PCD_Init(); // Inicializoni modulin RFID ShowReaderDetails(); // Shfaqni të dhënat rreth modulit MFRC522 Serial.println(F("Skanoni PICC për të parë UID, llojin dhe blloqet e të dhënave ..." )); ) void loop() ( // Në kërkim të harta e re nëse (! mfrc522.PICC_IsNewCardPresent()) (kthim; ) // Zgjidhni një nga kartat nëse (! mfrc522.PICC_ReadCardSerial()) (kthim;) // Nxjerr të dhëna nga karta mfrc522.PICC_DumpToSerial(&(mfrc)2 ); ) void ShowReaderDetails() ( // Merrni numrin e versionit të modulit byte v = mfrc522.PCD_ReadRegister(mfrc522.VersionReg);Serial.print(F("Versioni i softuerit MFRC522: 0x")); Serial.print(v, HEX); nëse (v == 0x91) Serial.print(F(" = v1.0")); përndryshe nëse (v == 0x92) Serial.print(F(" = v2.0")); tjetër Serial.print( F (" (i panjohur)")); Serial.println(""); // Kur marrim 0x00 ose 0xFF, transmetimi i të dhënave prishet nëse ((v == 0x00) || (v == 0xFF)) ( Serial .println( F("PARALAJMËRIM: Dështim komunikimi, a është MFRC522 i lidhur siç duhet?")); ) )

Nëse shembulli i mëparshëm funksionoi pa gabime, atëherë as ky nuk duhet të jetë problem. Megjithëse, leja e metrosë, e cila dha numrin e kartës pa asnjë problem në shembullin e mëparshëm, doli të kishte një lloj të dhënash të pazbuluar në këtë, dhe moduli nuk mund të lexonte asgjë tjetër përveç numrit të kartës.

Si rezultat, pasi kemi lexuar të dhënat nga karta, marrim llojin, identifikuesin dhe të dhënat e saj nga 16 sektorë të memories. Duhet të theksohet se kartat standarde MIFARE 1K përbëhen nga 16 sektorë, secili sektor përbëhet nga 4 blloqe dhe çdo bllok përmban 16 bajt të dhënash.


Shembulli nr. 3: Shkrimi i një identifikuesi të ri në kartë

Në këtë shembull, ne do të shikojmë ndryshimin e identifikuesit të kartës (UID). Është e rëndësishme të dini se jo të gjitha kartat mbështesin ndryshimin e ID-së. Karta mund të rishkruhet, por kjo do të thotë vetëm se të dhënat janë të rishkruhen. Fatkeqësisht, kartat që kisha në duart e mia nuk mbështesin rishkrimin e UID, por unë do të jap kodin e skicës këtu për çdo rast.


#include #include /* Vendos një UID të ri këtu */ #define NEW_UID (0xDE, 0xAD, 0xBE, 0xEF) #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522(SS_PIN, RST_PIN); MFRC522::Çelësi MIFARE_Key; void setup() ( Serial.begin(9600); ndërsa (!Serial); SPI.begin(); mfrc522.PCD_Init(); Serial.println(F("Paralajmërim: ky shembull mbishkruan UID-në e kartës suaj të ndryshueshme UID, përdorni me kujdes!")); për (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); }

Shembulli nr. 4: Shkrimi i të dhënave në një kartë

Këtu është më në fund ajo që ne kemi arritur për kaq shumë kohë - regjistrimi i të dhënave në kartë. Pjesa "më e ëmbël" e punës me modulin është aftësia për të bërë një kopje të një karte ekzistuese, për të shtuar ose ndryshuar diçka, kjo është shumë më interesante sesa thjesht ta lexosh atë.

Le të ndryshojmë një nga blloqet e të dhënave në hartë:


#include #include #define RST_PIN 9 #define SS_PIN 10 MFRC522 mfrc522(SS_PIN, RST_PIN); MFRC522::Çelësi MIFARE_Key; void setup() ( Serial.begin(9600); ndërsa (!Serial); SPI.begin(); mfrc522.PCD_Init(); // Përgatitni çelësin // përdorni tastin FFFFFFFFFFFFFFh që është standardi për karta bosh për (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); } }

Dhe si rezultat, marrim një kartë me një bllok të modifikuar të të dhënave:


Tani, pasi keni mësuar të lexoni dhe shkruani blloqe të të dhënave të kartave, mund të eksperimentoni me etiketat që ka shumë të ngjarë të keni - leje, karta udhëtimi Transporti publik. Provoni të lexoni dhe shkruani të dhëna nga këto karta, disa leje të kopjuara nuk dëmtojnë kurrë, apo jo?)

Kjo është e gjitha, abonohuni dhe ndiqni botimet. Herën tjetër do t'ju tregoj dhe do t'ju tregoj se si të përdorni një standard shfaqja e karaktereve 1602 shtoni karaktere të personalizuara, duke shtuar në thelb grafikë në ekran.

  • Programimi i mikrokontrolluesit
  • Siç e dini, shumë sisteme aksesi përdorin karta RFID të standardit EM-Marin me një frekuencë prej 125 KHz. Interfoni në shtëpinë time nuk ishte përjashtim. Një problem - do të ishte mirë të mësoni se si të kopjoni karta të tilla, sepse etiketat e çmimeve për kopjimin e tyre nuk janë inkurajuese. Sigurisht, ka mjaft skema fotokopjuese në internet (dhe kinezët i shesin fotokopjuesit e tyre për qindarkë - megjithatë, ata shpesh vendosin fjalëkalimin e tyre në disqe kur kopjojnë), por pse të mos ndërtoni kopjuesin tuaj? Kjo është ajo që artikulli më poshtë flet për.

    Vlen të filloni zhvillimin e një fotokopjuesi duke zbuluar se ku mund të kopjohen shenja të tilla? Pasi të keni lexuar forumet, mund të zbuloni se boshllëqet më të zakonshme për kopjim janë T5577, T5557, EM4305.

    Tani na duhet një diagram. Le të marrim pjesën analoge të një fotokopjuesi të tillë nga RECTO dhe ta lidhim atë me mikrokontrolluesin atmega8. Le të shtojmë një konvertues niveli për t'u lidhur me një port COM bazuar në max232 (ata që dëshirojnë mund të përdorin ST232 ose diçka tjetër për t'u lidhur me USB, por unë kam një port COM në kompjuterin tim, si dhe një përshtatës USB-COM, kështu që është detyra ime nuk qëndroi).

    Ju do të merrni këtë diagram:

    Si është ajo? Ndjekësi me emetues të dyfishtë, qark oscilues, detektor dhe filtra RC. Për shkak të faktit se filtrat RC kanë konstante të ndryshme kohore, duke krahasuar nivelet e tensionit ndërmjet fazave, është e mundur të izolohet ndryshimi në sinjalin e etiketës RFID. Kjo detyrë do të trajtohet nga krahasuesi i integruar në atmega8. Gjenerimi i një sinjali 125 KHz do të sigurohet nga kontrolluesi PWM i integruar në atmega8.

    Kombinimi i një etikete RFID dhe një lexuesi formon një transformator, ku etiketa është dredha-dredha dytësore. Informacioni transmetohet nga etiketa duke ndryshuar ngarkesën e mbështjelljes dytësore. Si rezultat, rryma në bobinën e lexuesit (mbështjellja primare) ndryshon. Pjesa analoge e mësipërme e qarkut është përgjegjëse për izolimin e këtyre impulseve aktuale. Qarku oscilues duhet të konfigurohet në tension maksimal V pikë kontrolli, për shembull, mbështjellja/mbështjellja e kthesave të një spiraleje. Vërtetë, ata thonë se është më mirë të kesh një tension pak më pak se maksimumi - funksionon më i qëndrueshëm. Unë kam rreth 40 V në pikën time të provës.

    Marka e kopjuar përdor kodimin Manchester. Për të deshifruar këtë kod, mjafton të kaloni tre të katërtat e periudhës së bitit për çdo ndryshim në skajin e sinjalit dhe, bazuar në rënien e sinjalit pas tij, të regjistroni vlerën e bitit që do të korrespondojë me vlerën e sinjalit. pas rënies. Kur deshifroni, ia vlen të specifikoni një dritare në të cilën duhet të ndodhë rënia e sinjalit - jo më shumë se gjysma e periudhës së slotit të bitit.

    Kam marrë metodën për deshifrimin e kodimit të Manchester dhe kodin për këtë nga Shads. Ju, sigurisht, mund të shkruani tuajin, por unë nxitova të hapja kopjuesin - doja të sigurohesha që qarku po funksiononte dhe se etiketat po pranoheshin. Pra, ky fragment mbeti në kodin e kopjimit. Doli gjithashtu që krahasuesi im është konfiguruar në mënyrë të kundërt sesa ajo që i nevojitet kodit të deshifrimit. E ndryshoi atë në kod. Pra, kemi marrë sekuenca zero dhe njësh. Si mund ta marr kodin e kartës prej tyre?

    Është shumë e thjeshtë. Le të supozojmë se numri i kartës sipas nibbles ka formën AB CD EF GH IJ. Harta tregon këtë:

    1) Nëntë njësi në fillim;
    2) Nibble A;
    3) Nibble parity A (1 bit);
    4) Nibble B;
    5) Nibble parity B (1 bit);

    16) Nibble I;
    17) Nibble parity I (1 bit);
    18) Nibble J;
    19) Nibble parity J (1 bit);
    20) Thithja e barazisë së kolonës për thithkat A B C D E F G H I J;
    21) Biti 0.

    Ne lexojmë të gjitha 64 bit, deshifrojmë dhe marrim 40 bit të kodit të kartës. Është logjike që nëse lëshojmë vetë një kod të tillë, duke mbyllur spiralen e kartës së bashkangjitur me lexuesin, do të marrim një emulator karte. Por tani ne nuk jemi të interesuar për të.

    Ne kemi mësuar të lexojmë një hartë, por si mund t'i transferojmë të dhënat në hartë? Për ta bërë këtë, thjesht duhet të aktivizoni ose çaktivizoni frekuencën 125 KHz në përputhje me protokollin e komunikimit me kartën. Gjatë "heshtjes" së lexuesit, karta mundësohet nga energjia e ruajtur.

    Boshllëqet T5557/T5577 janë plotësisht të pajtueshme me njëri-tjetrin për sa i përket protokolleve të regjistrimit, megjithatë, ato kanë një minimum dhe paksa të ndryshëm. herë maksimale pulset (për fat të mirë, kohët e T5557 mbivendosen me T5577). EM4305 ka një protokoll tjetër regjistrimi.

    Për të regjistruar T5557 kam përdorur kodin BolshoyK. Tabela më poshtë tregon parametrat e sinjalit për folenë e çelësit T5557.

    Regjistrimi fillon me sinjalin StartGape - duhet të fikni sinjalin 125 KHz për afërsisht 300 µs. Ky është një sinjal për kartën që të dhënat tani do të fillojnë të transferohen në të. Tjetra, duhet të transferoni informacionin në bosh. Kodimi i të dhënave të transmetuara është i njëjti Mançester.

    Boshllëqet T5557/T5577 dhe EM4305 janë shumëfunksionale dhe mund të tipe te ndryshme modulime, fjalëkalime mbështetëse dhe shumë më tepër. Çdo disk në bord ka një grup blloqesh 32-bitësh. Qëllimi i këtyre blloqeve është i ndryshëm. Disa kanë një kod kyç të lëshuar (duhen dy blloqe). Në të tjerat - konfigurimi. Së treti, identifikuesi i prodhuesit. Ne do të përdorim funksionalitet të kufizuar, kështu që ata që duan të kuptojnë se çfarë kuptimi kanë të gjitha këto pjesë mund të shikojnë dokumentacionin për boshllëqet (e kam bashkangjitur në arkiv).

    Blloqet janë mbledhur në dy faqe (0 dhe 1).

    Në faqen zero ka një bllok konfigurimi me indeks 0. Kjo është ajo që ne do të vendosim. Për T5557/T5577 do të kemi këto bajt të konfigurimit: 0x00.0x14.0x80.0x40 në përputhje me tabelën nga dokumentacioni (kam shënuar me të kuqe mënyrat e zgjedhura nga një bit):

    Kështu kemi zgjedhur: frekuencën e transmetimit të të dhënave RF/64 (125 KHz/64), kodimin e tipit Manchester, blloqet e lëshimit deri në të dytin (në blloqet 1 dhe 2 do të kemi kodin e lëshuar nga karta). Para se të shkruani, duhet të dërgohet një kod optik (2 bit opcode) dhe një bit mbyllës (bllokim). Opcodet 10b dhe 11b i paraprijnë shkrimit të të dhënave për faqet 0 dhe 1 (biti më pak i rëndësishëm specifikon numrin e faqes, biti më i rëndësishëm specifikon kodin e shkrimit të faqes). Ne lëshojmë 10b për kodin optik (e gjithë puna kryhet me një faqe zero) dhe 0b për bitin e shulës. Pas transferimit të të gjitha këtyre të dhënave, është e nevojshme të transferohet adresa tre-bitëshe e faqes që do të shkruhet. Të gjitha transferimet e të dhënave për T5557/T5577 kryhen nga biti më i rëndësishëm në atë më pak të rëndësishëm.

    Duke vendosur kodin e kartës në blloqet 1 dhe 2 dhe konfigurimin në bllokun 0, mund të merrni një etiketë RFID të kopjuar. Siç mund ta shihni, gjithçka është e thjeshtë.

    Lloji tjetër i boshllëqeve është EM4305. Kështu që unë duhej të merresha vetë me regjistrimin e këtij boshllëku. Ai gjithashtu përbëhet nga blloqe me 32 bit, por qëllimi i tyre është i ndryshëm.

    Kodimi i të dhënave të transmetuara në kartë bazohet në dallimet në një interval kohor. Nëse ka pasur një ndryshim gjatë intervalit kohor, atëherë ai është zero, dhe nëse nuk ka pasur, është një. Fjala e konfigurimit ruhet në bajt 4 dhe për veten time e përcaktova si më poshtë: 0x5F,0x80,0x01,0x00 (encoding Manchester, RF/64, fjala dalëse 6). Në fjalët 5 dhe 6 shkruaj kodin e kartës (të njëjtat 64 bit që prodhon karta). EM4305 kërkon që transmetimi të kryhet nga biti më pak i rëndësishëm në atë më të rëndësishëm. Karta kupton që një shkëmbim fillon me të pasi i jep një kombinim impulsesh:

    1. Ne e fikim fushën në 48 µs.
    2. Ne e ndezim fushën për 96 μs.
    3. Fikeni fushën në 320 µs.
    4. Ne e ndezim fushën në 136 μs.
    5. Çaktivizoni fushën deri në komandën tjetër.
    Komanda për të shkruar një bllok në hartë transmetohet si më poshtë:
    1. Ne dërgojmë sekuencën e mësipërme të impulseve.
    2. Ne dërgojmë 0b.
    3. Ne transmetojmë CC0-CC1 dhe paritetin e tyre P. (0101b për regjistrim, shih tabelat më poshtë).
    4. Ne transmetojmë adresën e bllokut (shih tabelën), dy zero pasuese dhe barazinë e adresës.
    5. Ne transmetojmë të dhëna blloku (32 bit).

    Formati i komandës


    Kodet e komandës

    Formati i adresës së bllokut

    Kjo vendos konfigurimin e boshllëkut EM4305 dhe kodin e tij.

    Në fakt, një fotokopjues i thjeshtë nuk ka nevojë për asgjë më shumë.

    Kam bërë disa versione të kopjimit me ekrane të ndryshme. Për shembull, këtu është një kopjues me një ekran 1602:

    Dhe këtu është një video e kopjimit që punon në ekranin LPH9157-02.

    Artikujt më të mirë mbi këtë temë