Kazalo:
Video: AVR/Arduino RFID bralnik s kodo UART v C: 4 koraki
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:09
RFID je norost, ki jo najdemo povsod - od sistemov inventarja do sistemov identifikacijskih oznak. Če ste že kdaj bili v veleblagovnici in hodili skozi tiste stvari, ki so videti na detektorju kovin, na vstopnih/izstopnih točkah, ste videli RFID. Dobre informacije o nastavitvi RFID lahko najdete na več mestih, ta pouk pa se osredotoča na namestitev bralnika Parallax RFID (Serial TTL) na AVR, s poudarkom na kodi C, ki je potrebna za branje serijskega vhoda. Koda je v jeziku C in ne uporablja nobenih zunanjih knjižnic. Pravzaprav govori 2400 baud neposredno brez uporabe UART s sinhronizacijo s hitrostjo prenosa bralnika RFID in branjem digitalnega zatiča, s katerim je povezan. Navdušen? Jaz tudi.
1. korak: Pridobite blago
Potrebovali boste naslednji seznam delov:
- Bralnik RFID (Parallax #28140 39,99 USD)
- Oznaka RFID (Parallax #32397 0,99 USD)
- Klon AVR ali Arduino (če uporabljate standardni AVR, boste potrebovali tudi max232, 5 x 1uF kondenzatorje in priključek DE9)
- Tlačna plošča brez spajkanja
Neobvezno
- 4 -mestna glava
- Žica
(in max232 itd. za sporočanje informacij o oznakah) Namesto pošiljanja podatkov o oznakah prek RS232 lahko povežete tudi svoj najljubši LCD zaslon.
2. korak: Povežite dele
Strojna stran stvari je precej enostavna. Namesto, da bi svoj bralnik RFID vstavil neposredno v svojo ploščo, sem se odločil za hiter kabel, da bi lahko bralnik RFID malo bolje premikal. V ta namen sem samo odrezal štiri položaje z glave vtičnice, ki sem jo ležala, in spajkal na tri žice. Električni trak je zaključil getski priključek. Čitalnik RFID ima 4 povezave:
- Vcc
- Omogoči
- OUT
- Gnd
Kot ste verjetno uganili, priključite Vcc na +5V in Gnd na ozemljitev. Ker bralnik RFID porabi toliko energije, lahko udarite z vtičem ENABLE, da ga izklopite in vklopite v različnih časovnih presledkih. Enostavno sem se odločil, da bo tako ostalo. Ker je obrnjen, ga povlecite NIZKO, da ga aktivirate. Druga možnost je, da ga priključite na ozemljitev. Priključil sem ga na PIND3, da bi mi omogočil, da omogočim/onemogočim, če se odločim. OUT pin je mesto, kjer bralnik pošlje svoje serijske podatke, potem ko prebere oznako. Priključil sem ga na PIND2. Opomba, v vesolju Parallax rdeča pomeni pojdi. To pomeni, da zelena LED pomeni, da je enota neaktivna in miruje, rdeča pa pomeni, da je enota aktivna. * skomigni z rameni* Pojdi na sliko.
3. korak: Napišite kodo
Če želite prebrati podatke iz bralnika RFID, morate vedeti, kdaj je bila podana oznaka, izvlecite podatke iz serijskih vrat in jih nato nekam pošljite.
Oblika podatkov bralnika RFID
Bralnik RFID Parallax pošilja podatke s fiksno ledeno hitrostjo 2400 baud. Oznaka RFID je 10 bajtov. Da bi omogočili odkrivanje/popravljanje napak, ker je bralnik lahko izključen iz naključnega hrupa, je 10-bajtni RFID omejen z začetnim in končnim nadzornikom. Začetni stražar je podajanje vrstic (0x0A), nadzorni stražar pa vrnitev nosilca (0x0D). Izgleda takole:
[Začni Sentinel | Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 | Byte 8 | Byte 9 | Byte 10 | Ustavi Sentinel]To so trije primarni koraki.
Vedite, kdaj je bila oznaka poslana
Na AVR -ju sem uporabil Prekinitev spremembe pin, ki vdelano programsko opremo obvesti, da je prišlo do spremembe na nadzorovanem pin -ju. Konfiguriranje AVR za to je preprosto in zahteva nastavitev zastavice, povedo MCU, kateri pin želite spremljati, in nastavitev globalnega prekinitvenega bita. Konfigurirajte PCINT
BSET (PCICR, PCIE2); // kontrolni register prekinitve pinov pcie2 BSET (PCMSK2, PCINT18); // omogočimo prekinitev menjave pin za PCINT18 (PD2) BSET (SREG, 7); // Nastavi SREG I-bitZapišite svojo rutino prekinitvenih storitev. Če želite, da je vaš ISR kratek, tako da v mojem vektorju prekinitev preberem celoten bajt, bit za bit, in shranim bajt v globalno nestanovitno niz znakov. Ob vsakem prekinitvi naredim naslednje:
- Preverite, ali sem na začetku
- Časovnik centrirajte na srednji impulz pri 2400 baud (hitrost čitalnika RFID)
- Preskočite začetni bit in se ustavite do sredine naslednjega bita
- Vsak bit preberite v nepodpisano celo število
- Ko imam 8 bitov, vnesite bajt v niz znakov
- Ko zberem 12 bajtov, sporočite MCU -ju, da je oznaka prebrana za odkrivanje napak.
Kodo SoftSerial sem spremenil od Mikala Harta, ki je spremenil kodo Davida Mellisa za eksperimentalno določene zamude v serijskih rutinah.
Razčlenite izhod RS232
Rutina PCINT vsebuje kodo za branje izhoda RS232 iz bralnika RFID. Ko sem dobil 12 bajtov (10-bajtni RFID plus nadzorniki), nastavim bDataReady na 1 in glavni zanki pustim, da podatke obdela in prikaže.
// to je upravljavec prekinitev ISR (PCINT2_vect) {if (BCHK (PIND, RFID_IN)) // Začetni bit gre nizko donosno; uint8_t bit = 0; TunedDelay (CENTER_DELAY); // Centriraj začetni bit za (uint8_t x = 0; x <8; x ++) {TunedDelay (INTRABIT_DELAY); // malo preskoči, bratec… if (BCHK (PIND, RFID_IN)) BSET (bit, x); drugače BCLR (bit, x); } TunedDelay (INTRABIT_DELAY); // preskoči zaustavitveni bit RFID_tag [rxIdx] = bit; ++ rxIdx; if (rxIdx == 12) bDataReady = 1;}
Prikažite svojo oznako
V glavnem () med zanko for (ever) preverim, ali je nastavljen bDataReady in signalizira, da je poslana celotna struktura RFID. Nato preverim, ali gre za veljavno oznako (tj. Začetni in končni znak sta 0x0A oziroma 0x0D), in če je tako, pošljem svojo povezavo RS232.
for (;;) {if (bDataReady) {#ifdef _DEBUG_ USART_tx_S ("Začetni bajt:"); USART_tx_S (itoa (oznaka RFID [0], & ibuff [0], 16)); ibuff [0] = 0; ibuff [1] = 0; USART_tx_S ("\ nUstavi bajt:"); USART_tx_S (itoa (oznaka RFID [11], & ibuff [0], 16));#endif if (ValidTag ()) {USART_tx_S ("\ nRFID oznaka:"); za (uint8_t x = 1; x <11; x ++) {USART_tx_S (itoa (oznaka RFID [x], ibuff, 16)); če (x! = 10) USART_tx (& apos: & apos); } USART_tx_S ("\ n"); } rxIdx = 0; bDataReady = 0; }}
4. korak: Koda in slovo
Ta stran vsebuje zip datoteko z ustrezno kodo. Napisano je bilo v AVR Studio 4.16. Če uporabljate programerjevo beležnico, mrk ali vi (ali kaj drugega), boste morali kopirati zaupanja vreden datoteko Makefile v imenik in te datoteke dodati v izvorno vrstico. Upoštevajte tudi, da čas za razdelek serijskega branja temelji na 16MHz MCU. Če tečete na drugačni taktni frekvenci, boste morali eksperimentalno določiti uglašene zamude, da se osredotočijo na impulze hitrosti prenosa. Upam, da vam je to navodilo na nek način pomagalo. Če imate kakršne koli predloge, kako bi ga lahko izboljšali, mi ne oklevajte in mi sporočite!
Priporočena:
Bralnik RFID na osnovi ESP32 z zaslonom na dotik: 7 korakov
Bralnik RFID na osnovi ESP32 z zaslonom na dotik: V tem kratkem navodilu bom pokazal, kako ustvariti preprost čitalnik RFID z izhodom TFT za montažo na steno z uporabo modula ESP32 DEV KIT C, tiskalnika PCB na osnovi RC-522 in kompleta ESP AZ-Touch. Ta bralnik lahko uporabite za dostop do vrat ali alarm za vsiljivca
Bralnik RFID Arduino z zaslonom TFT: 7 korakov
Arduino RFID bralnik s TFT zaslonom: V tem navodilu vam bom pokazal, kako oblikovati lepo videti RFID bralnik s TFT zaslonom in namestiti na steno. Zelo enostavno je ustvariti lepo videti bralnik RFID z izhodom TFT za stensko montažo z Arduinom MKR po vaši izbiri in naš Ar
Kako naložiti program ali kodo v Arduino Pro Mini s kablom za serijski pretvornik CH340 UART: 4 koraki
Kako naložiti program ali kodo v Arduino Pro Mini s kablom za serijski pretvornik CH340 UART: Serijski kabli USB TTL so vrsta kablov pretvornika USB v serijski, ki omogočajo povezavo med vmesniki USB in serijskim UART. Na voljo je vrsta kablov, ki ponujajo povezljivost pri napetosti 5 V, 3,3 V ali ravni signala, ki jo določi uporabnik
Arduino RFID UHF bralnik: 10 korakov
Arduino RFID UHF Reader: Namen tega navodila je zagotoviti enostaven za razumevanje primer mikrokontrolerja, ki se povezuje z UHF RFID čitalnikom. Bralnik, ki ga uporabljamo, je Thinkify TR-265. Predstavitev je sestavljena iz treh UHF oznak, vsaka z edinstvenim ID -jem.
Uporabite bralnik RFID MFRC522 z Arduinom: 5 korakov
Uporabite bralnik RFID MFRC522 z Arduinom: Pozdravljeni! Naučil vas bom, kako narediti kul, enostavno izdelano kartico za ključe ali optični bralnik! Če imate modul RFID MFRC522, LED diode, upore, žice, arduino uno, ploščo in 9v baterijo (neobvezno), potem je dobro, da se ohladite