Obsah:
Video: Čtečka RFID AVR/Arduino s kódem UART v C: 4 kroky
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:25
RFID je šílenství, které najdete všude - od inventárních systémů po systémy ID odznaků. Pokud jste někdy byli v obchodním domě a procházeli se těmi věcmi, které vypadaly jako detektory kovů v místech vstupu/výstupu, pak jste viděli RFID. Existuje několik míst, kde najdete dobré informace o nastavení RFID, a tento návod se zaměřuje na instalaci čtečky Parallax RFID (Serial TTL) na AVR s důrazem na kód C potřebný ke čtení sériového vstupu. Kód je v jazyce C a nepoužívá žádné externí knihovny. Ve skutečnosti mluví 2400 baudů přímo bez použití UART synchronizací s přenosovou rychlostí čtečky RFID a čtením digitálního pinu, ke kterému je připojen. Vzrušený? Já také.
Krok 1: Získejte zboží
Budete potřebovat následující seznam dílů:
- Čtečka RFID (paralaxa #28140 39,99 $)
- RFID tag (Paralaxa #32397 0,99 $)
- Klon AVR nebo Arduino (pokud používáte standardní AVR, budete také potřebovat max232, 5 x 1uF kondenzátory a konektor DE9)
- Nepájivá deska
Volitelný
- 4polohová hlavička
- Drát
(a max232 atd. pro komunikaci informací o tagu) Místo odesílání dat tagu přes RS232 můžete také připojit svůj oblíbený LCD displej.
Krok 2: Připojte součásti
Hardwarová stránka věci je docela snadná. Místo toho, abych svou čtečku RFID vrhl přímo do prkénka, rozhodl jsem se vytvořit rychlý kabel, abych mohl čtečku RFID přesunout o něco lépe. Za tímto účelem jsem odřízl 4 polohy z pásku záhlaví zásuvky, kolem kterého jsem ležel a připájel na tři dráty. Konektor ghetta doplnila elektrická páska. Čtečka RFID má 4 připojení:
- Vcc
- UMOŽNIT
- VEN
- Gnd
Jak jste pravděpodobně uhodli, připojte Vcc k +5V a Gnd k zemi. Protože čtečka RFID spotřebovává tolik energie, můžete v různých intervalech bouchnout pinem ENABLE a vypnout a zapnout. Prostě jsem se rozhodl to udržet. Protože je obrácený, aktivujete ho LOW. Případně jej můžete připojit k zemi. Připojil jsem ho k PIND3, aby mi poskytl možnosti povolení/zakázání, pokud jsem se rozhodl. Kolík OUT je místo, kam čtečka odesílá svá sériová data poté, co přečte značku. Připojil jsem to k PIND2. Všimněte si, že v Parallax Universe, červená znamená jít. To znamená, že zelená LED znamená, že jednotka je neaktivní a nečinná, zatímco červená LED znamená, že je jednotka aktivní. * pokrčil rameny* Jdi na to.
Krok 3: Napište kód
Chcete -li přečíst data ze čtečky RFID, musíte vědět, kdy byla odeslána značka, vytáhnout data ze sériového portu a poté je někam poslat.
Formát dat čtečky RFID
Čtečka Parallax RFID odesílá data pevným, ledovcovým tempem 2400 baudů. RFID tag má 10 bytů. Aby byla umožněna detekce/korekce chyb, protože čtečka by mohla být vypnuta z náhodného šumu, je 10bajtový RFID ohraničen indikátorem start a stop. Počáteční sentinel je line feed (0x0A) a stop sentinel je carriage return (0x0D). Vypadá to takto:
[Start Sentinel | Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 | Byte 8 | Byte 9 | Byte 10 | Zastavit Sentinel]Toto jsou tři hlavní kroky.
Zjistěte, kdy byla značka odeslána
Na AVR jsem použil přerušení změny PIN, které upozorní firmware, že došlo ke změně na monitorovaném pinu. Konfigurace AVR pro toto je snadná a vyžaduje nastavení vlajky, sdělení MCU, který pin chcete monitorovat, a nastavení globálního bitu přerušení. Konfigurujte PCINT
BSET (PCICR, PCIE2); // registr změny řízení přerušení pcie2 BSET (PCMSK2, PCINT18); // povolit přerušení změny pinů pro PCINT18 (PD2) BSET (SREG, 7); // Nastavit I-bit SREGNapište si rutinu služby přerušení Chcete, aby vaše ISR byla krátká, takže ve svém vektoru přerušení čtu celý bajt, kousek po kousku, a ukládám bajt do pole globálních nestálých znaků. Při každém přerušení dělám následující:
- Zkontrolujte, zda jsem na startu
- Vycentrujte časování na střední impuls 2400 baudů (rychlost čtečky RFID)
- Přeskočte počáteční bit a pozastavte doprostřed dalšího bitu
- Přečíst každý bit do celého čísla bez znaménka
- Když mám 8 bitů, vložte bajt do pole znaků
- Když shromáždím 12 bajtů, dejte MCU vědět, že značka byla přečtena pro detekci chyb.
Upravil jsem kód SoftSerial od Mikala Harta, který upravil kód od Davida Mellise pro experimentálně určená zpoždění v sériových rutinách.
Analyzujte výstup RS232
Rutina PCINT obsahuje kód pro čtení výstupu RS232 ze čtečky RFID. Když jsem získal 12 bajtů (10bajtový RFID plus hlídače), nastavil jsem bDataReady na 1 a nechal hlavní smyčku zpracovat data a zobrazit je.
// toto je obsluha přerušeníISR (PCINT2_vect) {if (BCHK (PIND, RFID_IN)) // Start bit goes low return; bit uint8_t = 0; TunedDelay (CENTER_DELAY); // Vycentrování na start bit pro (uint8_t x = 0; x <8; x ++) {TunedDelay (INTRABIT_DELAY); // trochu přeskoč, bratře … if (BCHK (PIND, RFID_IN)) BSET (bit, x); jinak BCLR (bit, x); } TunedDelay (INTRABIT_DELAY); // přeskočit stop bit RFID_tag [rxIdx] = bit; ++ rxIdx; if (rxIdx == 12) bDataReady = 1;}
Zobrazte svou značku
V main (), během smyčky for (ever), kontroluji, zda bylo nastaveno bDataReady, což signalizuje, že byla odeslána celá struktura RFID. Poté zkontroluji, zda je to platný tag (tj. Počáteční a koncový znak jsou 0x0A a 0x0D, v daném pořadí), a pokud ano, rozesílám své připojení 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 ("\ nZastavit bajt:"); USART_tx_S (itoa (RFID_tag [11], & ibuff [0], 16));#endif if (ValidTag ()) {USART_tx_S ("\ nRFID Tag:"); pro (uint8_t x = 1; x <11; x ++) {USART_tx_S (itoa (RFID_tag [x], ibuff, 16)); if (x! = 10) USART_tx (& apos: & apos); } USART_tx_S ("\ n"); } rxIdx = 0; bDataReady = 0; }}
Krok 4: Kód a rozloučení
Tato stránka obsahuje zip soubor s příslušným kódem. To bylo napsáno v AVR Studio 4.16. Pokud používáte programátorský poznámkový blok, zatmění nebo vi (nebo něco jiného), budete muset zkopírovat důvěryhodný soubor Makefile do adresáře a přidat tyto soubory do zdrojového řádku. Všimněte si také, že načasování sekce sériového čtení je založeno na 16 MHz MCU. Pokud běžíte na jiné hodinové frekvenci, budete muset experimentálně určit vyladěná zpoždění tak, aby se soustředila na impulsy přenosové rychlosti. Doufám, že vám tento instruktáž nějakým způsobem pomohl. Pokud máte nějaké návrhy, jak by to šlo zlepšit, dejte mi vědět!
Doporučuje:
Čtečka RFID na bázi ESP32 s dotykovým displejem: 7 kroků
Čtečka RFID založená na ESP32 s dotykovým displejem: Na tomto instruktážním návodu ukážu, jak vytvořit jednoduchou čtečku RFID s výstupem TFT pro montáž na zeď pomocí modulu ESP32 DEV KIT C, PCB čtečky na bázi RC-522 a sady AZ-Touch ESP. Tuto čtečku můžete použít pro přístup ke dveřím nebo poplach narušitele
ScanUp NFC čtečka/zapisovačka a zvukový záznamník pro nevidomé, slabozraké a všechny ostatní: 4 kroky (s obrázky)
ScanUp NFC Reader/Writer a Audio Recorder pro nevidomé, slabozraké a všechny ostatní: Studuji průmyslový design a projekt je dílem mého semestru. Cílem je podpora zrakově postižených a nevidomých lidí zařízením, které umožňuje nahrávat zvuk ve formátu WAV na SD kartu a volat tyto informace pomocí NFC tagu. Takže v
Čtečka RFID Arduino s TFT displejem: 7 kroků
Čtečka RFID Arduino s TFT displejem: V tomto návodu vám ukážu, jak navrhnout hezky vypadající čtečku RFID s TFT displejem a pro montáž na zeď. Je velmi snadné vytvořit hezky vypadající čtečku RFID s výstupem TFT pro montáž na stěnu pomocí Arduina MKR dle vašeho výběru a naše Ar
USB čtečka čárových kódů (Raspberry Pi): 4 kroky
USB čtečka čárových kódů (Raspberry Pi): Základní návod, jak nastavit skener čárových kódů USB pomocí Raspberry Pi
Čtečka Arduino RFID UHF: 10 kroků
Čtečka Arduino RFID UHF: Účelem této instrukce je poskytnout snadno srozumitelný příklad propojení mikrokontroléru s čtečkou UHF RFID. Používáme čtečku Thinkify TR-265. Demonstrace se skládá ze tří UHF tagů, z nichž každý má jedinečné ID