Sisukord:
Video: AVR/Arduino RFID -lugeja UART -koodiga C: 4 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:51
RFID on hullus, mida leidub kõikjal - alates varude süsteemidest kuni märkide ID -süsteemideni. Kui olete kunagi kaubamajas käinud ja sisenemis-/väljumiskohtades need metallidetektori välimusega asjad läbi käinud, siis olete RFID-d näinud. RFID seadistamise kohta hea teabe leidmiseks on mitmeid kohti ja see juhend on keskendunud Parallax RFID lugeja (Serial TTL) paigaldamisele AVR -ile, rõhutades jadasisendi lugemiseks vajalikku C -koodi. Kood on C -vormingus ja ei kasuta väliseid teeke. Tegelikult räägib see 2400 baudit otse, ilma UART -i kasutamata, sünkroonides RFID -lugeja andmeedastuskiirusega ja lugedes digitaalset tihvti, millega see on ühendatud. Erutatud? Mina ka.
Samm: hankige kaup
Teil on vaja järgmist osade loendit:
- RFID -lugeja (Parallax #28140 39,99 $)
- RFID -silt (Parallax #32397 0,99 $)
- AVR või Arduino kloon (kui kasutate varu -AVR -i, vajate ka max232, 5 x 1uF kondensaatorit ja DE9 -pistikut)
- Jooteta leivalaud
Valikuline
- 4 positsiooni päis
- Traat
(ja siltide teabe edastamiseks max232 jne) Võite ühendada ka oma lemmik -LCD -ekraani selle asemel, et saata märgendiandmeid RS232 kaudu.
Samm: ühendage osad
Riistvara pool on üsna lihtne. Selle asemel, et oma RFID -lugejat otse oma leivalauale pista, otsustasin teha kiire kaabli, et saaksin RFID -lugejat natuke paremini liigutada. Selleks lõikasin just 4 asendit välja naissoost pistikupesa päise ribalt, mille ümber olin lamanud ja joodetud kolmele juhtmele. Elektrilint lõpetas getopistiku. RFID -lugejal on 4 ühendust:
- Vcc
- LUBATUD
- VÄLJA
- Gnd
Nagu ilmselt arvasite, ühendage Vcc +5V ja Gnd maandusega. Kuna RFID -lugeja tarbib nii palju energiat, saate selle sisse- ja väljalülitamiseks erinevate intervallidega sisse lülitada nupu ENABLE. Ma lihtsalt otsustasin seda jätkata. Kuna see on ümberpööratud, tõmbate selle aktiveerimiseks LOW. Teise võimalusena saate selle maandusega ühendada. Ühendasin selle PIND3 -ga, et anda mulle valikute lubamise/keelamise valikud, kui ma seda otsustan. OUT -tihvt on koht, kuhu lugeja saadab pärast sildi lugemist oma seeriaandmed. Ühendasin selle PIND2 -ga. Märkus. Parallax Universumis tähendab punane minekut. See tähendab, et roheline LED tähendab, et seade on passiivne ja jõude, samas kui punane LED tähendab, et seade on aktiivne. * kehitab õlgu* Mine tea.
Samm: kirjutage kood
RFID -lugeja andmete lugemiseks peate teadma, millal silt on esitatud, tõmmake andmed jadaportist välja ja saatke see siis kuhugi.
RFID -lugeja andmete vorming
Parallaxi RFID -lugeja saadab andmeid fikseeritud, liustiku kiirusega 2400 baud. RFID -märgend on 10 baiti. Vigade tuvastamise/parandamise võimaldamiseks on 10-baidine RFID piiratud käivitus- ja seiskamismärgiga, kuna lugeja võib juhusliku müra eest välja lülitada. Alustussensor on rea etteandmine (0x0A) ja peatuspost on käru tagasitulek (0x0D). See näeb välja selline:
[Start Sentinel | Bait 1 | Bait 2 | Bait 3 | Bait 4 | Bait 5 | Bait 6 | Bait 7 | Bait 8 | Bait 9 | Bait 10 | Peatage Sentinel]Need on kolm peamist sammu.
Saate teada, millal silt on esitatud
Kasutasin AVR -is tihvtivahetuse katkestust, mis teavitab püsivara, et jälgitava tihvtiga on toimunud muutus. AVR -i seadistamine selleks on lihtne ja nõuab lipu seadistamist, MCU -le teatamist, millist tihvti soovite jälgida, ja globaalse katkestusbiti seadistamist. Seadistage PCINT
BSET (PCICR, PCIE2); // tihvtide vahetamise juhtregister pcie2 BSET (PCMSK2, PCINT18); // PCINT18 (PD2) BSET (SREG, 7) pin -vahetuse katkestamise lubamine; // Määra SREG I-bitKirjutage oma katkestusteenuse rutiin. Soovite hoida oma ISR -i lühikesena, nii et ma loeksin oma katkestusvektoris kogu baidi, järk -järgult, ja salvestan baidi globaalsesse lenduvasse märkide massiivi. Teen igal katkestusel järgmist:
- Kontrollige, kas mul on algus
- Keskendage ajastus keskmisele impulssile kiirusel 2400 baud (RFID -lugeja kiirus)
- Jätke algusbitt vahele ja tehke paus järgmise bitti keskele
- Lugege iga bitt allkirjata täisarvuks
- Kui mul on 8 bitti, pange bait märkide massiivi
- Kui olen kogunud 12 baiti, andke MCU -le teada, et märgend on vigade tuvastamiseks loetud.
Muutsin SoftSerial koodi Mikal Hartilt, kes muutis David Mellise koodi katseliselt määratud seeriarutiinide viivituste tõttu.
Sõeluda RS232 väljund
PCINT-i rutiin sisaldab koodi RS232-väljundi lugemiseks RFID-lugejalt. Kui olen saanud 12 baiti (10-baitine RFID pluss sentinellid), määran bDataReady väärtuseks 1 ja lasen põhisilmusel andmeid töödelda ja kuvada.
// see on katkestuste käitlejaISR (PCINT2_vect) {if (BCHK (PIND, RFID_IN)) // Algusbitt läheb tagasi; uint8_t bit = 0; TunedDelay (CENTER_DELAY); // Tsentreeri algusbiti jaoks (uint8_t x = 0; x <8; x ++) {TunedDelay (INTRABIT_DELAY); // jäta natuke vahele, vend… if (BCHK (PIND, RFID_IN)) BSET (bit, x); muidu BCLR (bit, x); } TunedDelay (INTRABIT_DELAY); // jäta stopp -bit vahele RFID_tag [rxIdx] = bit; ++ rxIdx; kui (rxIdx == 12) bDataReady = 1;}
Kuva oma silt
Peamises () kontrollin (igavesti) tsükli ajal, kas bDataReady on seatud, andes märku, et kogu RFID -struktuur on saadetud. Seejärel kontrollin, kas see on kehtiv silt (st algus- ja lõpetamismärgid on vastavalt 0x0A ja 0x0D), ja kui jah, saadan selle oma RS232 -ühenduse välja.
jaoks (;;) {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 ("\ nStop bait:"); USART_tx_S (itoa (RFID_tag [11], & ibuff [0], 16));#endif if (ValidTag ()) {USART_tx_S ("\ nRFID Tag:"); jaoks (uint8_t x = 1; x <11; x ++) {USART_tx_S (itoa (RFID_tag [x], ibuff, 16)); kui (x! = 10) USART_tx (& apos: & apos); } USART_tx_S ("\ n"); } rxIdx = 0; bDataReady = 0; }}
4. samm: kood ja hüvastijätt
Sellel lehel on ZIP -fail vastava koodiga. See oli kirjutatud AVR Stuudios 4.16. Kui kasutate programmeerija märkmikku, eclipse'i või vi -d (või midagi muud), peate kopeerima usaldusväärse Makefile'i kataloogi ja lisama need failid lähtereale. Pange tähele, et jada lugemise sektsiooni ajastamine põhineb 16MHz MCU. Kui töötate erineva taktsagedusega, peate katseliselt kindlaks määrama viivitusajad, et keskenduda baudikiiruse impulssidele. Loodan, et see juhend aitas teid mingil viisil. Kui teil on ettepanekuid selle parandamiseks, andke mulle julgelt teada!
Soovitan:
Kuidas juhtida FT232R USB UART CLONE ARDUINO NANO BOARD 3.0: 7 sammu
Kuidas sõita FT232R USB UART CLONE ARDUINO NANO BOARD 3.0: täna ostsin arduino nano v3.0 (kloon), kuid mul on probleem. minu arvuti tuvastab alati " FT232R USB UART " andarduino Ide ei suuda seda tahvlit tuvastada. miks? mis viga? okei, mul on selle probleemi lahendamiseks õpetus
Arduino ISP -na -- Kirjutage kuusnurkfail AVR -is -- Kaitse AVR -is -- Arduino programmeerijana: 10 sammu
Arduino ISP -na || Kirjutage kuusnurkfail AVR -is || Kaitse AVR -is || Arduino programmeerijana: ……………………… Palun tellige minu YouTube'i kanalile rohkem videoid …….. See artikkel on kõik arduino kui isp kohta. Kui soovite üles laadida hex -faili või kui soovite oma kaitsme AVR -i seadistada, ei pea te programmeerijat ostma, saate seda teha
Atmega128A proportsionaalne mootoriga sõitmine - ATMEL ICE AVR taimer UART PWM juhtimine: 4 sammu
Atmega128A proportsionaalne mootoriga sõitmine - ATMEL ICE AVR taimer UART PWM juhtimine: selles juhendis selgitan teile, kuidas juhtida alalisvoolumootorit PWM -suhtlusega UART -käepideme taimerkatkestuste kaudu Esiteks kasutame AVR -i põhisüsteemi arendusplaati mille leiate Aliexpressist umbes 4 USD. Arenduslaud
Programmi või koodi üleslaadimine Arduino Pro Mini -sse CH340 UART jadamuunduri kaabli abil: 4 sammu
Programmi või koodi üleslaadimine Arduino Pro Mini -sse CH340 UART jadamuunduskaabli abil: USB TTL jadakaablid on USB -jadamuunduri kaablite valik, mis pakuvad ühenduvust USB- ja jadaliidese vahel. Saadaval on mitmesuguseid kaableid, mis pakuvad ühenduvust 5 volti, 3,3 volti või kasutaja määratud signaalitasemega
Traadita seeria (UART) Arduino/STM32/jne jaoks: 3 sammu (koos piltidega)
Traadita seeria (UART) Arduino/STM32/jne jaoks: loodetavasti on kõik minuga nõus, et Arduino seeria on suurepärane tööriist teie projektide silumiseks. Noh, see on põhimõtteliselt ainus võimalus Arduino silumiseks. Kuid mõnikord pole Ardist USB -kaabli käivitamine võimalik ega otstarbekas