Sadržaj:
Video: AVR/Arduino RFID čitač sa UART kodom u C: 4 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:10
RFID je ludost, nalazi se svuda - od sistema inventara do sistema identifikacije znački. Ako ste ikada bili u robnoj kući i prošli kroz one stvari koje izgledaju kao detektori metala na ulaznim/izlaznim mjestima, vidjeli ste RFID. Postoji nekoliko mjesta za pronalaženje dobrih informacija o postavljanju RFID -a, a ovo uputstvo se fokusira na instaliranje Parallax RFID čitača (Serial TTL) na AVR, s naglaskom na C kod potreban za čitanje serijskog ulaza. Kod je u jeziku C i ne koristi nikakve vanjske biblioteke. U stvari, on govori 2400 bauda direktno bez upotrebe UART -a sinhronizirajući se sa brzinom prijenosa RFID čitača i čitajući digitalni pin na koji je povezan. Uzbuđen? Ja također.
Korak 1: Nabavite robu
Trebat će vam sljedeća lista dijelova:
- RFID čitač (Parallax #28140 39,99 USD)
- RFID oznaka (Parallax #32397 0,99 USD)
- AVR ili Arduino klon (ako koristite standardni AVR, trebat će vam i max232, 5 x 1uF kondenzatori i DE9 konektor)
- Oplata za lemljenje
Opcionalno
- Zaglavlje sa 4 pozicije
- Žica
(i max232 itd. za komunikaciju informacija o oznakama) Također možete povezati svoj omiljeni LCD ekran umjesto slanja podataka oznaka putem RS232.
Korak 2: Povežite dijelove
Hardverska strana stvari je prilično jednostavna. Umjesto da svoj RFID čitač ubacim direktno u matičnu ploču, odlučio sam napraviti brzi kabel kako bih RFID čitač mogao pomaknuti malo bolje. Za to sam samo odrezao 4 položaja sa trake zaglavlja ženskog priključka oko koje sam ležao i lemio na tri žice. Električna traka upotpunila je geto konektor. RFID čitač ima 4 veze:
- Vcc
- ENABLE
- OUT
- Gnd
Kao što ste vjerojatno pogodili, spojite Vcc na +5V i Gnd na masu. Budući da RFID čitač troši toliko energije, možete udariti po ENABLE pin -u da biste ga isključili i uključili u različitim intervalima. Jednostavno sam odlučio da nastavim. Budući da je obrnut, povucite ga NIZKO da biste ga aktivirali. Alternativno, možete ga spojiti na masu. Povezao sam ga s PIND3 da bih dobio mogućnosti omogućavanja/onemogućavanja ako odlučim. OUT pin je mjesto gdje čitač šalje svoje serijske podatke nakon što pročita oznaku. Povezao sam ga sa PIND2. Napomena, u univerzumu Parallax, crveno znači idi. To jest, zelena LED označava da je jedinica neaktivna i u stanju mirovanja, dok crvena LED označava da je jedinica aktivna. * slegne ramenima* Idi figura.
Korak 3: Napišite kôd
Da biste pročitali podatke iz RFID čitača, morate znati kada je oznaka poslana, izvucite podatke sa serijskog porta, a zatim ih pošaljite negdje.
Format podataka RFID čitača
Parallax RFID čitač šalje podatke fiksnim, glacijalnim tempom od 2400 bauda. RFID oznaka ima 10 bajtova. Kako bi se omogućilo otkrivanje/ispravljanje grešaka, budući da je čitač mogao biti isključen iz slučajne buke, 10-bajtni RFID je ograničen startnim i zaustavnim nadzornikom. Startni nadzornik je linijski unos (0x0A), a stražni nadzorni je povratak nosača (0x0D). To izgleda ovako:
[Započni Sentinel | Bajt 1 | Bajt 2 | Bajt 3 | Bajt 4 | Bajt 5 | Bajt 6 | Bajt 7 | Bajt 8 | Bajt 9 | Bajt 10 | Zaustavi Sentinel]Ovo su tri osnovna koraka.
Saznajte kada je podnesena oznaka
Koristio sam prekid promjene pin -a na AVR -u koji obavještava firmver da je došlo do promjene na nadziranom pin -u. Konfiguriranje AVR -a za ovo je jednostavno i zahtijeva postavljanje zastavice, kazivanje MCU -u koji pin želite nadzirati i postavljanje globalnog bita prekida. Konfigurirajte PCINT
BSET (PCICR, PCIE2); // registar za upravljanje prekida prekida pcie2 BSET (PCMSK2, PCINT18); // omogući prekid promene pina za PCINT18 (PD2) BSET (SREG, 7); // Postavljanje SREG I-bitaNapišite svoju rutinu usluge prekida. Želite da vaš ISR bude kratak pa u vektoru prekida čitam cijeli bajt, malo po malo, i pohranjujem bajt u globalni nestabilni niz znakova. Prilikom svakog prekida radim sljedeće:
- Provjerite jesam li na početku
- Centrirajte mjerenje vremena na srednji impuls na 2400 bauda (brzina RFID čitača)
- Preskočite početni bit i pauzirajte do sredine sljedećeg bita
- Čitajte svaki bit u bezznačni cijeli broj
- Kad dobijem 8 bitova, stavite bajt u niz znakova
- Kada prikupim 12 bajta, obavijestite MCU da je oznaka pročitana radi otkrivanja greške.
Modificirao sam SoftSerial kod Mikala Harta koji je modificirao kod Davida Mellisa radi eksperimentalno utvrđenih kašnjenja u serijskim rutinama.
Raščlanite RS232 izlaz
PCINT rutina sadrži kôd za čitanje RS232 izlaza iz RFID čitača. Kada dobijem 12 bajtova (10-bajtni RFID plus čuvari), postavila sam bDataReady na 1 i pustila glavnu petlju da obradi podatke i prikaže ih.
// ovo je rukovalac prekidima ISR (PCINT2_vect) {if (BCHK (PIND, RFID_IN)) // Početni bit ide s malim povratom; uint8_t bit = 0; TunedDelay (CENTER_DELAY); // Centriraj početni bit za (uint8_t x = 0; x <8; x ++) {TunedDelay (INTRABIT_DELAY); // preskoči malo, brate … if (BCHK (PIND, RFID_IN)) BSET (bit, x); else BCLR (bit, x); } TunedDelay (INTRABIT_DELAY); // preskoči bit zaustavljanja RFID_tag [rxIdx] = bit; ++ rxIdx; if (rxIdx == 12) bDataReady = 1;}
Prikažite svoju oznaku
U main (), tokom for (ever) petlje, proveravam da li je bDataReady postavljen, signalizirajući da je poslata cela RFID struktura. Zatim provjeravam je li to valjana oznaka (tj. Početni i završni znak su 0x0A i 0x0D, respektivno), i ako je tako, šaljem je putem svoje RS232 veze.
for (;;) {if (bDataReady) {#ifdef _DEBUG_ USART_tx_S ("Početni bajt:"); USART_tx_S (itoa (RFID_tag [0], & ibuff [0], 16)); ibuff [0] = 0; ibuff [1] = 0; USART_tx_S ("\ nZaustavi bajt:"); USART_tx_S (itoa (RFID_tag [11], & ibuff [0], 16));#endif if (ValidTag ()) {USART_tx_S ("\ nRFID oznaka:"); za (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; }}
Korak 4: Kôd i zbogom
Ova stranica sadrži zip datoteku s odgovarajućim kodom. Napisano je u AVR Studio 4.16. Ako koristite bilježnicu programera, pomrčinu ili vi (ili nešto drugo), morat ćete kopirati pouzdani Makefile u direktorij i dodati te datoteke u izvornu liniju. Također napominjemo da se vrijeme za odjeljak serijskog čitanja zasniva na 16MHz MCU. Ako radite na drugačijoj frekvenciji takta, morat ćete eksperimentalno odrediti podešena kašnjenja kako bi se centrirali impulsi brzine prijenosa. Nadam se da vam je ovo uputstvo na neki način pomoglo. Ako imate prijedloge o tome kako se to može poboljšati, ne ustručavajte se javiti mi!
Preporučuje se:
RFID čitač zasnovan na ESP32 sa ekranom osetljivim na dodir: 7 koraka
RFID čitač zasnovan na ESP32 sa ekranom osetljivim na dodir: Na ovom kratkom uputstvu ću vam pokazati kako da kreirate jednostavan RFID čitač sa TFT izlazom za zidnu montažu koristeći ESP32 DEV KIT C modul, PCB čitač na bazi RC-522 i AZ-Touch ESP komplet. Ovaj čitač možete koristiti za pristup vratima ili alarm za uljeze
Arduino RFID čitač sa TFT ekranom: 7 koraka
Arduino RFID čitač sa TFT ekranom: U ovom uputstvu ću vam pokazati kako da dizajnirate lep RFID čitač sa TFT ekranom i za montažu na zid. Vrlo je jednostavno napraviti RFID čitač lepog izgleda sa TFT izlazom za montažu na zid sa Arduinom MKR po vašem izboru i naš Ar
Muzički reaktivna RGB LED traka sa kodom - WS1228b - Korištenje modula Arduino i mikrofona: 11 koraka
Muzički reaktivna RGB LED traka sa kodom | WS1228b | Korištenje Arduino i mikrofonskog modula: Izrada LED trake koja reagira na glazbu pomoću Arduino i modula mikrofona. Korišteni dijelovi: Arduino WS1228b Led traka Zvučni senzor Breadboard kratkospojnici 5V 5A napajanje
Arduino RFID UHF čitač: 10 koraka
Arduino RFID UHF čitač: Svrha ovog uputstva je pružiti lako razumljiv primjer povezivanja mikrokontrolera sa UHF RFID čitačem. Čitač koji koristimo je Thinkify TR-265. Demonstracija se sastoji od tri UHF oznake sa svakom jedinstvenim ID -om
Koristite MFRC522 RFID čitač sa Arduinom: 5 koraka
Koristite MFRC522 RFID čitač sa Arduinom: Zdravo! Naučit ću vas kako napraviti cool, laku za izradu karticu ili skener za privjeske! Ako imate RFID MFRC522 modul, LED diode, otpornike, žice, arduino uno, matičnu ploču i 9v bateriju (opcionalno), onda je dobro da odete na hlađenje