Sadržaj:
Video: AVR/Arduino RFID čitač s UART kodom u C: 4 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:38
RFID je ludost, nalazi se posvuda - od sustava inventara do sustava 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. Kôd je u jeziku C i ne koristi nikakve vanjske knjižnice. Zapravo, on govori 2400 bauda izravno bez upotrebe UART -a sinkronizirajući se s brzinom prijenosa čitača RFID -a i čitajući digitalni pin na koji je spojen. Uzbuđen? Ja isto.
Korak 1: Nabavite robu
Trebat će vam sljedeći popis 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)
- Mašina za lemljenje
Opcionalno
- Zaglavlje s 4 položaja
- Žica
(i max232 itd. za komunikaciju informacija o oznakama) Također možete povezati svoj omiljeni LCD zaslon umjesto slanja podataka oznaka putem RS232.
Korak 2: Spojite dijelove
Hardverska strana stvari je prilično jednostavna. Umjesto da svoj RFID čitač ubacim izravno u moju ploču, odlučio sam napraviti brzi kabel kako bih mogao pomaknuti čitač RFID -a malo bolje. Za to sam samo odrezao 4 položaja sa trake zaglavlja ženske utičnice oko koje sam ležao i lemio na tri žice. Električna traka dovršila je konektor za geto. RFID čitač ima 4 veze:
- Vcc
- OMOGUĆITI
- 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 nastaviti. Budući da je obrnut, povucite ga NIZKO da biste ga aktivirali. Alternativno, možete ga spojiti na masu. Povezao sam ga s PIND3 kako bih dobio mogućnosti uključivanja/isključivanja ako to odlučim. OUT pin je mjesto gdje čitač šalje svoje serijske podatke nakon što pročita oznaku. Spojio sam ga na PIND2. Napomena, u svemiru Parallax crveno znači ići. To jest, zelena LED označava da je jedinica neaktivna i u stanju mirovanja, dok crvena LED označava da je jedinica aktivna. * slegnuti 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 nekamo pošaljite.
Oblik podataka RFID čitača
Čitač Parallax RFID šalje podatke fiksnim, glacijalnim tempom od 2400 bauda. RFID oznaka ima 10 bajtova. Kako bi se omogućilo otkrivanje/ispravljanje pogrešaka, budući da se čitač mogao isključiti iz slučajne buke, 10-bajtni RFID omeđen je startnim i zaustavnim nadzornikom. Početni nadzornik je unos linije (0x0A), a zaustavni nadzor povratka nosača (0x0D). Izgleda ovako:
[Start Sentinel | Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 | Byte 8 | Byte 9 | Byte 10 | Zaustavi Sentinel]To su tri primarna koraka.
Saznajte kada je oznaka poslana
Koristio sam Pin Change Interrupt na AVR -u koji obavještava firmver da je došlo do promjene na nadziranom pin -u. Konfiguriranje AVR -a za to je jednostavno i zahtijeva postavljanje zastavice, kazivanje MCU -u koji pin želite nadzirati i postavljanje globalnog bita prekida. Konfigurirajte PCINT
BSET (PCICR, PCIE2); // registar upravljanja prekidima izmjene pinova pcie2 BSET (PCMSK2, PCINT18); // omogući prekid promjene pina za PCINT18 (PD2) BSET (SREG, 7); // Postavite SREG I-bitNapiš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 puls na 2400 bauda (brzina RFID čitača)
- Preskočite početni bit i pauzirajte do sredine sljedećeg bita
- Pročitajte svaki bit u bezznačni cijeli broj
- Kad dobijem 8 bitova, stavite bajt u niz znakova
- Kad prikupim 12 bajta, obavijestite MCU da je oznaka pročitana radi otkrivanja pogreške.
Izmijenio 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. Kad dobijem 12 bajtova (10-bajtni RFID plus stražari), postavio sam bDataReady na 1 i pustio glavnu petlju da obradi podatke i prikaže ih.
// ovo je rukovatelj prekida 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); inače 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 (), tijekom for (ever) petlje provjeravam je li bDataReady postavljen, signalizirajući da je poslana cijela RFID struktura. Zatim provjeravam je li to valjana oznaka (tj. Početni i završni znak su 0x0A, odnosno 0x0D), a 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 temelji na 16MHz MCU. Ako radite na drugačijoj frekvenciji takta, morat ćete eksperimentalno odrediti podešena kašnjenja kako bi se usredotočili na impulse 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čeni:
RFID čitač temeljen na ESP32 s zaslonom osjetljivim na dodir: 7 koraka
RFID čitač temeljen na ESP32 s zaslonom osjetljivim na dodir: Na ovom kratkom uputstvu pokazat ću kako stvoriti jednostavan RFID čitač s TFT izlazom za montažu na zid koristeći ESP32 DEV KIT C modul, PCB čitač temeljen na RC-522 i AZ-Touch ESP komplet. Ovaj čitač možete koristiti za pristup vratima ili alarm za uljeze
Arduino RFID čitač s TFT zaslonom: 7 koraka
Arduino RFID čitač s TFT zaslonom: Pokazat ću vam u ovom uputstvu kako dizajnirati lijep RFID čitač s TFT zaslonom i za zidnu montažu. Vrlo je jednostavno stvoriti lijep RFID čitač s TFT izlazom za montažu na zid s Arduinom MKR po vašem izboru i naš Ar
Joy Robot (Robô Da Alegria) - 3D ispis s otvorenim kodom, Arduino pogonski robot!: 18 koraka (sa slikama)
Joy Robot (Robô Da Alegria) - Otvoreni izvorni 3D ispis, Arduino pogonski robot !: Prva nagrada na natjecanju s kotačima s instrukcijama, Druga nagrada na natjecanju Instructables Arduino i Drugoplasirana u izazovu Dizajn za djecu. Hvala svima koji su glasali za nas !!! Roboti stižu posvuda. Od industrijske primjene do vas
Arduino RFID UHF čitač: 10 koraka
Arduino RFID UHF čitač: Svrha ovog uputstva je pružiti lako razumljiv primjer sučelja mikrokontrolera s UHF RFID čitačem. Čitač koji koristimo je Thinkify TR-265. Demonstracija se sastoji od tri UHF oznake s svakom jedinstvenim ID -om
Koristite MFRC522 RFID čitač s Arduinom: 5 koraka
Koristite MFRC522 RFID čitač s Arduinom: Zdravo! Naučit ću vas kako napraviti cool, laku za izradu skener za ključeve ili privjesak za ključeve! 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