Përmbajtje:
Video: AVR/Arduino RFID Reader Me Kodin UART në C: 4 Hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:33
RFID është mani, e gjetur kudo - nga sistemet e inventarit në sistemet e ID -ve të simboleve. Nëse keni qenë ndonjëherë në një dyqan dhe keni ecur nëpër ato gjëra që duken me detektor metali në pikat hyrëse/dalëse, atëherë keni parë RFID. Ka disa vende për të gjetur informacion të mirë mbi vendosjen e RFID, dhe ky udhëzues fokusohet në instalimin e lexuesit Parallax RFID (Serial TTL) në një AVR, me theks në kodin C të nevojshëm për të lexuar hyrjen serike. Kodi është në C dhe nuk përdor asnjë bibliotekë të jashtme. Në fakt, ai flet 2400 baud direkt pa përdorimin e një UART duke sinkronizuar me shkallën e baudit të lexuesit RFID dhe duke lexuar pinin dixhital me të cilin është i lidhur. I emocionuar? Edhe une gjithashtu.
Hapi 1: Merrni Mallrat
Ju do të keni nevojë për listën e mëposhtme të pjesëve:
- RFID Reader (Parallax #28140 39.99 $)
- Etiketa RFID (Parallax #32397 $ 0.99)
- Kloni AVR ose Arduino (nëse përdorni një AVR të stokut, do t'ju duhet gjithashtu një kondensator max232, 5 x 1uF dhe një lidhës DE9)
- Dërrasë buke pa saldim
Opsionale
- Kokë me 4 pozicione
- Tela
(dhe max232 etj për komunikimin e informacionit të etiketës) Ju gjithashtu mund të lidhni ekranin tuaj të preferuar LCD në vend të dërgimit të të dhënave të etiketës përmes RS232.
Hapi 2: Lidhni Pjesët
Ana harduerike e gjërave është mjaft e lehtë. Në vend që ta fus lexuesin tim RFID direkt në tabelën time të bukës, unë zgjodha të bëj një kabllo të shpejtë në mënyrë që ta lëvizja lexuesin RFID pak më mirë. Për këtë, sapo ndërpreva 4 pozicione nga një shirit me kokë me një prizë femre për të cilën isha shtrirë dhe ngjitur në tre tela. Kaseta elektrike përfundoi lidhësin geto. Lexuesi RFID ka 4 lidhje:
- Vcc
- ÇAFTOJ
- JASHT
- Gnd
Siç e keni menduar ndoshta, lidhni Vcc me +5V dhe Gnd me tokën. Për shkak se lexuesi RFID konsumon kaq shumë energji, mund ta godisni pinin ENABLE për ta fikur dhe ndezur në intervale të ndryshme. Unë thjesht zgjodha ta vazhdoj atë. Për shkak se është i përmbysur, e tërheq atë LOW për ta aktivizuar. Përndryshe, mund ta lidhni me tokën. Unë e lidha atë me PIND3 për të më dhënë opsionet e aktivizimit/çaktivizimit nëse vendosa. PIN OUT është vendi ku lexuesi dërgon të dhënat e tij serike pasi lexon një etiketë. E lidha me PIND2. Shënim, në Universin Parallax, e kuqe do të thotë të shkosh. Kjo do të thotë, një LED i gjelbër do të thotë që njësia është joaktive dhe e papunë, ndërsa një LED e kuqe do të thotë se njësia është aktive. * ngre supet* Shko figura.
Hapi 3: Shkruani Kodin
Për të lexuar të dhënat nga lexuesi RFID, duhet të dini kur është paraqitur një etiketë, hiqni të dhënat nga porta serike, pastaj dërgojini diku.
Formati i të dhënave të lexuesit RFID
Lexuesi Parallax RFID dërgon të dhëna me një ritëm fiks, akullnajor prej 2400 baud. Një etiketë RFID është 10 bajt. Për të lejuar zbulimin/korrigjimin e gabimit, meqenëse lexuesi mund të fiket nga zhurma e rastësishme, RFID 10-bajtësh kufizohet nga një roje nisëse dhe ndaluese. Sentineli fillestar është ushqimi i linjës (0x0A) dhe rojtari ndalesë është kthimi i karrocës (0x0D). Duket kështu:
[Filloni Sentinel | Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 | Byte 8 | Byte 9 | Byte 10 | Ndalo Sentinelin]Këto janë tre hapat kryesorë.
Mësoni kur është paraqitur një etiketë
Kam përdorur një ndërrim ndërrimi pin në AVR që njofton firmware -in se ka ndodhur një ndryshim në një kunj të monitoruar. Konfigurimi i AVR për këtë është i lehtë dhe kërkon vendosjen e flamurit, tregimin e MCU se cilën pin doni të monitoroni dhe vendosjen e bitit të ndërprerjes globale. Konfiguro PCINT
BSET (PCICR, PCIE2); // regjistri i ndryshimit të kontrollit të ndërprerjes së kontrollit pcie2 BSET (PCMSK2, PCINT18); // aktivizoni ndërprerjen e ndryshimit të kunjave për PCINT18 (PD2) BSET (SREG, 7); // Vendosni SREG I-bitShkruani rutinën tuaj të shërbimit të ndërprerjes Ju dëshironi ta mbani ISR -në tuaj të shkurtër kështu që në vektorin tim të ndërprerjes unë lexoj të gjithë bajtin, pak nga pak, dhe e ruaj bajtin në një grup të karakterit global të paqëndrueshëm. Unë bëj sa vijon në çdo ndërprerje:
- Kontrolloni për të siguruar që jam në fillim
- Përqendroni kohën në pulsin e mesëm në 2400 baud (shpejtësia e lexuesit RFID)
- Kaloni pjesën e fillimit dhe ndaloni në mes të bitit tjetër
- Lexoni secilën pjesë në një numër të plotë të panënshkruar
- Kur të kem 8 bit, vendosni bajtin në një grup karakterësh
- Kur kam mbledhur 12 bajtë, njoftoni MCU -në se etiketa është lexuar për zbulimin e gabimit.
Ndryshova kodin SoftSerial nga Mikal Hart i cili modifikoi kodin nga David Mellis për vonesat e përcaktuara në mënyrë eksperimentale në rutinat serike.
Analizo daljen RS232
Rutina PCINT përmban kodin për leximin e daljes RS232 nga lexuesi RFID. Kur kam marrë 12 bajt (RFID 10-bajtësh plus rojtarë) e vendos bDataReady në 1 dhe e lejoj lakin kryesor të përpunojë të dhënat dhe t'i shfaqë ato.
// ky është mbajtësi i ndërprerjesISR (PCINT2_vect) {if (BCHK (PIND, RFID_IN)) // Biti i fillimit shkon me kthim të ulët; uint8_t bit = 0; Vonesa e Sintonizuar (CENTER_DELAY); // Qendra në bitin e fillimit për (uint8_t x = 0; x <8; x ++) {TunedDelay (INTRABIT_DELAY); // kalo pak, vëlla… nëse (BCHK (PIND, RFID_IN)) BSET (bit, x); tjetër BCLR (bit, x); } TunedDelay (INTRABIT_DELAY); // kapërce bitin e ndalimit RFID_tag [rxIdx] = bit; ++ rxIdx; nëse (rxIdx == 12) bDataReady = 1;}
Shfaq etiketën tënde
Në lakin kryesor (), gjatë lakut (përherë), kontrolloj për të parë nëse bDataReady është vendosur, duke sinjalizuar se e gjithë struktura RFID është dërguar. Pastaj kontrolloj për të parë nëse është një etiketë e vlefshme (p.sh. karakteret e fillimit dhe ndalimit janë përkatësisht 0x0A dhe 0x0D), dhe nëse po, e dërgoj nga lidhja ime RS232.
për (;;) {nëse (bDataReady) {#ifdef _DEBUG_ USART_tx_S ("Fillo bajt:"); USART_tx_S (itoa (RFID_tag [0], & ibuff [0], 16)); ibuff [0] = 0; ibuff [1] = 0; USART_tx_S ("\ nNdalo bajtin:"); USART_tx_S (itoa (RFID_tag [11], & ibuff [0], 16));#endif if (ValidTag ()) {USART_tx_S ("\ nRFID Etiketa:"); për (uint8_t x = 1; x <11; x ++) {USART_tx_S (itoa (RFID_tag [x], ibuff, 16)); nëse (x! = 10) USART_tx (& apos: & apos); } USART_tx_S ("\ n"); } rxIdx = 0; bDataReady = 0; }}
Hapi 4: Kodi dhe Lamtumira
Kjo faqe përmban një skedar zip me kodin përkatës. Wasshtë shkruar në AVR Studio 4.16. Nëse përdorni fletore, eklips ose vi (ose diçka tjetër) të programuesit, do t'ju duhet të kopjoni një Makefile të besuar në drejtori dhe t'i shtoni këto skedarë në vijën burimore. Gjithashtu vini re, koha për seksionin e leximit serik bazohet në një 16 MHz MCU. Nëse vraponi me një frekuencë të ndryshme të orës, do t'ju duhet të përcaktoni në mënyrë eksperimentale vonesat e akorduara për t'u përqëndruar në pulsionet e normës së baudit. Shpresoj se kjo e udhëzueshme ju ka ndihmuar në një farë mënyre. Nëse keni ndonjë sugjerim se si mund të përmirësohet, mos hezitoni të më tregoni!
Recommended:
Përditësoni Mburojën Motorike për SMARS Robot Arduino - Ngarko kodin përmes Bluetooth: 20 hapa
Përditësoni Mburojën Motorike për SMARS Robot Arduino - Ngarko kodin përmes Bluetooth: Ka disa mundësi për mburojën motorike që mund të përdorni me Arduino Uno në këtë projekt robot SMARS, shumë shpesh duke përdorur Motor Shield V1 të prodhuar nga Adafruit ose të pajtueshëm (klonuar nga Kina), por disavantazhi i kësaj mburoje nuk ka Blueto
Si të ngarkoni kodin C në AVR duke përdorur Arduino Uno si programues: 6 hapa
Si të Ngarkoni C C në AVR duke përdorur Arduino Uno Si Programues: HI të gjithëve: D Këtu do të ndaj një mënyrë të thjeshtë për të programuar çdo çip AVR duke përdorur Arduino Uno R3 E tëra që ju nevojitet për të djegur kodin te mikrokontrolluesi juaj është Arduino Uno në vend që të blini. programues i cili kushtoi shumë
Demo 4x4 e një tabele elektronike shahu/ Me Arduino Mega + RFID Reader + Sensorë me efekt Hall: 7 hapa
Demo 4x4 e një tabele elektronike të shahut/ Me Arduino Mega + Lexues RFID + Sensorë me efekt Hall: Përshëndetje krijues, unë jam Tahir Miriyev, i diplomuar në vitin 2018 nga Universiteti Teknik i Lindjes së Mesme, Ankara/ Turqi. Unë u diplomova në Matematikë të Aplikuar, por gjithmonë më pëlqente të bëja gjëra, veçanërisht kur përfshinte punë me dorë me elektronikë, dizajn dhe programim.
Përdorni MFRC522 RFID Reader Me Arduino: 5 hapa
Përdorni MFRC522 RFID Reader Me Arduino: Përshëndetje! Unë do t'ju mësoj se si të bëni një skaner të lezetshëm, të lehtë për të bërë çelësa ose skanues fob kyç! Nëse keni një modul RFID MFRC522, led, rezistorë, tela, një arduino uno, një pjatë buke dhe një bateri 9v (opsionale), atëherë jeni mirë të shkoni për të bërë një ftohje,
Porta USB NODEMcu nuk po punon? Ngarko kodin duke përdorur USB në modulin TTL (FTDI) në vetëm 2 hapa: 3 hapa
Porta USB NODEMcu nuk po punon? Ngarko kodin duke përdorur USB në modulin TTL (FTDI) në vetëm 2 hapa: Të lodhur nga lidhja me shumë tela nga USB në modulin TTL në NODEMcu, ndiqni këtë udhëzues, për të ngarkuar kodin në vetëm 2 hapa. Nëse porta USB e NODEMcu nuk po punon, atëherë mos u frikësoni. Justshtë vetëm çipi i drejtuesit USB ose lidhësi USB,