Sisällysluettelo:
Video: AVR/Arduino RFID -lukija UART -koodilla C: 4 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:04
RFID on villitys, joka löytyy kaikkialta - inventaariojärjestelmistä tunnistenumerojärjestelmiin. Jos olet koskaan käynyt tavaratalossa ja käynyt läpi metallinpaljastimen näköiset asiat sisäänkäynti-/poistumispisteissä, olet nähnyt RFID: n. On monia paikkoja löytää hyviä tietoja RFID: n määrittämisestä, ja tämä opas keskittyy Parallax RFID -lukijan (Serial TTL) asentamiseen AVR -laitteeseen painottaen sarjatulon lukemiseen tarvittavaa C -koodia. Koodi on C -muodossa eikä käytä ulkoisia kirjastoja. Itse asiassa se puhuu 2400 baudia suoraan ilman UARTia synkronoimalla RFID -lukijan baudinopeuteen ja lukemalla digitaalisen nastan, johon se on liitetty. Innoissaan? Minä myös.
Vaihe 1: Hanki tavarat
Tarvitset seuraavan luettelon osista:
- RFID -lukija (Parallax #28140 39,99 dollaria)
- RFID -tunniste (Parallax #32397 0,99 $)
- AVR tai Arduino -klooni (jos käytät varastossa olevaa AVR -laitetta, tarvitset myös max232, 5 x 1uF -kondensaattoria ja DE9 -liittimen)
- Juoton leipälauta
Valinnainen
- 4 -asentoinen otsikko
- Johto
(ja max232 jne. tunnistetietojen kommunikoimiseksi) Voit myös liittää suosikkisi LCD -näytön sen sijaan, että lähetät tunnistetietoja RS232: n kautta.
Vaihe 2: Liitä osat
Asioiden laitteistopuoli on melko helppo. Sen sijaan, että syöksin RFID -lukijani suoraan leipälevylleni, päätin tehdä nopean kaapelin, jotta voisin siirtää RFID -lukijaa hieman paremmin. Tätä varten katkaisin juuri 4 asemaa naaraspistokkeen otsikkoliuskalta, jonka olin maannut ja juottanut kolmeen johtoon. Sähköteippi valmisti ghetto -liitännän. RFID -lukijalla on 4 liitäntää:
- Vcc
- OTA KÄYTTÖÖN
- ULOS
- Gnd
Kuten luultavasti arvasit, kytke Vcc +5V ja Gnd maahan. Koska RFID -lukija kuluttaa niin paljon virtaa, voit lyödä ENABLE -nastan pois päältä ja käynnistää sen eri aikavälein. Päätin vain jatkaa sitä. Koska se on käänteinen, aktivoi se vetämällä sitä LOW -asentoon. Vaihtoehtoisesti voit liittää sen maahan. Yhdistin sen PIND3: een, jotta voin ottaa käyttöön/poistaa käytöstä, jos päätän. OUT -nasta on paikka, johon lukija lähettää sarjatiedot tagin lukemisen jälkeen. Yhdistin sen PIND2 -laitteeseen. Huomaa, Parallax Universumissa punainen tarkoittaa menoa. Toisin sanoen vihreä LED tarkoittaa, että laite on passiivinen ja käyttämätön, kun taas punainen LED tarkoittaa, että laite on aktiivinen. * kohauttaa olkiaan* Mene hahmolle.
Vaihe 3: Kirjoita koodi
Jos haluat lukea tietoja RFID -lukijalta, sinun on tiedettävä, milloin tunniste on lähetetty, vedettävä tiedot sarjaportista ja lähetettävä sitten jonnekin.
RFID Reader Data Format
Parallax RFID -lukija lähettää tietoja 2400 baudin kiinteällä jäätiköllä. RFID -tunniste on 10 tavua. Virheiden havaitsemisen/korjaamisen mahdollistamiseksi, koska lukija voidaan kytkeä pois satunnaisesta kohinasta, 10-tavuista RFID: tä rajoittaa käynnistys- ja lopetusvalvonta. Aloitusvalvoja on rivinsyöttö (0x0A) ja pysäytysvahti on kelkan paluu (0x0D). Se näyttää tältä:
[Käynnistä Sentinel | tavu 1 | tavu 2 | tavu 3 | tavu 4 | tavu 5 | tavu 6 | tavu 7 | tavu 8 | tavu 9 | tavu 10 | Lopeta Sentinel]Nämä ovat kolme ensisijaista vaihetta.
Tiedä, milloin tunniste on lähetetty
Käytin AVR: n nastanvaihdon keskeytystä, joka ilmoittaa laiteohjelmistolle, että valvotussa nastassa on tapahtunut muutos. AVR: n määrittäminen tälle on helppoa ja edellyttää lipun asettamista, MCU: lle kertomista, mitä nasta haluat seurata, ja globaalin keskeytysbitin asettamista. Määritä PCINT
BSET (PCICR, PCIE2); // pin change interrupt control register pcie2 BSET (PCMSK2, PCINT18); // ota nastanvaihdon keskeytys käyttöön PCINT18 (PD2) BSET: lle (SREG, 7); // Aseta SREG I-bitKirjoita keskeytyspalvelurutiini Haluat pitää ISR: n lyhyenä, joten keskeytysvektorissani luen koko tavun, kerrallaan ja tallennan tavun globaaliin haihtuvaan merkkijonoon. Teen jokaisen keskeytyksen yhteydessä seuraavaa:
- Tarkista, että olen aloitusbitissä
- Keskitä ajoitus keskipulssille 2400 baudilla (RFID -lukijan nopeus)
- Ohita aloitusbitti ja keskeytä seuraavan bitin keskelle
- Lue jokainen bitti allekirjoittamattomaan kokonaislukuun
- Kun minulla on 8 bittiä, laita tavu merkkitaulukkoon
- Kun olen kerännyt 12 tavua, kerro MCU: lle, että tagi on luettu virheiden havaitsemiseksi.
Muokkasin SoftSerial -koodia Mikal Hartilta, joka muutti David Mellisin koodia kokeellisesti määritettyjen viivästysten vuoksi sarjarutiineissa.
Jäsennys RS232 -lähtö
PCINT-rutiini sisältää koodin RS232-lähdön lukemiseksi RFID-lukijasta. Kun olen saanut 12 tavua (10 tavun RFID ja vartijat), asetan bDataReady-arvon 1: ksi ja annan pääsilmukan käsitellä tiedot ja näyttää ne.
// tämä on keskeytyskäsittelijä ISR (PCINT2_vect) {if (BCHK (PIND, RFID_IN)) // Aloitusbitti menee heikosti; uint8_t bitti = 0; TunedDelay (CENTER_DELAY); // Keskitä aloitusbitille kohteelle (uint8_t x = 0; x <8; x ++) {TunedDelay (INTRABIT_DELAY); // ohita vähän, veli… if (BCHK (PIND, RFID_IN)) BSET (bit, x); muut BCLR (bitti, x); } TunedDelay (INTRABIT_DELAY); // ohita pysäytysbitti RFID_tag [rxIdx] = bitti; ++ rxIdx; jos (rxIdx == 12) bDataReady = 1;}
Näytä tunniste
Pääsivulla (), ikuisesti (ikuisesti) -silmukan aikana tarkistan, onko bDataReady asetettu, mikä osoittaa, että koko RFID -rakenne on lähetetty. Tarkistan sitten, onko se kelvollinen tunniste (eli aloitus- ja lopetusmerkit ovat vastaavasti 0x0A ja 0x0D), ja jos on, lähetän sen RS232 -yhteyden kautta.
for (;;) {if (bDataReady) {#ifdef _DEBUG_ USART_tx_S ("Aloita tavu:"); USART_tx_S (itoa (RFID_tag [0], & ibuff [0], 16)); ibuff [0] = 0; ibuff [1] = 0; USART_tx_S ("\ nPysäytä tavu:"); 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)); jos (x! = 10) USART_tx (& apos: & apos); } USART_tx_S ("\ n"); } rxIdx = 0; bDataReady = 0; }}
Vaihe 4: Koodi ja jäähyväiset
Tämä sivu sisältää zip -tiedoston asianomaisella koodilla. Se on kirjoitettu AVR Studio 4.16: ssa. Jos käytät ohjelmoijan muistilehtiöä, eclipseä tai vi (tai jotain muuta), sinun on kopioitava luotettu Makefile hakemistoon ja lisättävä nämä tiedostot lähderiville. 16 MHz: n MCU. Jos käytät eri kellotaajuutta, sinun on kokeellisesti määritettävä viritetyt viiveet siirtonopeuspulssien keskelle. Toivon, että tämä ohje auttoi sinua jollakin tavalla. Jos sinulla on ehdotuksia sen parantamiseksi, älä epäröi kertoa minulle!
Suositeltava:
MITEN AJATA FT232R USB UART CLONE ARDUINO NANO BOARD 3.0: 7 vaihetta
MITEN AJATA FT232R USB UART CLONE ARDUINO NANO BOARD 3.0: Tänään ostin arduino nano v3.0 (klooni), mutta minulla on ongelma. tietokoneeni tunnistaa aina " FT232R USB UART " andarduino Ide ei tunnista tätä korttia. miksi? mikä hätänä? okei, minulla on opetusohjelma tämän ongelman ratkaisemiseksi
Arduino Internet -palveluntarjoajana -- Polta kuusiotiedosto AVR: ssä -- AVR: n sulake -- Arduino ohjelmoijana: 10 vaihetta
Arduino Internet -palveluntarjoajana || Polta kuusiotiedosto AVR: ssä || AVR: n sulake || Arduino ohjelmoijana: ……………………… Tilaa YouTube -kanavani saadaksesi lisää videoita …….. Tämä artikkeli on kyse arduinosta kuten isp. Jos haluat ladata heksatiedoston tai jos haluat asettaa sulakkeen AVR: ään, sinun ei tarvitse ostaa ohjelmoijaa, voit tehdä
Atmega128A Suhteellinen moottoriajo - ATMEL ICE AVR -ajastin UART PWM -ohjaus: 4 vaihetta
Atmega128A Suhteellinen moottorikäyttö - ATMEL ICE AVR -ajastin UART PWM -ohjaus: Tässä ohjeessa kerron sinulle, kuinka ohjata tasavirtamoottoria PWM -kommunikoinnilla UART -kahvan ajastimen keskeytysten kautta. jonka löydät Aliexpressistä noin 4 USD
Ohjelman tai koodin lataaminen Arduino Pro Mini -laitteeseen käyttämällä CH340 UART -muunninkaapelia: 4 vaihetta
Ohjelman tai koodin lataaminen Arduino Pro Mini -laitteeseen käyttämällä CH340 UART -sarjamuunninkaapelia: USB TTL -sarjakaapelit ovat sarja USB -sarjamuunninkaapeleita, jotka tarjoavat yhteyden USB- ja sarja -UART -liitäntöjen välillä. Saatavilla on useita kaapeleita, jotka tarjoavat liitettävyyden 5 voltilla, 3,3 voltilla tai käyttäjän määrittämillä signaalitasoilla
Langaton sarja (UART) Arduino/STM32/jne: lle: 3 vaihetta (kuvien kanssa)
Langaton sarja (UART) Arduinolle/STM32/jne.: Toivottavasti kaikki ovat kanssani samaa mieltä siitä, että Arduino -sarja on loistava työkalu projektien virheenkorjaukseen. Se on pohjimmiltaan ainoa vaihtoehto Arduinon virheenkorjaukseen. Mutta joskus USB -kaapelin käyttäminen Ardista ei ole mahdollista tai käytännöllistä