Cov txheej txheem:

AVR/Arduino RFID Reader Nrog UART Code hauv C: 4 Cov Kauj Ruam
AVR/Arduino RFID Reader Nrog UART Code hauv C: 4 Cov Kauj Ruam

Video: AVR/Arduino RFID Reader Nrog UART Code hauv C: 4 Cov Kauj Ruam

Video: AVR/Arduino RFID Reader Nrog UART Code hauv C: 4 Cov Kauj Ruam
Video: RFID Reader Interface with AVR ATmega32 2024, Hlis ntuj nqeg
Anonim
AVR/Arduino RFID Reader Nrog UART Code hauv C
AVR/Arduino RFID Reader Nrog UART Code hauv C

RFID yog qhov xav tsis thoob, pom nyob txhua qhov chaw - los ntawm cov khoom lag luam mus rau cov cim cim cim. Yog tias koj tau mus rau tom khw muag khoom thiab taug kev hla cov hlau-ntes-saib yam khoom ntawm qhov nkag/tawm cov ntsiab lus, tom qab ntawd koj tau pom RFID. Muaj ntau qhov chaw los nrhiav cov ntaub ntawv zoo ntawm kev teeb tsa RFID, thiab cov lus qhia no tsom mus rau kev teeb tsa Parallax RFID nyeem ntawv (Serial TTL) ntawm AVR, nrog rau qhov tshwj xeeb ntawm C code xav tau los nyeem cov lus nkag. Cov cai nyob hauv C thiab tsis siv lwm lub tsev qiv ntawv sab nraud. Qhov tseeb, nws hais lus 2400 baud ncaj qha yam tsis siv UART los ntawm kev sib txuas rau RFID tus nyeem ntawv tus lej baud thiab nyeem tus lej digital uas nws txuas nrog. Zoo siab? Kuv thiab.

Kauj ruam 1: Tau txais cov khoom

Tau cov khoom
Tau cov khoom

Koj yuav xav tau cov npe hauv qab no:

  • Nyeem Ntawv RFID (Parallax #28140 $ 39.99)
  • RFID lossis (Parallax #32397 $ 0.99)
  • AVR lossis Arduino clone (yog tias koj siv AVR Tshuag, koj tseem yuav xav tau max232, 5 x 1uF capacitors, thiab DE9 txuas)
  • Solderless breadboard

Yeem yeem

  • 4 txoj hauj lwm header
  • Hlau

(thiab max232 thiab lwm yam rau kev sib txuas lus ntawm cov ntaub ntawv tag) Koj kuj tseem tuaj yeem txuas koj lub vijtsam LCD uas nyiam tshaj plaws ntawm kev xa cov ntaub ntawv tag ntawm RS232.

Kauj Ruam 2: Txuas Qhov Chaw

Txuas Qhov Chaw
Txuas Qhov Chaw
Txuas Qhov Chaw
Txuas Qhov Chaw
Txuas Qhov Chaw
Txuas Qhov Chaw

Sab kho vajtse ntawm yam yog yooj yim zoo nkauj. Hloov chaw ntawm plonking kuv tus nyeem ntawv RFID ncaj qha rau hauv kuv daim ntawv qhia zaub mov Kuv tau xaiv los ua tus xov tooj nrawm yog li kuv tuaj yeem txav tus nyeem ntawv RFID ncig me ntsis zoo dua. Txog qhov ntawd, Kuv tsuas yog txiav tawm 4 txoj haujlwm los ntawm tus poj niam lub qhov (socket) header strip kuv tau dag txog thiab muab muag rau ntawm peb lub xov hlau. Daim kab xev hluav taws xob ua tiav qhov txuas ghetto. Qhov nyeem ntawv RFID muaj 4 qhov sib txuas:

  • Vcc
  • Qhib
  • Tawm
  • Gnd

Raws li koj tej zaum tau kwv yees nws, txuas Vcc rau +5V thiab Gnd rau hauv av. Vim tias tus nyeem ntawv RFID siv lub zog ntau heev, koj tuaj yeem tsoo tus lej ENABLE kom tua nws thiab qhib ntawm ntau lub sijhawm. Kuv tsuas yog xaiv kom nws nyob. Vim tias nws tau hloov pauv, koj rub nws LOW kom qhib nws. Xwb, koj tuaj yeem txuas nws rau hauv av. Kuv txuas nws rau PIND3 kom muab kev xaiv rau kuv kom qhib/xiam oob qhab yog tias kuv txiav txim siab ua. OUT tus pin yog qhov uas tus nyeem ntawv xa nws cov ntaub ntawv xov xwm tom qab nws nyeem tag. Kuv txuas nws mus rau PIND2. Nco, hauv Parallax Universe, liab txhais tau tias mus. Ntawd yog, lub ntsuab ntsuab txhais tau tias chav tsev tsis ua haujlwm thiab tsis ua haujlwm, thaum lub teeb liab liab txhais tau tias chav tsev ua haujlwm. * shrug* Mus daim duab.

Kauj Ruam 3: Sau Txoj Cai

Sau Txoj Cai
Sau Txoj Cai

Txhawm rau nyeem cov ntaub ntawv los ntawm tus nyeem ntawv RFID, koj yuav tsum paub thaum twg tau xa daim ntawv, rub cov ntaub ntawv tawm ntawm qhov chaw nres nkoj, tom qab ntawd xa nws mus rau qhov twg.

RFID Nyeem Ntawv Cov Ntaub Ntawv

Parallax RFID nyeem ntawv xa cov ntaub ntawv ntawm qhov ruaj khov, glacial nrawm ntawm 2400 baud. Ib daim npav RFID yog 10 bytes. Txhawm rau tso cai rau kev txheeb xyuas qhov yuam kev/kho, txij li tus nyeem ntawv tuaj yeem teeb tsa los ntawm lub suab nrov nrov, 10-byte RFID tau raug khi los ntawm kev pib thiab nres nres. Qhov pib tus neeg xa xov liaison yog kab pub (0x0A) thiab nres nres yog xa rov qab (0x0D). Nws zoo li no:

[Pib Sentinel | Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 | Byte 8 | Byte 9 | Byte 10 | Nres Sentinel]Cov no yog peb theem pib.

Paub thaum twg tag tau xa

Kuv siv Tus Pin Hloov cuam tshuam ntawm AVR uas ceeb toom rau lub khoos phis tawj uas tau hloov pauv tshwm sim ntawm tus saib xyuas tus pin. Kev teeb tsa AVR rau qhov no yooj yim thiab xav kom teeb tsa tus chij, qhia rau MCU tus pin twg koj xav saib xyuas, thiab teeb tsa lub ntiaj teb cuam tshuam me ntsis. Kho lub PCINT

BSET (PCICR, PCIE2); // tus pin hloov cuam tshuam tswj kev sau npe pcie2 BSET (PCMSK2, PCINT18); // pab tus pin hloov cuam tshuam rau PCINT18 (PD2) BSET (SREG, 7); // Teeb SREG I-ntsisSau koj cov kev pabcuam cuam tshuam niaj hnub Koj xav khaws koj li ISR luv yog li hauv kuv qhov cuam tshuam vector Kuv nyeem tag nrho byte, ntsis me ntsis, thiab khaws cov byte hauv lub ntiaj teb tus yam ntxwv hloov pauv. Kuv ua cov hauv qab no ntawm txhua qhov cuam tshuam:

  • Txheeb xyuas kom ntseeg tau tias kuv tab tom pib me ntsis
  • Nruab nrab lub sijhawm mus rau qhov nruab nrab ntawm lub plawv dhia ntawm 2400 baud (qhov nrawm ntawm RFID nyeem ntawv)
  • Hla qhov pib me ntsis thiab ncua mus rau nruab nrab ntawm qhov ntxiv me ntsis
  • Nyeem txhua qhov me ntsis rau hauv cov lej uas tsis tau kos npe
  • Thaum kuv tau txais 8 cov khoom, muab cov byte tso rau hauv kab cim
  • Thaum kuv tau sau 12 bytes, qhia rau MCU paub tias daim pib tau nyeem rau qhov ua yuam kev lawm.

Kuv hloov kho SoftSerial code los ntawm Mikal Hart uas hloov kho cov cai los ntawm David Mellis rau qhov kev sim txiav txim siab qeeb hauv cov txheej txheem ib txwm muaj.

Parse RS232 Cov Zis

PCINT niaj hnub muaj cov cai rau nyeem RS232 cov zis los ntawm tus nyeem ntawv RFID. Thaum twg kuv tau txais 12 bytes (10-byte RFID ntxiv rau tus xa ntawv) Kuv teeb bDataReady rau 1 thiab cia lub ntsiab voj txheej txheem cov ntaub ntawv thiab tso tawm nws.

// qhov no yog tus cuam tshuam cuam tshuam ISR (PCINT2_vect) {yog (BCHK (PIND, RFID_IN)) // Pib me ntsis mus qis dua; uint8_t ntsis = 0; TunedDelay (CENTER_DELAY); // Qhov chaw pib me ntsis rau (uint8_t x = 0; x <8; x ++) {TunedDelay (INTRABIT_DELAY); // hla me ntsis, kwv tij… yog (BCHK (PIND, RFID_IN)) BSET (me ntsis, x); lwm qhov BCLR (ntsis, x); } TunedDelay (INTRABIT_DELAY); // hla nres me ntsis RFID_tag [rxIdx] = ntsis; ++ rxIdx; yog (rxIdx == 12) bDataReady = 1;}

Zaub Koj Tag

Hauv lub ntsiab (), thaum lub sijhawm (puas tau) lub voj, Kuv tshawb xyuas seb bDataReady tau teeb tsa, taw qhia tias tag nrho cov qauv RFID tau xa. Kuv mam li tshuaj xyuas seb nws puas siv tau (piv txwv li pib thiab nres cov cim yog 0x0A thiab 0x0D, feem), thiab yog li, kuv xa nws tawm kuv qhov kev sib txuas RS232.

rau (;;) {yog (bDataReady) {#ifdef _DEBUG_ USART_tx_S ("Pib byte:"); USART_tx_S (itoa (RFID_tag [0], & ibuff [0], 16)); ib [0] = 0; ib [1] = 0; USART_tx_S ("\ n Nres byte:"); USART_tx_S (itoa (RFID_tag [11], & ibuff [0], 16));#endif if (ValidTag ()) {USART_tx_S ("\ nRFID Tag:"); rau (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; }}

Kauj ruam 4: Code thiab Farewell

Nplooj ntawv no muaj cov ntawv zip nrog cov lej muaj feem cuam tshuam. Nws tau sau hauv AVR Studio 4.16. Yog tias koj siv tus programmer's notepad, dab noj hnub, lossis vi (lossis lwm yam) koj yuav tsum tau luam daim Makefile uas ntseeg siab rau hauv phau ntawv teev npe thiab ntxiv cov ntaub ntawv no mus rau kab ntawv. 16 MHz MCU. Yog tias koj tab tom khiav ntawm lub moos sib txawv, koj yuav tsum tau txiav txim siab txiav txim siab qhov ncua sij hawm ncua mus rau qhov nruab nrab ntawm tus nqi baud pulses. Kuv vam tias cov ntawv qhia no tau pab koj qee txoj hauv kev. Yog tias koj muaj lus qhia yuav ua li cas nws tuaj yeem txhim kho tsis txhob ua siab deb qhia rau kuv paub!

Pom zoo: