Obsah:
Video: Čítačka RFID AVR/Arduino s kódom UART v C: 4 kroky
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 12:02
RFID je šialenstvo, ktoré sa vyskytuje všade - od inventárnych systémov až po systémy ID odznakov. Ak ste niekedy boli v obchodnom dome a prechádzali ste sa po tých veciach, ktoré vyzerajú ako detektory kovov, v miestach vstupu/výstupu, potom ste videli RFID. Existuje niekoľko miest, kde nájdete dobré informácie o nastavení RFID, a tento návod sa zameriava na inštaláciu čítačky RFID Parallax (Serial TTL) na AVR s dôrazom na kód C potrebný na čítanie sériového vstupu. Kód je v jazyku C a nepoužíva žiadne externé knižnice. V skutočnosti hovorí 2400 baudov priamo bez použitia UART synchronizáciou s prenosovou rýchlosťou čítačky RFID a čítaním digitálneho pinu, ku ktorému je pripojený. Nadšení? Ja tiež.
Krok 1: Získajte tovar
Budete potrebovať nasledujúci zoznam dielov:
- Čítačka RFID (paralaxa #28140, 39,99 dolárov)
- RFID tag (Paralaxa #32397 0,99 USD)
- Klon AVR alebo Arduino (ak používate štandardný AVR, budete potrebovať aj kondenzátory max232, 5 x 1uF a konektor DE9)
- Nepájkovateľné nepájivé pole
Voliteľné
- 4polohová hlavička
- Drôt
(a max232 atď. pre komunikáciu informácií o značke) Môžete tiež pripojiť svoj obľúbený LCD displej namiesto odosielania údajov o značke cez RS232.
Krok 2: Pripojte diely
Hardvérová stránka veci je celkom jednoduchá. Namiesto toho, aby som svoju čítačku RFID vrhal priamo do dosky, rozhodol som sa vytvoriť rýchly kábel, aby som s čítačkou RFID mohol pohybovať o niečo lepšie. Za týmto účelom som len odrezal 4 polohy zo ženského kolíkového konektora, na ktorom som ležal a spájkoval som na tri drôty. Konektor geta doplnila elektrická páska. Čítačka RFID má 4 pripojenia:
- Vcc
- POVOLIŤ
- VON
- Gnd
Ako ste asi uhádli, pripojte Vcc k +5V a GND k zemi. Pretože čítačka RFID spotrebováva toľko energie, môžete v rôznych intervaloch buchnutím kolíka ENABLE vypnúť a zapnúť. Jednoducho som sa rozhodol nechať to tak. Pretože je obrátený, aktivujete ho potiahnutím LOW. Prípadne ho môžete pripojiť k zemi. Pripojil som ho k PIND3, aby mi poskytol možnosti zapnutia/vypnutia, ak som sa tak rozhodol. Konektor OUT je miesto, kde čítačka odosiela svoje sériové údaje po prečítaní značky. Pripojil som ho k PIND2. Všimnite si toho, v Parallax Universe, červená znamená ísť. To znamená, že zelená LED znamená, že jednotka je neaktívna a nečinná, zatiaľ čo červená LED znamená, že jednotka je aktívna. * pokrčiť ramenami* Choď na to.
Krok 3: Napíšte kód
Ak chcete čítať údaje z čítačky RFID, musíte vedieť, kedy bola odoslaná značka, vytiahnite údaje zo sériového portu a potom ich niekam odošlite.
Formát údajov čítačky RFID
Čítačka Parallax RFID odosiela údaje pevným, ľadovcovým tempom 2400 baudov. Značka RFID má 10 bajtov. Aby sa umožnila detekcia/korekcia chýb, pretože čítačku je možné vyradiť z náhodného šumu, 10-bajtový RFID je ohraničený štartovacím a stopovým indikátorom. Počiatočný indikátor je posun riadka (0x0A) a koncový indikátor je návrat vozíka (0x0D). Vyzerá to takto:
[Spustiť Sentinel | Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 | Byte 8 | Byte 9 | Byte 10 | Zastaviť Sentinel]Toto sú tri základné kroky.
Zistite, kedy bola značka odoslaná
Na AVR som použil prerušenie zmeny pinov, ktoré upozorní firmvér na to, že na monitorovanom pine nastala zmena. Konfigurácia AVR je jednoduchá a vyžaduje nastavenie príznaku, informovanie MCU o tom, ktorý pin chcete monitorovať, a nastavenie globálneho bitu prerušenia. Konfigurujte PCINT
BSET (PCICR, PCIE2); // riadiaci register zmeny pinu pcie2 BSET (PCMSK2, PCINT18); // povoliť prerušenie zmeny pinov pre PCINT18 (PD2) BSET (SREG, 7); // Nastavte SREG I-bitNapíšte svoju rutinu služby prerušenia Chcete, aby bol váš ISR krátky, aby som vo svojom vektore prerušenia prečítal celý bajt, kúsok po kúsku, a uložil bajt do globálneho poľa volatilných znakov. Pri každom prerušení robím nasledovné:
- Skontrolujte, či som na začiatku
- Vycentrujte časovanie na stredný impulz pri 2400 baudoch (rýchlosť čítačky RFID)
- Preskočte začiatočný bit a pozastavte ho v strede nasledujúceho bitu
- Prečítajte každý bit do celého čísla bez znamienka
- Keď mám 8 bitov, vložte bajt do poľa znakov
- Keď zhromaždím 12 bajtov, oznámte MCU, že značka bola prečítaná na detekciu chýb.
Upravil som kód SoftSerial od Mikala Harta, ktorý upravil kód od Davida Mellisa pre experimentálne určené oneskorenia v sériových rutinách.
Analyzujte výstup RS232
Rutina PCINT obsahuje kód na čítanie výstupu RS232 z čítačky RFID. Keď som získal 12 bajtov (10-bajtový RFID plus sentinely), nastavil som bDataReady na 1 a nechal hlavnú slučku spracovať údaje a zobraziť ich.
// toto je obsluha prerušeniaISR (PCINT2_vect) {if (BCHK (PIND, RFID_IN)) // Počiatočný bit klesá s nízkou návratnosťou; uint8_t bit = 0; TunedDelay (CENTER_DELAY); // Vycentrovanie na štartovací bit pre (uint8_t x = 0; x <8; x ++) {TunedDelay (INTRABIT_DELAY); // trocha preskoč, brat … if (BCHK (PIND, RFID_IN)) BSET (bit, x); else BCLR (bit, x); } TunedDelay (INTRABIT_DELAY); // preskočiť stop bit RFID_tag [rxIdx] = bit; ++ rxIdx; if (rxIdx == 12) bDataReady = 1;}
Zobrazte svoju značku
V main (), počas (navždy) slučky, kontrolujem, či je nastavené bDataReady, čo signalizuje, že bola odoslaná celá štruktúra RFID. Potom skontrolujem, či je to platný štítok (tj počiatočný a koncový znak sú 0x0A a 0x0D), a ak áno, pošlem ho cez moje pripojenie 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 ("\ nZastaviť bajt:"); USART_tx_S (itoa (RFID_tag [11], & ibuff [0], 16));#endif if (ValidTag ()) {USART_tx_S ("\ nRFID Tag:"); pre (uint8_t x = 1; x <11; x ++) {USART_tx_S (itoa (RFID_tag [x], ibuff, 16)); ak (x! = 10) USART_tx (& apos: & apos); } USART_tx_S ("\ n"); } rxIdx = 0; bDataReady = 0; }}
Krok 4: Kód a rozlúčka
Táto stránka obsahuje súbor zip s príslušným kódom. To bolo napísané v AVR Studio 4.16. Ak používate programátorský poznámkový blok, zatmenie alebo vi (alebo niečo iné), budete musieť skopírovať dôveryhodný súbor Makefile do adresára a pridať tieto súbory do zdrojového riadku. Tiež upozorňujeme, že načasovanie sekcie sériového čítania je založené na 16 MHz MCU. Ak bežíte na inej hodinovej frekvencii, budete musieť experimentálne určiť vyladené oneskorenia tak, aby sa vycentrovali na impulzy prenosovej rýchlosti. Dúfam, že vám tento návod nejakým spôsobom pomohol. Ak máte nejaké návrhy na to, ako by sa to dalo zlepšiť, dajte mi vedieť!
Odporúča:
Čítačka RFID na báze ESP32 s dotykovým displejom: 7 krokov
Čítačka RFID na báze ESP32 s dotykovým displejom: Na tomto drobnom návode ukážem, ako vytvoriť jednoduchú čítačku RFID s výstupom TFT na montáž na stenu pomocou modulu ESP32 DEV KIT C, PCB čítačky na báze RC-522 a súpravy AZ-Touch ESP. Túto čítačku môžete použiť na prístup k dverám alebo na vniknutie do
ScanUp NFC čítačka/zapisovačka a zvukový záznamník pre nevidomých, slabozrakých a všetkých ostatných: 4 kroky (s obrázkami)
ScanUp NFC čítačka/zapisovačka a zvukový záznamník pre nevidomých, slabozrakých a všetkých ostatných: Študujem priemyselný dizajn a projekt je dielom môjho semestra. Cieľom je podpora zrakovo postihnutých a nevidomých ľudí zariadením, ktoré umožňuje nahrávať zvuk vo formáte.WAV na kartu SD a volať tieto informácie pomocou značky NFC. Takže v
Čítačka RFID Arduino s TFT displejom: 7 krokov
Čítačka Arduino RFID s displejom TFT: V tomto návode vám ukážem, ako navrhnúť pekne vyzerajúcu čítačku RFID s displejom TFT a na montáž na stenu. Je veľmi jednoduché vytvoriť pekne vyzerajúcu čítačku RFID s výstupom TFT na montáž na stenu pomocou Arduino. MKR podľa vášho výberu a náš Ar
Čítačka Arduino RFID UHF: 10 krokov
Čítačka Arduino RFID UHF: Účelom tohto návodu je poskytnúť ľahko zrozumiteľný príklad prepojenia mikrokontroléra s čítačkou UHF RFID. Používame čítačku Thinkify TR-265. Ukážka pozostáva z troch UHF tagov, z ktorých každý má jedinečné ID.
Čítačka Bluetooth OBD2: 3 kroky
Čítačka Bluetooth OBD2: Vitajte, toto je môj prvý návod a dúfajme, že je ľahko zrozumiteľný a môžete si vytvoriť svoj vlastný. Ak máte akékoľvek otázky, neváhajte ma kontaktovať a možno vám môžem pomôcť. Pokúsim sa to veľmi jednoducho dodržať pomocou tohto