Msomaji wa RFID: kuzungumza juu ya teknolojia. RFID imerahisishwa. Utekelezaji wa transponder yako mwenyewe ya RFID na msomaji

RFID (Kitambulisho cha Mawimbi ya Redio) hutumia sehemu za sumakuumeme kutambua na kufuatilia kiotomatiki lebo zilizoambatishwa kwenye vitu. Lebo zina habari iliyohifadhiwa kielektroniki. Lebo tulivu hukusanya nishati kutoka kwa mawimbi ya redio kutoka kwa kisoma RFID kilicho karibu. Lebo zinazotumika zina chanzo cha nishati ya ndani (kama vile betri) na zinaweza kufanya kazi mamia ya mita kutoka kwa msomaji. Tofauti na msimbopau, lebo haihitaji kuwa ndani ya mwonekano wa kifaa, kwa hivyo inaweza kupachikwa kwenye kitu kinachofuatiliwa. RFID ni mojawapo ya mbinu za kitambulisho kiotomatiki na ukusanyaji wa data.

Maombi

Lebo za RFID hutumiwa katika tasnia nyingi. Kwa mfano, kisomaji cha RFID kilichoambatishwa kwenye gari wakati wa uzalishaji kinaweza kutumika kufuatilia maendeleo kwenye mstari wa kuunganisha. Dawa zilizo na lebo zinaweza kufuatiliwa kupitia maghala. Kupandikiza microchips za RFID kwenye mifugo huruhusu wanyama kutambuliwa.

Kwa sababu vitambulisho vya RFID vinaweza kuambatanishwa na pesa, nguo na mali, au kupandikizwa kwa wanyama na watu, uwezo wa kusoma. habari za kibinafsi simu bila idhini ya mtumiaji tatizo kubwa faragha. Hatari hizi zimesababisha uundaji wa vipimo vya kawaida vinavyoshughulikia masuala ya usalama wa data ya kibinafsi. Lebo pia zinaweza kutumika katika maduka ili kuharakisha malipo na kuzuia wizi.

Hadithi

Mnamo 1945, Leon Theremin aligundua kifaa cha kusikiliza Umoja wa Soviet, ambayo ilisambaza tena mawimbi ya redio yenye maelezo ya sauti yaliyoongezwa. Mitetemo ya sauti wakati wa mtetemo iliathiri diaphragm, ambayo ilibadilisha kidogo umbo la resonator, kurekebisha masafa ya redio yaliyoakisiwa. Ingawa kifaa hiki kilikuwa kifaa cha kusikiliza kwa siri badala ya lebo ya kitambulisho, kinachukuliwa kuwa kitangulizi cha kisoma USB RFID kwa sababu kiliwashwa na mawimbi ya sauti kutoka. chanzo cha nje. Transponders bado hutumiwa na ndege nyingi zinazofanya kazi. Hapo awali, teknolojia kama hiyo, kama vile visoma lebo za RFID, ilitumiwa mara kwa mara na Washirika na Ujerumani katika Vita vya Pili vya Dunia kutambua ndege.

Kifaa cha Mario Cardullo, chenye hati miliki mnamo Januari 23, 1973, kilikuwa mtangulizi wa kweli wa RFID ya kisasa, kwani kilikuwa kipokezi cha redio chenye kumbukumbu. Kifaa asili kilikuwa tulivu, kikiendeshwa na ishara ya kupigia kura. Ilionyeshwa katika 1971 kwa utawala wa New York City na wengine watumiaji wanaowezekana na ilijumuisha transponder yenye kumbukumbu ya 16-bit kwa matumizi kama kifaa kilicholipwa. Hati miliki ya msingi ya Cardullo inashughulikia matumizi ya masafa ya redio, sauti na mwanga kama midia ya upokezaji.

Eneo la matumizi

Mpango wa awali wa biashara uliowasilishwa kwa wawekezaji mwaka wa 1969 ulionyesha maombi yafuatayo kwa msomaji wa RFID:

  • matumizi katika usafiri (kitambulisho cha gari, mfumo wa malipo ya kiotomatiki, nambari ya leseni ya kielektroniki, faili ya maelezo ya kielektroniki, uelekezaji gari, ufuatiliaji wa ufanisi wa gari);
  • benki (kitabu cha hundi ya elektroniki, elektroniki kadi ya mkopo);
  • wafanyakazi, milango ya moja kwa moja, ufuatiliaji); sekta ya matibabu (kitambulisho, historia ya mgonjwa).

Onyesho la mapema la nguvu iliyoakisiwa (iliyorekebishwa nyuma ya vitambulisho) ya vitambulisho vya RFID, vyote viwili tu na nusu passive, yalifanywa na Stephen Depp, Alfred Koelle na Robert Fryman katika Maabara ya Kitaifa ya Los Alamos mnamo 1973. Mfumo wa kubebeka ilienda kwa 915 MHz na ilitumia vitambulisho 12-bit. Njia hii inatumiwa na wasomaji wengi wa kisasa wa UHFID na microwave RFID. Katika maisha ya kisasa, vifaa vile vinahitajika sana.

Vipimo

RFID hutumia vitambulisho vilivyoambatishwa kwa vitu vinavyotambulika. Unapotengeneza kisomaji chako cha RFID, kumbuka kuwa vipokezi vya njia mbili vya redio, vinavyoitwa wahoji au wasomaji, hutuma ishara kwa lebo na kusoma majibu yake. Lebo za RFID zinaweza kuwa passiv, amilifu au passiv. Lebo inayotumika ina betri iliyojengewa ndani na mara kwa mara hutuma ishara ya kitambulisho chake. Kidhibiti cha betri (BAP) kina betri ndogo ubaoni na huwashwa na uwepo wa kisoma RFID. Lebo ya passiv ni ya bei nafuu na ndogo kwa sababu haina betri. Badala yake, lebo hutumia wimbi la redio linalopitishwa na msomaji. Hata hivyo, ili lebo ya passiv kufanya kazi, ni lazima iangaziwa katika kiwango cha nguvu takriban mara elfu moja kuliko kusambaza ishara. Hii inathiri kuingiliwa na mionzi.

Mradi huu ulifanywa kwa ombi la rafiki kuwekwa kwenye mlango wa chumba cha kuhifadhi. Baadaye, zingine kadhaa zilifanywa kwa ombi la marafiki na marafiki. Ubunifu uligeuka kuwa rahisi na wa kuaminika. Inafanya kazi kifaa hiki kama hii: inaruhusu tu kadi za RFID ambazo hapo awali zilihifadhiwa kwenye kumbukumbu ya kifaa.

Tabia kuu za kidhibiti cha ufikiaji:

Kadi za RFID umbizo la EMmarin 125kHz

Mdhibiti mdogo wa ATtiny13

Idadi ya kadi/fobs muhimu - 10.
Kitufe cha "FUNGUA" kawaida hufunguliwa na kulindwa dhidi ya kubandika.
Pato la udhibiti wa kufuli, mkondo wa juu transistor ya athari ya shamba, hali ya uendeshaji ya latch (inageuka kwa muda).

Nguvu - 12v.
Matumizi katika hali ya kusubiri ni 35 mA.
Idadi ya kadi za ufikiaji / fobs - pcs 10.
Urefu wa mawasiliano na kitufe cha "FUNGUA" ni mita 10.
Aina ya pato la udhibiti wa kufuli - kukimbia wazi (transistor yenye nguvu ya athari ya shamba, sasa hadi 2A).

Mchoro wa kiratibu wa kidhibiti cha kizuizi cha ufikiaji kwenye kadi za RFID 125KHz (Em-Marin) kwa kadi 10 (kwenye kidhibiti kidogo cha ATtiny13):

Ikiwa unahitaji kudhibiti kufuli ya sumakuumeme, unahitaji kusakinisha relay ya pato na kikundi cha mawasiliano kinachohitajika.

Muonekano wa kithibitishaji cha RFID kilichokusanywa:

Kuweka bits za Fuse katika PonyProg:

Uendeshaji wa kifaa, pakua video iliyorekodiwa na mwandishi.
Mmoja wa wasomaji pia alichapisha video ya kifaa kilichokusanyika kikifanya kazi:

Maagizo ya programu

Hali ya uendeshaji - wakati 12V inatolewa kwa mtawala, LED huangaza 1Hz.
Hali ya programu - LED inawaka 2Hz.
Unapobonyeza kitufe cha "FUNGUA", safu ya milio fupi itatokea wakati kufuli inafunguliwa.

Ishara za sauti

Ishara 1 fupi - kadi au fob ya ufunguo imeandikwa kwa kumbukumbu ya mtawala.
Milio 2 fupi - kadi au fob ya ufunguo tayari imehifadhiwa kwenye kumbukumbu ya mtawala.
Milio 5 fupi - toka kwenye hali ya programu.
1 mlio mrefu- kumbukumbu ya kadi muhimu inafutwa kutoka kwa mtawala.
Kuendelea ishara fupi- kumbukumbu ya kadi / ufunguo imejaa, upeo wa pcs 10. (inahitaji kuzima nguvu kwa mtawala).

Inarekodi MASTER CARD na kufunga muda wa kufungua

1 - Zima nguvu ya mtawala.
2 - Bonyeza kitufe cha "FUNGUA".
3 - Unaposhikilia kitufe, unganisha nguvu kwa kidhibiti, baada ya sekunde 5. kidhibiti "BEEPS", LED itaangaza kwa mzunguko wa 2 Hz.
4 - Toa kitufe.
5 - Leta kadi au fob muhimu kwenye eneo la kusoma, sauti moja itasikika ishara ya sauti, Kadi kuu au fob ya ufunguo IMEREKODIWA, na muda wa kufungua kufuli wa sekunde 1 utarekodiwa.

6 - Shikilia kadi au fob ya vitufe katika eneo la kusoma na uhesabu ishara za sauti. Kiasi huamua wakati unaohitajika wa kufungua kufuli, nyongeza za sekunde 1, lakini sio zaidi ya sekunde 32.
7 - Zima nguvu kwa kidhibiti au sitisha kwa sekunde 30.

Inafuta kumbukumbu zote za kadi za fob muhimu

1 - Hali ya uendeshaji.
2 - Bonyeza kitufe cha "FUNGUA" na ushikilie, leta kadi ya MASTER au fob ya ufunguo kwa msomaji na ushikilie, baada ya sekunde 5 beep ndefu italia - kumbukumbu ya kadi / fobs muhimu inafutwa.
3 - Achia kitufe na uondoe kadi au fob ya ufunguo.

Baada ya miaka kadhaa ya kufanya kazi kwenye mada za RFID na kukuza wasomaji anuwai kwa mifano ya transponder ya viwango maarufu kama vile Mifare, EMMARINE, TIRIS... mara nyingi nilianza kushangazwa na swali hili - kihalisi. Mwaka jana Aina mbalimbali za viigizaji vilivyo chini ya lebo za itifaki maarufu na vikopi mbalimbali vya funguo/vifunguo vimepata umaarufu mkubwa.

Kwa kuzingatia idadi kubwa ya chipsi maalum zinazopatikana kibiashara kwa itifaki maarufu za RFID na wasomaji wa bei nafuu, matumizi makubwa ya vifaa kama vile oscilloscope za dijiti, vinukizi na vichanganuzi vya wigo, swali hili imekuwa muhimu zaidi kwa watengenezaji wengi. Kisha niliamua kuunda itifaki ya kubadilishana kwa moja ya miradi ambayo ilikuwa tofauti na viwango vilivyoelezwa hapo juu.

Bila shaka wazo hili haisuluhishi matatizo ya kimataifa usalama mfumo mpya na inaweza kuchambuliwa na watengenezaji wengine ikiwa wana vifaa, lakini uhakika ni kwamba hakuna hii ni sawa na viwango vilivyopo na vifaa vyote vya kunakili havitakuruhusu kunakili haraka na kuunda tena algorithm kama hiyo. Bila shaka mfumo unaofanana haijawasilishwa hapa suluhisho kamili matatizo ya usalama, lakini jinsi ya kurekebisha RFID kwa mfumo uliofungwa. pamoja na nzuri juu ya suala la usalama miongoni mwa mengine yanayofanana mifumo isiyo na waya ni teknolojia ya RFID ya masafa ya chini yenyewe - hairuhusu vitambulisho kusomwa kwa umbali mrefu.

Lebo zisizo na nguvu zina nguvu ya chini kabisa na zinahitaji jenereta ya kisomaji yenye nguvu kiasi ili kuzitia nguvu; sifa za kipekee za uenezaji wa mawimbi ya redio katika masafa haya pia hupunguza mipaka ya uendeshaji wa mfumo huu. Masafa halisi ya kusoma ya transponders mara chache huzidi 20 cm kwa viwango vya 125 KHz kama EmMarine, sema kiwango cha EM4001; kwa itifaki zingine kama Mifare (13.56 MHz) inaweza kuwa ndefu (mita 1.5 kwa iso15693). Unaweza kufikia umbali mkubwa wa kusoma kwa wasomaji wa chini-frequency kwa kuongeza ukubwa wa coil na voltage ya usambazaji, kwa mtiririko huo, na nguvu ya msomaji. Walakini, mifumo kama hiyo ni mikubwa na kwa kawaida ni ngumu kufanya kubebeka. Kama sheria, mifumo kama hiyo inatekelezwa tu kwa kudumu - kwa mfano, kwa magari.

Kwa hiyo, sasa juu ya usanifu halisi wa mfumo wetu wa RFID. Kidhibiti cha atmel atmega8 kilichaguliwa kwa majaribio. Kwa madhumuni ya utengenezaji wa transponder, hii inaonekana kama kupita kiasi. Hata hivyo, katika kwa kesi hii Jukumu la msingi la kuunda kiolesura kipya kwenye bodi ya ukuzaji iliyotengenezwa tayari na atmega ilitatuliwa, ikifuatiwa na kusambaza msimbo huu kwa vidhibiti vya bei nafuu kama vile tiny13. Kwa transponder, algorithm ya uendeshaji ilijengwa kwa misingi ya hali ya kizazi cha PWM kwa kutumia timer T1 katika hali ya CTC na usumbufu na kuweka upya kwa bahati mbaya na OCR1. Data ya utumaji wa transponder husomwa kutoka kwa EEPROM wakati kidhibiti kimewashwa. Kwa jumla, transponder hupitisha byte 10. Yaliyomo kwenye transponder EEPROM yanaweza kuonekana kwenye Kielelezo cha 1. Byte ya kwanza 0xE7 ni kichwa cha pakiti kinachohitajika, kwa kuwa uwepo wake unaangaliwa kwanza wakati msomaji anapochanganua pakiti.

Baiti 8 za kwanza ni yaliyomo kwenye pakiti ya transponder, ka 2 za mwisho zina cheki ya CRC16 ya ka nane za kwanza za pakiti. Kwa mfano, data ifuatayo ilirekodiwa katika transponder yetu: pakiti 0xE7, 0x05, 0xE8, 0x93, 0x43, 0x7F, 0x20, 0xFF na, ipasavyo, checksum 0xF5 0xA8. Ili kufanya transponder yako ya kipekee, pamoja na byte ya kwanza 0xE7, unahitaji kuandika byte saba zifuatazo kwenye EEPROM, na kisha uhesabu checksum kwa byte nane za kwanza. Baada ya hayo, andika baiti mbili za CRC16 mwishoni mwa pakiti kwa EEPROM. Tunaacha byte ya kwanza bila kubadilika - 0xE7. Wakati transponder imewashwa, data ya byte hizi imegawanywa katika bits na encoded na urefu unaofaa wa mapigo kwa mujibu wa thamani ya rejista ya OCR. Kwa maambukizi, masafa 2 ya 2KHz na 5KHz hutumika kusambaza kimantiki "0" na "1". Kwa kuongeza, data imetenganishwa na mapigo ya maingiliano - alama za kuanza kwa pakiti.

Mtini.1 Yaliyomo kwenye pakiti ya transponder.


Mtini.2 Dampo la upitishaji wa transponder kwenye skrini ya oscilloscope pepe.

Mchoro wa transponder unaweza kuonekana kwenye Kielelezo cha 3. Mzunguko wa oscillator mkuu 8 MHz. Ugavi wa umeme wa mdhibiti +5V. Unaweza kutumia mtawala wa mega8 alama "L", basi nguvu inaweza kutolewa kutoka kwa betri ya lithiamu 3V (vigezo vya chip vile ni +2.7 .... +3.5). Badala ya transistor hii, unaweza kutumia transistor nyingine yoyote ya chini ya NPN. Coil ya transponder ilijeruhiwa kwenye mandrel yenye kipenyo cha mm 50 na waya 0.22 mm na ina zamu 50. Washa wakati huu transponder inafanywa kuwa hai - na usambazaji wa umeme wa nje. Katika hatua inayofuata imepangwa kufanya toleo la passiv la transponder, ambayo ni rahisi sana - fanya kutengwa kwa nguvu kutoka kwa coil hii, ongeza diode za daraja la kurekebisha na kiimarishaji.


Mtini.3 Mzunguko wa transponder.

Sasa hebu tuzungumze juu ya mzunguko wa msomaji wa transponder hii. Mzunguko ulirekebishwa kulingana na kisoma kadi cha EMMARINE kilichotumiwa hapo awali. Sehemu ya mzunguko na jenereta ya 74hc4060 inaweza kupatikana katika hatua hii jisikie huru kufuta, kwa kuwa kwa sasa tunatumia lebo inayotumika. Hata hivyo, tutahitaji sehemu hii ya mzunguko baadaye, tunapofanya lebo ya passive na tunahitaji kupokea nguvu kutoka kwa msomaji. Vinginevyo, mzunguko hautofautiani sana na mzunguko wa msomaji kwa EMMARINE: kizuizi cha kilele cha passiv - chujio - amplifier - comparator. Mzunguko una unyenyekevu mkubwa zaidi na inakuwezesha kusoma data ya transponder kwa umbali wa cm 10-12 na nyaya zilizopangwa vizuri.

Unaweza kurahisisha mzunguko hata zaidi, ukiacha tu detector na chujio, na kuweka transistor moja kwenye pato ambayo itachukua jukumu la kulinganisha, lakini sikufanya hivyo. Kwenye pato tunapokea ishara ya mstatili wa binary kwa mujibu wa muda wa mapigo uliosimbwa unaopitishwa na transponder. Upungufu unaoruhusiwa wa maadili ya kipengele ambacho mzunguko unafanya kazi ni 5-10%. Ugavi wa nguvu kwa kidhibiti na opamp +5V. Mzunguko wa quartz wa oscillator mkuu wa mtawala ni 12 MHz. Pato la kulinganisha kwenye LM358 limeunganishwa na pini ya kukatiza nje ya mtawala wa INT0. Programu ya kidhibiti imesanidiwa ili kuita ukatizaji kwenye ukingo unaoinuka kwenye pini ya kukatiza nje INT0. Kidhibiti cha kukatiza hukagua mipigo ya saa na kisha kuangalia kichwa cha pakiti na kuandika yaliyomo kwenye bafa ya kidhibiti. Data ya pakiti zilizosomwa hupitishwa kupitia kiolesura cha RS232 hadi kwa Kompyuta. Ili kusanidi terminal, onyesha vigezo vifuatavyo: kasi 57.6Kb/s, bits 8 za data, 1 stop bit, hakuna usawa.

Wakati wa kupokea pakiti, mtawala huhesabu hundi ya byte zilizopokelewa na kupitisha data kwenye terminal (pakiti na CRC). Ikiwa kuna mechi hundi iliyohesabiwa na mtawala na kupokea katika mfuko, ishara ni pato kwa PORTB.0 (14) pini ya mtawala (LED1 kwenye mchoro). Inaweza kuunganishwa na hatua hii tweeter yenye jenereta iliyojengwa au LED kupitia upinzani. Wakati wa kusoma ufunguo sahihi, kidhibiti huzima ukatizaji wa nje na kufanya ucheleweshaji wa sekunde 1 kabla ya usomaji unaofuata. Pia kuna hali ya kufanya kazi kwa msomaji huyu kama Misingi ya RFID ngome Ili kufanya hivyo, ni muhimu kuandika byte zote za utupaji wa transponder kwenye EEPROM ya mtawala wa msomaji - 10 bytes. Data imeandikwa kwa msomaji EEPROM kwa njia sawa na kwa transponder EEPROM. Katika kesi hii, wakati transponder inayofuata inasomwa na inalingana na yaliyoandikwa katika EEPROM ya msomaji, ishara hutolewa kwa PORTB.1 (15) pini ya kidhibiti (LED2 kwenye mchoro). Unaweza kuunganisha LED kwa hatua hii kwa njia ya upinzani au kubadili pato (transistor) kwenye relay kitendaji. Sasa tuna lock ya RFID kwa ufunguo maalum na msomaji wa kawaida katika chupa moja.


Mtini.4 Mchoro wa msomaji wa lebo ya RFID. (panua mchoro)

Kwa hivyo, wacha tufanye muhtasari wa matokeo ya kati. Tulifanya msomaji wetu na transponder kwa msomaji huyu. Tumelinda vifaa vyetu dhidi ya vifaa vya kigeni kufanya kazi na itifaki maarufu za RFID. Hatua inayofuata ni kutengeneza tepe ya tusi kwa msomaji wetu, kama wanavyofanya wazalishaji maarufu transponder za viwandani na msimbo wa vifaa vya kubeba kwa vidhibiti vya bei nafuu. Katika kumbukumbu mimi ambatisha firmware kwa transponder na msomaji kwa makala.

Pakua programu dhibiti:
Huna ufikiaji wa kupakua faili kutoka kwa seva yetu

Leo nitazungumza juu ya moduli ya RFID RC522, kulingana na chip ya MFRC522. Ugavi wa nguvu 3.3V, ugunduzi wa anuwai hadi 6cm. Imeundwa kwa ajili ya kusoma na Rekodi za RFID vitambulisho na mzunguko wa 13.56 MHz. Mara kwa mara katika kesi hii ni muhimu sana, kwani lebo za RFID zipo katika safu tatu za masafa:


  • Alama za safu ya LF (125-134 kHz)

  • Lebo za bendi za HF (MHz 13.56)

  • Lebo za bendi za UHF (860-960 MHz)

Moduli hii mahususi inafanya kazi na lebo za bendi za HF, haswa na itifaki ya MIFARE.

Kufanya kazi na moduli unaweza kutumia maktaba ya kawaida RFID pamoja Kitambulisho cha Arduino, hata hivyo, kuna maktaba nyingine iliyoandikwa mahsusi kwa moduli hii - MFRC522 (1 MB). Maktaba zote mbili zinafaa kabisa, lakini MFRC522 ina zaidi kazi maalum, kuruhusu kupunguza msimbo wa mwisho wa programu iwezekanavyo.

Uhusiano

Baadhi ya watu watakumbana na tatizo - jina la pini katika masomo na miongozo mingi huenda lisilingane na pinout kwenye moduli yako. Ikiwa michoro inaonyesha pini ya SS, lakini moduli yako haina, basi kuna uwezekano mkubwa kuwa imewekwa alama kama SDA. Hapa chini nitatoa meza ya uunganisho wa moduli kwa bodi za kawaida.

MFRC522 Arduino Uno Arduino Mega Arduino Nano v3

Arduino Leonardo/Micro

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

Pini za kudhibiti SS(SDA) na RST zimeainishwa kwenye mchoro, kwa hivyo ikiwa bodi yako ni tofauti na ile nitakayotumia katika mifano yangu, na ninatumia UNO R3, onyesha pini kutoka kwenye jedwali mwanzoni mwa mchoro. :


#fafanua SS_PIN 10 #fafanua RST_PIN 9

Mfano Nambari 1: Kusoma nambari ya kadi

Hebu tuangalie mfano kutoka kwa maktaba ya RFID - cardRead. Haionyeshi data kutoka kwa kadi, lakini nambari yake tu, ambayo kawaida ni ya kutosha kwa kazi nyingi.


#jumuisha #jumuisha #fafanua SS_PIN 10 #fafanua RST_PIN 9 RFID rfid(SS_PIN, RST_PIN); // Data kuhusu nambari ya kadi imehifadhiwa katika vigezo 5, tutakumbuka ili kuangalia ikiwa tayari tumesoma kadi hiyo int serNum0; int serNum1; int serNum2; int serNum3; int serNum4; usanidi utupu() ( Serial.begin(9600); SPI.begin(); rfid.init();) kitanzi batili() (ikiwa (rfid.isCard()) (ikiwa (rfid.readCardSerial()) ( // Linganisha nambari ya kadi na nambari ya kadi iliyotangulia ikiwa (rfid.serNum != serNum0 && rfid.serNum != serNum1 && rfid.serNum != serNum2 && rfid.serNum != serNum3 && rfid.serNum != serNum4) ( / * Ikiwa kadi ni mpya, basi soma */ Serial.println(" "); Serial.println("Kadi imepatikana"); serNum0 = rfid.serNum; serNum1 = rfid.serNum; serNum2 = rfid.serNum; serNum3 = rfid .serNum; serNum4 = rfid.serNum; //Toa nambari ya kadi Serial.println("Nambari ya Kadi:"); Serial.print("Des: "); 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(""); ) mwingine ( /* Ikiwa hii tayari ni kadi iliyosomwa, chapisha tu kitone */ Serial.print("."); ) ) ) rfid.halt(); )

Mchoro umepakiwa, LED ya nguvu kwenye moduli inawaka, lakini moduli haijibu kadi? Hakuna haja ya kuogopa au kukimbia kutafuta mifano "sahihi" ya kazi. Uwezekano mkubwa zaidi, hakuna mawasiliano kwenye moja ya pini - shimo kwenye ubao ni kubwa kidogo kuliko unene wa jumper, kwa hivyo inafaa kujaribu kupanga upya. Je, LED kwenye ubao haijawashwa? Jaribu kubadilisha jumper inayoongoza hadi 3.3V, na uhakikishe kuwa imeunganishwa kwa 3.3V kwenye ubao; kusambaza nishati ya 5V kunaweza kuua ubao wako kwa urahisi.

Wacha tuseme kila kitu kinafaa kwako. Kisha, kusoma vitambulisho RFID katika kufuatilia bandari ya serial tutaona yafuatayo:


Hapa nilisoma vitambulisho 3 tofauti, na kama unavyoona, alifanikiwa kusoma zote 3.

Mfano #2: Kusoma data kutoka kwa kadi

Hebu fikiria chaguo la kisasa zaidi - haitasoma tu nambari ya kadi, lakini pia data zote zinazopatikana kwa kusoma. Wakati huu tuchukue mfano kutoka kwa maktaba ya MFRC522 - DumpInfo.


#jumuisha #jumuisha #fafanua RST_PIN 9 // #fafanua SS_PIN 10 // MFRC522 mfrc522(SS_PIN, RST_PIN); // Unda usanidi wa utupu wa mfano wa MFRC522() ( Serial.begin(9600); // Anzisha ufuatiliaji wa mlango wa mfululizo wakati (!Serial); // Usifanye chochote hadi ifunguliwe (kwa Arduino kwenye chip ATMEGA32U4) SPI.begin( ; // Anzisha basi la SPI mfrc522.PCD_Init(); // Anzisha Moduli ya RFID ShowReaderDetails(); // Chapisha data kuhusu moduli ya MFRC522 Serial.println(F("Changanua PICC ili kuona UID, aina na vizuizi vya data...")); ) kitanzi utupu() ( // Kutafuta ramani mpya ikiwa (! mfrc522.PICC_IsNewCardPresent()) ( return; ) // Chagua moja ya kadi ikiwa (! mfrc522.PICC_ReadCardSerial()) ( return; ) // Data ya pato kutoka kwa kadi mfrc522.PICC_DumpToSerial(&(mfrc522)uid.uid ); ) batili ShowReaderDetails() ( // Pata nambari ya toleo la moduli byte v = mfrc522.PCD_ReadRegister(mfrc522.VersionReg); Serial.print(F("MFRC522 Software Version: 0x")); Serial.print(v, HEX); ikiwa (v == 0x91) Serial.print(F(" = v1.0")); vinginevyo ikiwa (v == 0x92) Serial.print(F(" = v2.0")); vinginevyo Serial.print( F (" (haijulikani)")); Serial.println(""); // Tunapopokea 0x00 au 0xFF, uwasilishaji wa data huvunjika ikiwa ((v == 0x00) || (v == 0xFF)) ( Serial .println( F("ONYO: Kushindwa kwa mawasiliano, je MFRC522 imeunganishwa ipasavyo?")); ) )

Ikiwa mfano uliopita ulifanya kazi bila makosa, basi hii haipaswi kuwa tatizo pia. Ingawa, kupita kwa metro, ambayo ilitoa nambari ya kadi bila shida yoyote katika mfano uliopita, iliibuka kuwa na aina ya data isiyoweza kutambulika katika hii, na moduli haikuweza kusoma chochote isipokuwa nambari ya kadi.

Kama matokeo, baada ya kusoma data kutoka kwa kadi, tunapata aina yake, kitambulisho, na data kutoka kwa sekta 16 za kumbukumbu. Ikumbukwe kwamba kadi za kawaida za MIFARE 1K zinajumuisha sekta 16, kila sekta ina vitalu 4, na kila block ina baiti 16 za data.


Mfano Nambari 3: Kuandika kitambulisho kipya kwenye kadi

Katika mfano huu, tutaangalia kubadilisha kitambulisho cha kadi (UID). Ni muhimu kujua kwamba sio kadi zote zinazounga mkono kubadilisha kitambulisho. Kadi inaweza kuandikwa upya, lakini hiyo inamaanisha kuwa data inaweza kuandikwa upya. Kwa bahati mbaya, kadi nilizokuwa nazo mikononi mwangu hazikuunga mkono uandishi upya wa UID, lakini nitatoa msimbo wa mchoro hapa ikiwa tu.


#jumuisha #jumuisha /* Weka UID mpya hapa */ #fafanua NEW_UID (0xDE, 0xAD, 0xBE, 0xEF) #fafanua SS_PIN 10 #fafanua RST_PIN 9 MFRC522 mfrc522(SS_PIN, RST_PIN); MFRC522::MIFARE_Ufunguo muhimu; usanidi batili() ( Serial.begin(9600); huku (!Serial); SPI.begin(); mfrc522.PCD_Init(); Serial.println(F("Onyo: mfano huu unabatilisha UID ya kadi yako ya UID inayoweza kubadilishwa, tumia kwa uangalifu!")); kwa (byte 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); }

Mfano Nambari 4: Kuandika data kwenye kadi

Haya ndiyo ambayo tumekuwa tukipata kwa muda mrefu - kurekodi data kwenye kadi. Sehemu "tamu" ya kufanya kazi na moduli ni uwezo wa kufanya nakala ya kadi iliyopo, kuongeza au kubadilisha kitu, hii inavutia zaidi kuliko kuisoma tu.

Wacha tubadilishe moja ya vizuizi vya data kwenye ramani:


#jumuisha #jumuisha #fafanua RST_PIN 9 #fafanua SS_PIN 10 MFRC522 mfrc522(SS_PIN, RST_PIN); MFRC522::MIFARE_Ufunguo muhimu; usanidi utupu() ( Serial.begin(9600); huku (!Serial); SPI.begin(); mfrc522.PCD_Init(); // Andaa kitufe // tumia kitufe FFFFFFFFFFh ambacho ndicho kiwango cha kadi tupu kwa (byte 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); } }

Na matokeo yake, tunapata kadi iliyo na kizuizi cha data kilichobadilishwa:


Sasa, baada ya kujifunza kusoma na kuandika vizuizi vya data ya kadi, unaweza kujaribu vitambulisho ambavyo unaweza kuwa nazo - pasi, kadi za kusafiri. usafiri wa umma. Jaribu kusoma na kuandika data kutoka kwa kadi hizi, rudufu za pasi haziumiza kamwe, sivyo?)

Ni hayo tu, jiandikishe na ufuate machapisho. Wakati ujao nitakuambia na kukuonyesha jinsi ya kutumia kiwango onyesho la tabia 1602 ongeza herufi maalum, kimsingi kuongeza michoro kwenye onyesho.

  • Programu ya Microcontroller
  • Kama unavyojua, mifumo mingi ya ufikiaji hutumia kadi za RFID za kiwango cha EM-Marin na mzunguko wa 125 KHz. Intercom nyumbani kwangu haikuwa ubaguzi. Shida moja - itakuwa nzuri kujifunza jinsi ya kunakili kadi kama hizo, kwa sababu vitambulisho vya bei vya kunakili havikuhimiza. Kuna, kwa kweli, miradi michache ya kunakili mkondoni (na Wachina huuza nakala zao kwa senti - hata hivyo, mara nyingi huweka nywila zao kwenye diski wakati wa kunakili), lakini kwa nini usijenge nakala yako mwenyewe? Hiyo ndiyo makala iliyo hapa chini inahusu.

    Inafaa kuanza ukuzaji wa mwigaji kwa kujua alama kama hizo zinaweza kunakiliwa kwa nini? Baada ya kusoma mabaraza, unaweza kugundua kuwa nafasi zilizo wazi zaidi za kunakili ni T5577, T5557, EM4305.

    Sasa tunahitaji mchoro. Wacha tuchukue sehemu ya analog ya mwiga kama huyo kutoka kwa RECTO na tuunganishe na kidhibiti kidogo cha atmega8. Wacha tuongeze kibadilishaji cha kiwango cha kuunganishwa na bandari ya COM kulingana na max232 (wale wanaotaka wanaweza kutumia ST232 au kitu kingine kuunganishwa kupitia USB, lakini nina bandari ya COM kwenye kompyuta yangu, na adapta ya USB-COM, kwa hivyo kazi yangu haikusimama).

    Utapata mchoro huu:

    Mwanamke huyo anafananaje? Mfuasi wa emitter mbili, mzunguko wa oscillating, kigunduzi na vichungi vya RC. Kutokana na ukweli kwamba filters za RC zina vipindi tofauti vya wakati, kwa kulinganisha viwango vya voltage kati ya hatua, inawezekana kutenganisha mabadiliko katika ishara ya tag ya RFID. Jukumu hili litashughulikiwa na kilinganishi kilichojengwa ndani ya atmega8. Uzalishaji wa mawimbi ya 125 KHz utatolewa na kidhibiti cha PWM kilichojengwa ndani ya atmega8.

    Mchanganyiko wa lebo ya RFID na msomaji huunda kibadilishaji, ambapo lebo ni vilima vya pili. Habari hupitishwa na lebo kwa kubadilisha mzigo wa vilima vya sekondari. Matokeo yake, sasa katika coil msomaji (msingi vilima) mabadiliko. Sehemu ya juu ya analog ya mzunguko ni wajibu wa kutenganisha mapigo haya ya sasa. Mzunguko wa oscillatory zinahitaji kusanidiwa kiwango cha juu cha voltage V hatua ya udhibiti, kwa mfano, kupiga / kupiga zamu za coil. Ukweli, wanasema kuwa ni bora kuwa na voltage kidogo chini ya kiwango cha juu - inafanya kazi kwa utulivu zaidi. Nina karibu 40 V kwenye hatua yangu ya mtihani.

    Alama iliyonakiliwa hutumia usimbaji wa Manchester. Ili kusimbua kanuni hii, inatosha kuruka robo tatu ya kipindi cha yanayopangwa kidogo kwa mabadiliko yoyote katika makali ya ishara na, kwa kuzingatia kushuka kwa ishara kufuatia, kurekebisha thamani kidogo ambayo itafanana na thamani ya ishara baada ya kushuka. Wakati wa kuorodhesha, inafaa kutaja dirisha ambalo kushuka kwa ishara kunapaswa kutokea - sio zaidi ya nusu ya kipindi cha yanayopangwa kidogo.

    Mbinu ya usimbuaji Usimbaji wa Manchester na nilichukua nambari ya hii kutoka kwa Shads. Unaweza, bila shaka, kuandika yako mwenyewe, lakini nilikuwa na haraka ya kuzindua mwiga - nilitaka kuhakikisha kuwa mzunguko unafanya kazi na kwamba vitambulisho vinakubaliwa. Kwa hivyo kipande hiki kilibaki kwenye nambari ya kunakili. Ilibainika pia kuwa mlinganisho wangu ameundwa kinyume na kile msimbo wa kusimbua unahitaji. Imebadilishwa katika msimbo. Kwa hivyo, tulipata mlolongo wa zero na ndio. Ninawezaje kupata msimbo wa kadi kutoka kwao?

    Na ni rahisi sana. Wacha tufikirie kuwa nambari ya kadi kulingana na nibbles ina fomu AB CD EF GH IJ. Ramani inaonyesha hii:

    1) vitengo tisa mwanzoni;
    2) Nibble A;
    3) Nibble usawa A (biti 1);
    4) Nibble B;
    5) Nibble usawa B (1 kidogo);

    16) Nibble I;
    17) Nibble parity I (1 kidogo);
    18) Nibble J;
    19) Nibble parity J (1 kidogo);
    20) Safu ya safu wima ya kunyata kwa chuchu A B C D E F G H I J;
    21) kidogo 0.

    Tunasoma biti zote 64, kufuta na kupata biti 40 za msimbo wa kadi. Ni busara kwamba ikiwa tutatoa nambari kama hiyo sisi wenyewe, tukifunga coil ya kadi iliyowekwa kwa msomaji, tutapata emulator ya kadi. Lakini sasa hatupendezwi naye.

    Tumejifunza kusoma ramani, lakini tunawezaje kuhamisha data kwenye ramani? Ili kufanya hivyo, unahitaji tu kuwasha au kuzima mzunguko wa 125 KHz kwa mujibu wa itifaki ya mawasiliano na kadi. Wakati wa "kimya" cha msomaji, kadi inatumiwa na nishati iliyohifadhiwa.

    Nafasi za T5557/T5577 zinaendana kikamilifu katika suala la itifaki za kurekodi, hata hivyo, zina kiwango cha chini tofauti kidogo na. nyakati za juu mapigo (kwa bahati nzuri, nyakati za T5557 zinaingiliana na T5577). EM4305 ina itifaki tofauti ya kurekodi.

    Ili kurekodi T5557 nilitumia nambari ya BolshoyK. Jedwali hapa chini linaonyesha vigezo vya ishara kwa fob muhimu ya T5557.

    Kurekodi huanza na mawimbi ya StartGape - unahitaji kuzima mawimbi ya 125 KHz kwa takriban 300 µs. Hii ni ishara kwa kadi kwamba data sasa itaanza kuhamishiwa kwake. Ifuatayo, unapaswa kuhamisha habari kwa tupu. Usimbaji wa data iliyopitishwa ni Manchester sawa.

    Nafasi T5557/T5577 na EM4305 zinafanya kazi nyingi na zinaweza aina tofauti moduli, nywila za usaidizi na mengi zaidi. Kila diski kwenye ubao ina seti ya vizuizi 32-bit. Madhumuni ya vitalu hivi ni tofauti. Wengine wana nambari ya ufunguo iliyotolewa (inachukua vizuizi viwili). Katika wengine - usanidi. Tatu, kitambulisho cha mtengenezaji. Tutatumia utendakazi mdogo, kwa hivyo wale ambao wanataka kuelewa maana ya biti hizi zote wanaweza kuangalia hati za nafasi zilizo wazi (nimeiambatisha kwenye kumbukumbu).

    Vitalu vinakusanywa katika kurasa mbili (0 na 1).

    Katika ukurasa wa sifuri kuna kizuizi cha usanidi na index 0. Hii ndio tutaweka. Kwa T5557/T5577 tutakuwa na byte zifuatazo za usanidi: 0x00.0x14.0x80.0x40 kwa mujibu wa jedwali kutoka kwa nyaraka (niliweka alama nyekundu njia zilizochaguliwa na bits moja):

    Kwa hivyo, tumechagua: mzunguko wa maambukizi ya data RF/64 (125 KHz/64), encoding ya aina ya Manchester, kutoa vitalu hadi pili (katika vitalu 1 na 2 tutakuwa na msimbo iliyotolewa na kadi). Kabla ya kuandika, opcode (2 opcode bits) na latch moja (lockbit) lazima itumwe. Opcodes 10b na 11b hutangulia uandishi wa data kwa kurasa 0 na 1 (kiasi kidogo hubainisha nambari ya ukurasa, biti muhimu zaidi hubainisha msimbo wa kuandika ukurasa). Tunatoa 10b kwa opcode (kazi yote inafanywa na ukurasa wa sifuri) na 0b kwa latch bit. Baada ya kuhamisha data hii yote, ni muhimu kuhamisha anwani ya bit-tatu ya ukurasa ili kuandikwa. Uhamisho wote wa data kwa T5557/T5577 unafanywa kutoka kwa muhimu zaidi hadi kwa muhimu zaidi.

    Kwa kuweka msimbo wa kadi katika vitalu 1 na 2 na usanidi katika block 0, unaweza kupata tagi ya RFID iliyorudiwa. Kama unaweza kuona, kila kitu ni rahisi.

    Aina inayofuata ya nafasi zilizo wazi ni EM4305. Kwa hivyo nililazimika kushughulika na kurekodi kwa tupu hii mwenyewe. Pia lina vitalu vya bits 32, lakini madhumuni yao ni tofauti.

    Usimbaji wa data iliyotumwa kwa kadi inategemea tofauti za muda. Ikiwa kulikuwa na tofauti wakati wa muda, basi ni sifuri, na ikiwa haikuwepo, ni moja. Neno la usanidi limehifadhiwa katika byte 4 na kwangu nilifafanua kama ifuatavyo: 0x5F,0x80,0x01,0x00 (usimbaji wa Manchester, RF/64, neno la pato 6). Kwa maneno 5 na 6 ninaandika msimbo wa kadi (bits 64 sawa ambazo kadi hutoa). EM4305 inahitaji kwamba uhamishaji ufanyike kutoka kwa sehemu ndogo hadi muhimu zaidi. Kadi inaelewa kuwa ubadilishanaji huanza nayo baada ya kuipa mchanganyiko wa msukumo:

    1. Tunazima uwanja kwa 48 µs.
    2. Tunawasha uwanja kwa 96 μs.
    3. Zima uga kwa 320 µs.
    4. Tunawasha uwanja kwa 136 μs.
    5. Zima shamba hadi amri inayofuata.
    Amri ya kuandika kizuizi kwenye ramani hupitishwa kama ifuatavyo:
    1. Tunatuma mlolongo wa juu wa msukumo.
    2. Tunatuma 0b.
    3. Tunasambaza CC0-CC1 na usawa wao P. (0101b kwa ajili ya kurekodi, angalia majedwali yaliyo hapa chini).
    4. Tunasambaza anwani ya kuzuia (tazama jedwali), sufuri mbili zinazofuata na usawa wa anwani.
    5. Tunasambaza data ya kuzuia (biti 32).

    Umbizo la Amri


    Nambari za amri

    Zuia Umbizo la Anwani

    Hii inaweka usanidi wa EM4305 tupu na msimbo wake.

    Kwa kweli, mwigaji rahisi hauitaji chochote zaidi.

    Nilifanya matoleo kadhaa ya mwiga na maonyesho tofauti. Kwa mfano, hapa kuna kopi iliyo na onyesho la 1602:

    Na hapa kuna video ya mwigaji anayefanya kazi kwenye onyesho la LPH9157-02.