Turinys:
- 1 žingsnis: įsigykite prekes
- 2 veiksmas: prijunkite dalis
- 3 žingsnis: parašykite kodą
- 4 žingsnis: kodas ir atsisveikinimas
Video: AVR/Arduino RFID skaitytuvas su UART kodu C: 4 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:51
RFID yra pamišimas, sutinkamas visur - nuo atsargų sistemų iki ženklelių ID sistemų. Jei kada nors buvote universalinėje parduotuvėje ir vaikščiojote pro tuos metalo detektoriaus išvaizdos daiktus įėjimo/išėjimo taškuose, tada matėte RFID. Yra daug vietų, kuriose galima rasti geros informacijos apie RFID nustatymą, ir šioje instrukcijoje daugiausia dėmesio skiriama „Parallax RFID“skaitytuvo (serijinio TTL) įdiegimui į AVR, pabrėžiant C kodą, reikalingą nuosekliajai įėjimui nuskaityti. Kodas yra C ir nenaudoja jokių išorinių bibliotekų. Tiesą sakant, jis kalba 2400 baudų tiesiogiai, nenaudodamas UART, sinchronizuodamas su RFID skaitytuvo duomenų perdavimo sparta ir skaitydamas skaitmeninį kaištį, prie kurio jis prijungtas. Susijaudinęs? Aš taip pat.
1 žingsnis: įsigykite prekes
Jums reikės šio dalių sąrašo:
- RFID skaitytuvas („Parallax“#28140 39,99 USD)
- RFID žyma („Parallax“#32397 0,99 USD)
- AVR arba „Arduino“klonas (jei naudojate atsarginį AVR, jums taip pat reikės max232, 5 x 1uF kondensatorių ir DE9 jungties)
- Duonos lenta be litavimo
Neprivaloma
- 4 pozicijų antraštė
- Viela
(ir max232 ir tt, kad būtų galima perduoti informaciją apie žymą) Taip pat galite prijungti savo mėgstamą LCD ekraną, o ne siųsti žymų duomenis per RS232.
2 veiksmas: prijunkite dalis
Techninė įranga yra gana paprasta. Užuot įkišęs savo RFID skaitytuvą tiesiai į duonos lentą, nusprendžiau pagaminti greitą kabelį, kad galėčiau šiek tiek geriau perkelti RFID skaitytuvą. Dėl to aš ką tik nutraukiau 4 pozicijas iš moteriškos lizdo antraštės, kurią gulėjau ir lituojau ant trijų laidų. Elektros juosta užbaigė geto jungtį. RFID skaitytuvas turi 4 jungtis:
- Vcc
- ĮJUNGTI
- OUT
- Gnd
Kaip jūs tikriausiai atspėjote, prijunkite „Vcc“prie +5 V, o „Gnd“- prie žemės. Kadangi RFID skaitytuvas sunaudoja tiek daug energijos, galite spustelėti ĮJUNGTI kaištį, kad jį išjungtumėte ir įjungtumėte įvairiais intervalais. Aš tiesiog pasirinkau tai tęsti. Kadangi jis yra apverstas, patraukite jį žemai, kad suaktyvintumėte. Arba galite jį prijungti prie žemės. Prijungiau jį prie PIND3, kad suteikčiau galimybę įjungti/išjungti, jei nusprendžiau. OUT kaištis yra vieta, kur skaitytojas siunčia savo serijos duomenis perskaitęs žymą. Prijungiau jį prie PIND2. Atkreipkite dėmesį, kad paralakso visatoje raudona reiškia eiti. Tai reiškia, kad žalias šviesos diodas reiškia, kad įrenginys yra neaktyvus ir neveikia, o raudonas šviesos diodas reiškia, kad įrenginys yra aktyvus. * gūžteli pečiais* Eik figūra.
3 žingsnis: parašykite kodą
Norėdami nuskaityti duomenis iš RFID skaitytuvo, turite žinoti, kada buvo pateikta žyma, ištraukti duomenis iš nuoseklaus prievado ir tada nusiųsti juos kažkur.
RFID skaitytuvo duomenų formatas
„Parallax“RFID skaitytuvas siunčia duomenis fiksuotu 2400 baudų ledyniniu greičiu. RFID žyma yra 10 baitų. Kad būtų galima aptikti/ištaisyti klaidas, kadangi skaitytuvas gali būti atjungtas nuo atsitiktinio triukšmo, 10 baitų RFID riboja pradžios ir pabaigos kontrolinis signalas. Pradinis sargybinis yra linijos tiekimas (0x0A), o galinis - vežimėlio grįžimas (0x0D). Tai atrodo taip:
[Pradėti „Sentinel“| 1 baitas | 2 baitas | 3 baitas | 4 baitas | 5 baitas | 6 baitas | 7 baitas | 8 baitas | 9 baitas | 10 baitas | Stop Sentinel]Tai yra trys pagrindiniai žingsniai.
Žinokite, kada buvo pateikta žyma
AVR naudojau kaiščio keitimo pertrauką, kuri praneša programinei įrangai, kad stebimas kaištis pasikeitė. Tam lengvai sukonfigūruoti AVR ir reikia nustatyti vėliavą, pasakyti MCU, kurį kaištį norite stebėti, ir nustatyti visuotinį pertraukos bitą. Konfigūruokite PCINT
BSET (PCICR, PCIE2); // smeigtuko keitimo pertraukimo valdymo registras pcie2 BSET (PCMSK2, PCINT18); // įgalinti PIN keitimo pertraukimą PCINT18 (PD2) BSET (SREG, 7); // Nustatykite SREG I bitąNorite, kad jūsų ISR būtų trumpas, todėl mano pertraukimo vektoriuje aš po truputį perskaitau visą baitą ir saugoju baitą visuotiniame nepastoviame simbolių masyve. Kiekvieno pertraukimo metu atlieku šiuos veiksmus:
- Patikrinkite, ar pradedu veikti
- Centruokite laiką į vidurinį impulsą 2400 baudų dažniu (RFID skaitytuvo greitis)
- Praleiskite pradžios bitą ir pristabdykite iki kito bitų vidurio
- Skaitykite kiekvieną bitą į nepasirašytą sveikąjį skaičių
- Kai turėsiu 8 bitus, įdėkite baitą į simbolių masyvą
- Kai surinksiu 12 baitų, praneškite MKU, kad žyma buvo nuskaityta, kad būtų aptikta klaida.
Pakeičiau „Mikal Hart“„SoftSerial“kodą, kuris pakeitė Davido Melliso kodą dėl eksperimentiškai nustatytų nuoseklių veiksmų vėlavimų.
Analizuoti RS232 išvestį
PCINT rutinoje yra kodas RS232 išvesties skaitymui iš RFID skaitytuvo. Kai gaunu 12 baitų (10 baitų RFID plius sargybiniai), nustatau „bDataReady“į 1 ir leidžiame pagrindinei kilpa apdoroti duomenis ir juos rodyti.
// tai pertraukimo tvarkytojasISR (PCINT2_vect) {if (BCHK (PIND, RFID_IN)) // Pradinis bitas grįžta mažai; uint8_t bitas = 0; „TunedDelay“(CENTER_DELAY); // Pradžios bito centras (uint8_t x = 0; x <8; x ++) {TunedDelay (INTRABIT_DELAY); // praleisk šiek tiek, broli… if (BCHK (PIND, RFID_IN)) BSET (bit, x); else BCLR (bit, x); } TunedDelay (INTRABIT_DELAY); // praleisti stop bitą RFID_tag [rxIdx] = bit; ++ rxIdx; jei (rxIdx == 12) bDataReady = 1;}
Parodykite savo žymą
Pagrindinėje () ciklo metu (visam laikui) tikrinu, ar nenustatytas „bDataReady“, signalizuojantis, kad išsiųsta visa RFID struktūra. Tada patikrinu, ar tai tinkama žyma (ty pradžios ir pabaigos simboliai yra atitinkamai 0x0A ir 0x0D), ir jei taip, išsiunčiu RS232 ryšį.
(;;) {if (bDataReady) {#ifdef _DEBUG_ USART_tx_S ("Pradėti baitas:"); USART_tx_S (itoa (RFID_tag [0], & ibuff [0], 16)); ibuffas [0] = 0; ibuffas [1] = 0; USART_tx_S ("\ nSustabdyti baitą:"); USART_tx_S (itoa (RFID_tag [11], & ibuff [0], 16));#endif if (ValidTag ()) {USART_tx_S ("\ nRFID Tag:"); for (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; }}
4 žingsnis: kodas ir atsisveikinimas
Šiame puslapyje yra ZIP failas su atitinkamu kodu. Tai buvo parašyta AVR studijoje 4.16. Jei naudojate programuotojo užrašų knygelę, užtemimą ar vi (ar ką nors kitą), turėsite nukopijuoti patikimą „Makefile“į katalogą ir pridėti šiuos failus prie šaltinio eilutės. Taip pat atkreipkite dėmesį, kad serijinio skaitymo sekcijos laikas yra pagrįstas 16MHz MCU. Jei naudojate kitą laikrodžio dažnį, turėsite eksperimentiškai nustatyti suderintus vėlavimus, nukreiptus į baudos spartos impulsus. Tikiuosi, kad šis nurodymas jums kažkaip padėjo. Jei turite pasiūlymų, kaip tai patobulinti, nedvejodami praneškite man!
Rekomenduojamas:
ESP32 pagrįstas RFID skaitytuvas su jutikliniu ekranu: 7 žingsniai
ESP32 pagrįstas RFID skaitytuvas su jutikliniu ekranu: Šioje instrukcijoje parodysiu, kaip sukurti paprastą RFID skaitytuvą su TFT išvestimi, skirtą tvirtinti prie sienos, naudojant ESP32 DEV KIT C modulį, RC-522 pagrindu sukurtą skaitytuvo plokštę ir AZ-Touch ESP rinkinį. Šį skaitytuvą galite naudoti norėdami patekti į duris arba signalizuoti įsibrovėlius
„Arduino“RFID skaitytuvas su TFT ekranu: 7 žingsniai
„Arduino“RFID skaitytuvas su TFT ekranu: aš jums parodysiu, kaip sukurti gražiai atrodantį RFID skaitytuvą su TFT ekranu ir tvirtinti prie sienos. Labai paprasta sukurti gražiai atrodantį RFID skaitytuvą su TFT išvestimi, skirtą montuoti ant sienos naudojant „Arduino“Jūsų pasirinktas MKR ir mūsų Ar
USB brūkšninių kodų skaitytuvas (Raspberry Pi): 4 žingsniai
USB brūkšninių kodų skaitytuvas (Raspberry Pi): pagrindinė pamoka, kaip nustatyti USB brūkšninių kodų skaitytuvą naudojant Raspberry Pi
„Arduino“RFID UHF skaitytuvas: 10 žingsnių
„Arduino“RFID UHF skaitytuvas: Šios instrukcijos tikslas yra pateikti lengvai suprantamą mikrovaldiklio sąsajos su UHF RFID skaitytuvu pavyzdį. Mūsų naudojamas skaitytuvas yra „Thinkify TR-265“. Demonstraciją sudaro trys UHF žymos, turinčios unikalų ID
„Raspberry Pi Talking“brūkšninių kodų skaitytuvas: 12 žingsnių
Raspberry Pi Talking Barcode Reader: 1 pav. Brūkšninių kodų skaitytuvas iš DX.com Pamatę tą aklųjų brūkšninių kodų skaitytuvą