Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Hekuri
  • Një vështrim i brendshëm: RFID dhe etiketa të tjera. Bërja e një bllokimi RFID duke përdorur Arduino

Një vështrim i brendshëm: RFID dhe etiketa të tjera. Bërja e një bllokimi RFID duke përdorur Arduino

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

Burimi: www.serasidis.gr
Vassilis 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, të plotësuara me softuer të specializuar, 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 - më pak i rëndësishëm pjesë të rëndësishme zakon 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 -

  • 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ë slotit të bitit për çdo ndryshim në skajin e sinjalit dhe, në bazë të rënies së sinjalit pas tij, të rregulloni vlerën e bitit që do t'i përgjigjet vlerës së 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?

    Dhe ë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 komanduese

    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.

    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. Një trup i lakuar gjithashtu do të mbrojë më mirë anët e spirales, sepse aty ku nuk ka shumë tension, mbështjelljet e telit priren 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 i nënshtroheshin gabimit në llogaritje software, meqë rrezja nuk u kthye në 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 punojnë 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ë modaliteti linear. 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 konsum shumë të ulët të 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. Edhe pse ka ende vend për optimizim pjesë të ndryshme etiketa.

    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:

    • RFID
    • Konkursi 7400
    • mbiinxhinierimi
    • logjikës
    • grabujë kudo
    Shto etiketa

    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 të lexuar dhe shkruar etiketa RFID 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 një modul është aftësia për të bërë një kopje tashmë harta ekzistuese, për të shtuar ose ndryshuar diçka, kjo është shumë më interesante sesa thjesht të lexosh.

    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.

    Mësimi i sotëm është se si të përdorni një lexues RFID me Arduino për të krijuar një sistem të thjeshtë mbylljeje, me fjalë të thjeshta- Kyçja RFID.

    RFID (English Radio Frequency IDentification, radiofrequency identification) është një metodë e identifikimit automatik të objekteve në të cilën të dhënat e ruajtura në të ashtuquajturit transponderë, ose etiketa RFID, lexohen ose shkruhen duke përdorur sinjale radio. Çdo sistem 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).

    Ky tutorial do të përdorë një etiketë RFID me Arduino. Pajisja lexon identifikuesin unik (UID) të çdo etikete RFID që vendosim pranë lexuesit dhe e shfaq atë në ekranin OLED. Nëse UID e etiketës është vlera e paracaktuar, i cili ruhet në memorien Arduino, atëherë në ekran do të shohim mesazhin “Unlocked”. Nëse ID unike nuk është e barabartë me një vlerë të paracaktuar, mesazhi "E zhbllokuar" nuk do të shfaqet - shihni foton më poshtë.

    Kalaja është e mbyllur

    Kyçja është e hapur

    Pjesët e nevojshme për të krijuar këtë projekt:

    • Lexuesi RFID RC522
    • Ekran OLED
    • Tabela e bukës
    • Tela

    Detaje shtese:

    • Bateria (powerbank)

    Kostoja totale e komponentëve të projektit ishte afërsisht 15 dollarë.

    Hapi 2: Lexuesi RFID RC522

    Në secilin Etiketa RFID Ekziston një çip i vogël (kartoni i bardhë në foto). Nëse ndriçoni një elektrik dore në këtë kartë RFID, mund të shihni çipin e vogël dhe spiralen që e rrethon atë. Ky çip nuk ka një bateri për të gjeneruar energji. Ai merr energji nga lexuesi me valë duke përdorur këtë bobina e madhe. Është e mundur të lexoni një kartë RFID si kjo deri në 20 mm larg.

    I njëjti çip ekziston edhe në etiketat e çelësave RFID.

    Çdo etiketë RFID ka një numër unik që e identifikon atë. Ky është UID që shfaqet në ekranin OLED. Përveç këtij UID, çdo etiketë mund të ruajë të dhëna. Kjo lloj karte mund të ruajë deri në 1 mijë të dhëna. Impresionuese, apo jo? Kjo veçori nuk do të përdoret sot. Sot, gjithçka që është me interes është identifikimi i një karte specifike nga UID e saj. Kostoja e lexuesit RFID dhe këtyre dy kartave RFID është rreth 4 dollarë.

    Hapi 3: Ekrani OLED

    Mësimi përdor një monitor OLED 0,96" 128x64 I2C.

    Kjo është shumë shfaqje e mirë për përdorim me Arduino. Kjo Ekran OLED dhe kjo do të thotë se ai ka konsumi i ulët i energjisë. Konsumi i energjisë i këtij ekrani është rreth 10-20 mA dhe varet nga numri i pikselëve.

    Ekrani ka një rezolucion prej 128 me 64 piksele dhe ka përmasa të vogla. Ekzistojnë dy opsione të shfaqjes. Njëra prej tyre është pikturë njëngjyrëshe, dhe tjetra, si ajo e përdorur në mësim, mund të shfaqë dy ngjyra: të verdhë dhe blu. Pjesa e sipërme ekrani mund të jetë vetëm i verdhë, dhe Pjesa e poshtme- blu.

    Ky ekran OLED është shumë i ndritshëm dhe ka një bibliotekë të shkëlqyer dhe shumë të bukur që Adafruit ka zhvilluar për këtë ekran. Përveç kësaj, ekrani përdor një ndërfaqe I2C, kështu që lidhja me Arduino është tepër e lehtë.

    Ju duhet të lidhni vetëm dy tela përveç Vcc dhe GND. Nëse jeni i ri në Arduino dhe dëshironi të përdorni një ekran të lirë dhe të thjeshtë në projektin tuaj, filloni këtu.

    Hapi 4: Lidhja e të gjitha pjesëve

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