Բովանդակություն:
Video: AVR/Arduino RFID ընթերցող UART կոդով C: 4 քայլով
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:53
RFID- ը մոլություն է, որը հանդիպում է ամենուր `գույքագրման համակարգերից մինչև կրծքանշանի ID համակարգեր: Եթե երբևէ եղել եք հանրախանութ և մուտքի/ելքի կետերում անցել եք մետաղադետեկտորի տեսք ունեցող իրերով, ապա տեսել եք RFID: Կան մի քանի վայրեր, որտեղ կարելի է գտնել լավ տեղեկատվություն RFID- ի ստեղծման վերաբերյալ, և այս հրահանգը կենտրոնանում է Parallax RFID ընթերցողի (Serial TTL) AVR- ի վրա `շեշտը դնելով C կոդի վրա, որն անհրաժեշտ է սերիական մուտքագրումը կարդալու համար: Կոդը C է և չի օգտագործում որևէ արտաքին գրադարան: Իրականում, այն խոսում է 2400 բաուդ ուղղակիորեն առանց UART- ի օգտագործման ՝ համաժամեցնելով RFID ընթերցողի բաուդ արագությանը և կարդալով թվային կապը, որին միացված է: Հուզված? Ես նույնպես.
Քայլ 1: Ստացեք ապրանքները
Ձեզ հարկավոր կլինի մասերի հետևյալ ցուցակը.
- RFID ընթերցող (Պարալաքս #28140 39,99 դոլար)
- RFID պիտակ (Parallax #32397 $ 0.99)
- AVR կամ Arduino կլոն (եթե օգտագործում եք պահեստային AVR, ձեզ նույնպես անհրաժեշտ կլինեն max232, 5 x 1uF կոնդենսատորներ և DE9 միակցիչ)
- Առանց զոդման տախտակ
Ըստ ցանկության
- 4 դիրքի վերնագիր
- Մետաղալար
(և պիտակի տեղեկատվության հաղորդման համար max232 և այլն) Դուք կարող եք նաև միացնել ձեր նախընտրած LCD էկրանը ՝ RS232- ի միջոցով պիտակի տվյալների ուղարկման փոխարեն:
Քայլ 2: Միացրեք մասերը
Իրերի ապարատային կողմը բավականին հեշտ է: RFID ընթերցողին անմիջապես իմ տախտակի մեջ դնելու փոխարեն ես նախընտրեցի արագ մալուխ պատրաստել, որպեսզի կարողանամ RFID ընթերցողը մի փոքր ավելի լավ տեղաշարժել: Դրա համար ես պարզապես կտրեցի 4 դիրքեր, որոնցից ես պառկած էի և կպցրեցի երեք լարերի վրա: Էլեկտրական ժապավենը ավարտեց գետտոյի միակցիչը: RFID ընթերցողն ունի 4 միացում.
- Vcc
- ԱՌԱԱՐԿԵԼ
- ԴՈ OՐՍ
- Գնդ
Ինչպես հավանաբար կռահեցիք, միացրեք Vcc +5V- ին, իսկ Gnd- ը ՝ գետնին: Քանի որ RFID ընթերցողը շատ էներգիա է սպառում, դուք կարող եք հարվածել ԱՆNAՆԵԼ քորոցին ՝ այն անջատելու և միացնելու համար տարբեր ընդմիջումներով: Ես պարզապես ընտրեցի շարունակել այն: Քանի որ այն շրջված է, դուք այն ձգում եք OWԱOWՐ ՝ ակտիվացնելու համար: Այլապես, կարող եք այն միացնել գետնին: Ես այն միացրեցի PIND3- ին ՝ որոշելու դեպքում ինձ միացնելու/անջատելու տարբերակներ տալու համար: OUT պինն այն վայրն է, որտեղ ընթերցողը ուղարկում է իր սերիական տվյալները պիտակը կարդալուց հետո: Ես այն կապեցի PIND2- ի հետ: Ուշադրություն դարձրեք, Պարալաքսի տիեզերքում կարմիրը նշանակում է գնալ: Այսինքն, կանաչ LED- ը նշանակում է, որ միավորը անգործուն է և անգործուն, իսկ կարմիր LED- ը նշանակում է, որ միավորը ակտիվ է: * ուսերը թոթել* Գնալ գործիչ:
Քայլ 3: Գրեք ծածկագիրը
RFID ընթերցողից տվյալները կարդալու համար պետք է իմանալ, թե երբ է պիտակը ներկայացվել, սերիական պորտից հանել տվյալները, այնուհետև ինչ -որ տեղ ուղարկել:
RFID ընթերցողի տվյալների ձևաչափ
Parallax RFID ընթերցողը տվյալներ է ուղարկում 2400 baud ֆիքսված, սառցադաշտային արագությամբ: RFID պիտակը 10 բայթ է: Սխալների հայտնաբերում/ուղղում թույլ տալու համար, քանի որ ընթերցողը կարող է անջատվել պատահական աղմուկից, 10 բայթ RFID- ը սահմանափակվում է սկզբնական և դադարեցնող պահակակետով: Մեկնարկային պահակախումբը գծային հոսք է (0x0A), իսկ կանգառ պահակակը ՝ վագոնի վերադարձ (0x0D): Կարծես այսպիսին է.
[Սկսել Sentinel | Բայթ 1 | Բայթ 2 | Բայթ 3 | Բայթ 4 | Բայտ 5 | Բայթ 6 | Բայթ 7 | Բայթ 8 | Բայթ 9 | Բայթ 10 | Stop Sentinel]Սրանք երեք հիմնական քայլերն են:
Իմացեք, թե երբ է պիտակը ներկայացվել
Ես AVR- ում օգտագործել եմ Pin Change Interrupt- ը, որը ծանուցում է որոնվածը, որ փոփոխություն է տեղի ունեցել վերահսկվող քորոցում: Դրա համար AVR- ի կազմաձևումը հեշտ է և պահանջում է դրոշի տեղադրում, MCU- ին ասելով, թե որ քորոցն եք ցանկանում վերահսկել և գլոբալ ընդհատման բիթը սահմանելը: Կարգավորել PCINT- ը
BSET (PCICR, PCIE2); // կապի փոփոխման ընդհատման հսկիչ գրանցամատյան pcie2 BSET (PCMSK2, PCINT18); // միացնել կապի փոփոխման ընդհատումը PCINT18 (PD2) BSET (SREG, 7) համար; // Սահմանել SREG I-bitԳրեք ձեր ընդհատման ծառայության ռեժիմը: Դուք ցանկանում եք կարճ պահել ձեր ISR- ն, այնպես որ իմ ընդհատման վեկտորում ես ամբողջ բայթը կարդում եմ բիթ -բիթ և պահում եմ բայթը գլոբալ անկայուն բնույթի զանգվածում: Յուրաքանչյուր ընդհատման ժամանակ ես անում եմ հետևյալը.
- Ստուգեք, որպեսզի համոզվեմ, որ ես սկզբնական շրջանում եմ
- Կենտրոնացրեք ժամանակը միջին զարկերակի վրա 2400 baud (RFID ընթերցողի արագություն)
- Բաց թողեք մեկնարկի բիթը և դադար տվեք հաջորդ բիթերի կեսին
- Յուրաքանչյուր հատված կարդացեք անստորագիր ամբողջ թվով
- Երբ ես ստանում եմ 8 բիթ, բայտը տեղադրեք բնույթի զանգվածի մեջ
- Երբ ես հավաքեմ 12 բայթ, տեղեկացրեք MCU- ին, որ պիտակը կարդացվել է սխալի հայտնաբերման համար:
Ես փոփոխեցի SoftSerial ծածկագիրը Mikal Hart- ից, ով փոփոխեց կոդը David Mellis- ից ՝ սերիական առօրյաների փորձնականորեն որոշված ուշացումների համար:
Վերլուծել RS232 ելքը
PCINT ռեժիմը պարունակում է RFID ընթերցողից RS232 ելքը կարդալու ծածկագիր: Երբ ես ստանում եմ 12 բայթ (10 բայթ RFID գումարած պահապաններ) bDataReady- ը դնում եմ 1-ի և թույլ եմ տալիս, որ հիմնական հանգույցը մշակի տվյալները և ցուցադրի դրանք:
// սա ընդհատումների մշակողն է ՝ ISR (PCINT2_vect) {if (BCHK (PIND, RFID_IN)) // Start bit- ը ցածր եկամտաբերությամբ է անցնում; uint8_t բիթ = 0; TunedDelay (CENTER_DELAY); // Մեկնարկային բիթ կենտրոնի համար (uint8_t x = 0; x <8; x ++) {TunedDelay (INTRABIT_DELAY); // մի փոքր բաց թող, եղբայր… եթե (BCHK (PIND, RFID_IN)) BSET (bit, x); այլ BCLR (բիթ, x); } TunedDelay (INTRABIT_DELAY); // բաց թողնել կանգառի բիթ RFID_tag [rxIdx] = բիթ; ++ rxIdx; եթե (rxIdx == 12) bDataReady = 1;}
Displayուցադրել ձեր պիտակը
Հիմնական (), հավերժական օղակի ընթացքում ես ստուգում եմ ՝ արդյոք bDataReady- ը դրված է ՝ ազդանշան տալով, որ ուղարկվել է ամբողջ RFID կառուցվածքը: Այնուհետև ես ստուգում եմ ՝ արդյոք դա վավեր պիտակ է (այսինքն ՝ սկզբի և կանգառի նշանները համապատասխանաբար 0x0A և 0x0D են), և եթե այո, ես այն ուղարկում եմ իմ RS232 կապը:
for (;;) {if (bDataReady) {#ifdef _DEBUG_ USART_tx_S ("Start byte:"); USART_tx_S (itoa (RFID_tag [0], & ibuff [0], 16)); ibuff [0] = 0; ibuff [1] = 0; USART_tx_S ("\ n Դադարեցնել բայթ."); USART_tx_S (itoa (RFID_tag [11], & ibuff [0], 16));#endif if (ValidTag ()) {USART_tx_S ("\ nRFID Tag:"); (uint8_t x = 1; x <11; x ++) {USART_tx_S (itoa (RFID_tag [x], ibuff, 16)) համար; եթե (x! = 10) USART_tx (& apos: & apos); } USART_tx_S ("\ n"); } rxIdx = 0; bDataReady = 0; }}
Քայլ 4: Կոդ և հրաժեշտ
Այս էջը պարունակում է համապատասխան կոդով zip ֆայլ: Այն գրվել է AVR Studio 4.16 -ում: Եթե դուք օգտագործում եք ծրագրավորողի նոթատետր, խավարում կամ vi (կամ այլ բան), ապա ձեզ հարկավոր է պատճենել վստահելի Makefile- ը գրացուցակում և ավելացնել այդ ֆայլերը աղբյուրի տողում: Բացի այդ, նշեք, որ սերիական ընթերցման բաժնի ժամանակը հիմնված է 16 ՄՀց MCU: Եթե դուք աշխատում եք ժամացույցի այլ հաճախականությամբ, ապա ձեզ հարկավոր է փորձնականորեն որոշել արագացված արագության իմպուլսների վրա կենտրոնացված կարգավորված ուշացումները: Հուսով եմ, որ այս հրահանգը ձեզ ինչ -որ կերպ օգնեց: Եթե ունեք որևէ առաջարկ, թե ինչպես կարելի է բարելավել այն, մի հապաղեք ինձ տեղյակ պահել:
Խորհուրդ ենք տալիս:
Անլար SD քարտի ընթերցող [ESP8266] ՝ 10 քայլ (նկարներով)
Անլար SD քարտի ընթերցող [ESP8266]. USB- ը պետք է լիներ ունիվերսալ, և հիմնական նպատակը այլ սարքերի հետ տաք փոխանակելի, չափազանց հեշտ ինտերֆեյսի ստեղծումն էր, բայց տարիների ընթացքում գաղափարը անհեթեթ դարձավ: Այս USB պորտերի շատ տարբեր տարբերակներ կան, ինչը շատ հիասթափեցնող է
ScanUp NFC ընթերցող/գրող և աուդիո ձայնագրիչ ՝ կույրերի, տեսողության խնդիրներ ունեցողների և այլոց համար. 4 քայլ (նկարներով)
ScanUp NFC ընթերցող/գրող և աուդիո ձայնագրիչ ՝ կույրերի, տեսողության խնդիրներ ունեցողների և այլոց համար. Ես ուսումնասիրում եմ արդյունաբերական դիզայն, և նախագիծը իմ կիսամյակի աշխատանքն է: Նպատակն է աջակցել տեսողության խնդիրներ ունեցող և կույրերին այնպիսի սարքով, որը թույլ է տալիս ձայնը ձայնագրել SD քարտի վրա ՝ WAV ձևաչափով և այդ տեղեկատվությունը կանչել NFC պիտակով: Այսպիսով
Arduino RFID ընթերցող TFT էկրանով ՝ 7 քայլ
Arduino RFID Reader TFT էկրանով. Ես ձեզ ցույց կտամ այս ուսանելի ձևով, թե ինչպես կարելի է ձևավորել գեղեցիկ տեսք ունեցող RFID ընթերցող TFT էկրանով և պատի տեղադրման համար: Շատ հեշտ է ստեղծել գեղեցիկ տեսք ունեցող RFID ընթերցող TFT ելքով `Arduino- ով պատի տեղադրման համար MKR ձեր ընտրությամբ և մեր Ar
Arduino RFID UHF ընթերցող `10 քայլ
Arduino RFID UHF Reader. Սույն հրահանգի նպատակն է ապահովել UHF RFID ընթերցողի հետ միկրոկոնտրոլերի միացման հեշտ հասկացող օրինակ: Ընթերցողը, որը մենք օգտագործում ենք, Thinkify TR-265- ն է: Theույցը բաղկացած է երեք UHF պիտակներից, որոնցից յուրաքանչյուրն ունի յուրահատուկ ID:
Օգտագործեք MFRC522 RFID ընթերցող Arduino- ով. 5 քայլ
Օգտագործեք MFRC522 RFID ընթերցող Arduino- ի հետ. Ես ձեզ կսովորեցնեմ, թե ինչպես պատրաստել հիանալի, հեշտ պատրաստվող բանալի քարտ կամ բանալին ֆոբ սկաներ: Եթե ունեք RFID MFRC522 մոդուլ, լուսարձակներ, ռեզիստորներ, լարեր, arduino uno, տախտակ և 9 վ մարտկոց (ըստ ցանկության), ապա լավ է գնալ զովացուցիչ