Satura rādītājs:
- 1. darbība: iegādājieties preces
- 2. darbība: pievienojiet detaļas
- 3. solis: uzrakstiet kodu
- 4. darbība: kods un atvadīšanās
Video: AVR/Arduino RFID lasītājs ar UART kodu C: 4 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 11:00
RFID ir trakums, kas sastopams visur - no inventāra sistēmām līdz emblēmu ID sistēmām. Ja esat kādreiz apmeklējis universālveikalu un staigājis pa šīm metāla detektora izskata lietām ieejas/izejas vietās, tad esat redzējis RFID. Ir vairākas vietas, kur var atrast labu informāciju par RFID iestatīšanu, un šī pamācība ir vērsta uz Parallax RFID lasītāja (Serial TTL) uzstādīšanu AVR, uzsvaru liekot uz C kodu, kas nepieciešams sērijveida ievades nolasīšanai. Kods ir C un neizmanto nekādas ārējās bibliotēkas. Faktiski tas runā 2400 bodu tieši, neizmantojot UART, sinhronizējoties ar RFID lasītāja bodu ātrumu un nolasot digitālo tapu, ar kuru tas ir savienots. Satraukti? ES arī.
1. darbība: iegādājieties preces
Jums būs nepieciešams šāds detaļu saraksts:
- RFID lasītājs (Parallax #28140 $ 39,99)
- RFID tags (Parallax #32397 0,99 ASV dolāri)
- AVR vai Arduino klons (ja izmantojat rezerves AVR, jums būs nepieciešami arī max232, 5 x 1uF kondensatori un DE9 savienotājs)
- Maizes dēlis bez lodēšanas
Neobligāti
- 4 pozīciju galvene
- Vads
(un max232 utt., lai sazinātos ar informāciju par tagu) Varat arī pievienot savu iecienītāko LCD ekrānu, nevis sūtīt tagu datus, izmantojot RS232.
2. darbība: pievienojiet detaļas
Lietas aparatūras puse ir diezgan vienkārša. Tā vietā, lai ievilktu RFID lasītāju tieši savā maizes dēļa panelī, es izvēlējos izveidot ātru kabeli, lai varētu mazliet labāk pārvietot RFID lasītāju. Šim nolūkam es vienkārši nogriezu 4 pozīcijas no sieviešu ligzdas galvenes sloksnes, kurā es gulēju un pielodēju pie trim vadiem. Elektriskā lente pabeidza geto savienotāju. RFID lasītājam ir 4 savienojumi:
- Vcc
- ENABLE
- ĀRĀ
- Gnd
Kā jūs droši vien uzminējāt, pievienojiet Vcc pie +5V un Gnd ar zemi. Tā kā RFID lasītājs patērē tik daudz enerģijas, varat ar dažādu intervālu izsist un ieslēgt taustiņu ENABLE, lai to izslēgtu un ieslēgtu. Es vienkārši izvēlējos to turpināt. Tā kā tas ir apgriezts, jūs to pavelkat LOW, lai to aktivizētu. Alternatīvi, jūs varat to savienot ar zemi. Es to savienoju ar PIND3, lai dotu man iespēju iespējot/atspējot, ja es nolemju. OUT tapa ir vieta, kur lasītājs nosūta sērijas datus pēc taga nolasīšanas. Es to savienoju ar PIND2. Piezīme. Parallax Universe sarkans nozīmē iet. Tas nozīmē, ka zaļa gaismas diode nozīmē, ka iekārta ir neaktīva un dīkstāvē, savukārt sarkana gaismas diode nozīmē, ka iekārta ir aktīva. * parausta plecus* Iet figūru.
3. solis: uzrakstiet kodu
Lai nolasītu datus no RFID lasītāja, jums jāzina, kad ir iesniegts tags, jāizvelk dati no seriālā porta un pēc tam jānosūta kaut kur.
RFID lasītāju datu formāts
Parallax RFID lasītājs nosūta datus ar fiksētu, 2400 baudu ledus tempu. RFID tags ir 10 baiti. Lai ļautu noteikt/labot kļūdas, jo lasītāju var izslēgt no nejaušiem trokšņiem, 10 baitu RFID ierobežo sākuma un beigu signāls. Sākuma kontrolsargs ir līnijas padeve (0x0A) un beigu kontrolieris ir ratiņu atgriešana (0x0D). Tas izskatās šādi:
[Sākt Sentinel | 1. baitu | 2. baitu | 3. baitu | 4. baitu | 5. baitu | 6. baitu | 7. Baitu | 8. Baitu | 9. Baitu | Apturēt Sentinel]Šie ir trīs galvenie soļi.
Ziniet, kad atzīme ir iesniegta
AVR izmantoju PIN maiņas pārtraukumu, kas paziņo programmaparatūrai, ka uzraudzītajā tapā ir notikušas izmaiņas. AVR konfigurēšana šim nolūkam ir vienkārša un prasa iestatīt karodziņu, norādīt MCU, kuru tapu vēlaties pārraudzīt, un iestatīt globālo pārtraukšanas bitu. Konfigurējiet PCINT
BSET (PCICR, PCIE2); // pin change interrupt control register pcie2 BSET (PCMSK2, PCINT18); // iespējot tapas maiņas pārtraukšanu PCINT18 (PD2) BSET (SREG, 7); // Iestatiet SREG I bituJūs vēlaties, lai jūsu ISR būtu īss, tāpēc savā pārtraukšanas vektorā es lasu visu baitu, pa bitam un uzglabāju baitu globālā nepastāvīgā rakstzīmju masīvā. Katrā pārtraukumā es rīkojos šādi:
- Pārbaudiet, vai esmu iesācējs
- Centrējiet laiku uz vidējo impulsu ar 2400 baudām (RFID lasītāja ātrums)
- Izlaidiet sākuma bitu un pauzējiet līdz nākamā bita vidum
- Katru bitu izlasiet veselam skaitlim, kas nav parakstīts
- Kad man ir 8 biti, ievietojiet baitu rakstzīmju masīvā
- Kad esmu savācis 12 baitus, dariet zināmu MCU, ka tags ir nolasīts kļūdu noteikšanai.
Es modificēju SoftSerial kodu no Mikala Hārta, kurš modificēja David Mellis kodu, lai eksperimentāli noteiktu kavēšanos sērijveida darbībās.
Parsēt RS232 izvadi
PCINT rutīnā ir kods RS232 izvades nolasīšanai no RFID lasītāja. Kad esmu ieguvis 12 baitus (10 baitu RFID plus kontrolsargi), es iestatīju bDataReady uz 1 un ļauju galvenajai cilpai apstrādāt datus un parādīt to.
// tas ir pārtraukšanas apstrādātājsISR (PCINT2_vect) {if (BCHK (PIND, RFID_IN)) // Sākuma bits atgriežas zemā atdevē; uint8_t bits = 0; TunedDelay (CENTER_DELAY); // Sākuma bita centrs (uint8_t x = 0; x <8; x ++) {TunedDelay (INTRABIT_DELAY); // mazliet izlaist, brāl… if (BCHK (PIND, RFID_IN)) BSET (bit, x); cits BCLR (bits, x); } TunedDelay (INTRABIT_DELAY); // izlaist pieturas bitu RFID_tag [rxIdx] = bits; ++ rxIdx; ja (rxIdx == 12) bDataReady = 1;}
Parādiet savu tagu
Galvenajā () cikla laikā uz visiem laikiem es pārbaudu, vai ir iestatīts bDataReady, norādot, ka visa RFID struktūra ir nosūtīta. Pēc tam es pārbaudu, vai tas ir derīgs tags (ti, sākuma un beigu rakstzīmes ir attiecīgi 0x0A un 0x0D), un, ja jā, es to izsūtu no sava RS232 savienojuma.
par (;;) {if (bDataReady) {#ifdef _DEBUG_ USART_tx_S ("Sākuma baits:"); USART_tx_S (itoa (RFID_tag [0], & ibuff [0], 16)); ibufs [0] = 0; ibufs [1] = 0; USART_tx_S ("\ nPārtraukt baitu:"); USART_tx_S (itoa (RFID_tag [11], & ibuff [0], 16));#endif if (ValidTag ()) {USART_tx_S ("\ nRFID tags:"); par (uint8_t x = 1; x <11; x ++) {USART_tx_S (itoa (RFID_tag [x], ibuff, 16)); ja (x! = 10) USART_tx (& apos: & apos); } USART_tx_S ("\ n"); } rxIdx = 0; bDataReady = 0; }}
4. darbība: kods un atvadīšanās
Šajā lapā ir ZIP fails ar atbilstošo kodu. Tas tika rakstīts AVR studijā 4.16. Ja izmantojat programmētāja piezīmju grāmatiņu, aptumsumu vai vi (vai kaut ko citu), jums vajadzēs nokopēt uzticamu Makefile direktorijā un pievienot šos failus avota rindai. Ņemiet vērā arī to, ka sērijas lasīšanas sadaļas laiks ir balstīts uz 16MHz MCU. Ja jūs izmantojat citu pulksteņa frekvenci, jums būs eksperimentāli jānosaka noregulētie kavējumi, lai centrētu uz bodu ātruma impulsiem. Es ceru, ka šī pamācība jums kaut kādā veidā palīdzēja. Ja jums ir kādi ieteikumi, kā to uzlabot, nevilcinieties ziņot man!
Ieteicams:
Uz ESP32 balstīts RFID lasītājs ar skārienekrānu: 7 soļi
Uz ESP32 balstīts RFID lasītājs ar skārienekrānu: Šajā nedaudz pamācībā es parādīšu, kā izveidot vienkāršu RFID lasītāju ar TFT izeju, lai to varētu uzstādīt pie sienas, izmantojot ESP32 DEV KIT C moduli, RC-522 balstītu lasītāja PCB un AZ-Touch ESP komplektu. Šo lasītāju var izmantot, lai piekļūtu durvīm vai signalizētu iebrucējiem
Bezvadu SD karšu lasītājs [ESP8266]: 10 soļi (ar attēliem)
Bezvadu SD karšu lasītājs [ESP8266]: USB vajadzēja būt universālam, un galvenais mērķis bija izveidot karsti maināmu, īpaši viegli lietojamu saskarni ar citām ierīcēm, taču gadu gaitā šī ideja bija neskaidra. Šo USB portu ir tik daudz dažādu variantu, kas ir tik satraucoši
ScanUp NFC lasītājs/rakstītājs un audio ierakstītājs neredzīgiem, vājredzīgiem un visiem citiem: 4 soļi (ar attēliem)
ScanUp NFC lasītājs/rakstnieks un audio ierakstītājs neredzīgiem, vājredzīgiem un visiem citiem: Es studēju rūpniecisko dizainu, un projekts ir mana semestra darbs. Mērķis ir atbalstīt vājredzīgus un neredzīgus cilvēkus ar ierīci, kas ļauj ierakstīt audio WAV formātā SD kartē un izsaukt šo informāciju, izmantojot NFC tagu. Tātad
Arduino RFID lasītājs ar TFT displeju: 7 soļi
Arduino RFID lasītājs ar TFT displeju: šajā pamācībā es jums parādīšu, kā izveidot jauku RFID lasītāju ar TFT displeju un uzstādīt pie sienas. Ir ļoti viegli izveidot jauku RFID lasītāju ar TFT izeju, lai to uzstādītu pie sienas ar Arduino MKR pēc jūsu izvēles un mūsu Ar
Arduino RFID UHF lasītājs: 10 soļi
Arduino RFID UHF lasītājs: šīs pamācības mērķis ir sniegt viegli saprotamu mikrokontrollera saskarnes ar UHF RFID lasītāju piemēru. Lasītājs, ko mēs izmantojam, ir Thinkify TR-265. Demonstrācija sastāv no trim UHF tagiem ar unikālu ID