Taula de continguts:
Vídeo: Lector RFID AVR / Arduino amb codi UART en C: 4 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:18
La RFID és la moda que es troba a tot arreu, des de sistemes d’inventari fins a sistemes d’identificació de distintius. Si alguna vegada heu anat a un gran magatzem i heu recorregut aquestes coses amb aspecte de detector de metalls als punts d’entrada / sortida, heu vist RFID. Hi ha diversos llocs on es pot trobar bona informació sobre la configuració de l’RFID, que es pot centrar en la instal·lació del lector RFID Parallax (Serial TTL) en un AVR, amb èmfasi en el codi C necessari per llegir l’entrada sèrie. El codi està en C i no utilitza cap biblioteca externa. De fet, parla 2400 baud directament sense l'ús d'un UART mitjançant la sincronització amb la velocitat en baud del lector RFID i la lectura del pin digital al qual està connectat. Us emociona? Jo també.
Pas 1: Obteniu els béns
Necessiteu la següent llista de peces:
- Lector RFID (Parallax # 28140 $ 39,99)
- Etiqueta RFID (Parallax # 32397 0,99 $)
- AVR o clon Arduino (si utilitzeu un AVR existent, també necessitareu un condensador max232, 5 x 1uF i un connector DE9)
- Taula de pa sense soldadura
Opcional
- Capçalera de 4 posicions
- Filferro
(i el max232, etc. per a la comunicació de la informació de l'etiqueta) També podeu connectar la vostra pantalla LCD preferida en lloc d'enviar dades de l'etiqueta mitjançant RS232.
Pas 2: connecteu les peces
El costat del maquinari de les coses és bastant fàcil. En lloc de col·locar el meu lector RFID directament a la taula, vaig optar per fer un cable ràpid per poder moure el lector RFID una mica millor. Per a això, acabo de tallar 4 posicions d'una tira de capçalera de femella que tenia estirada i soldada en tres cables. La cinta elèctrica ha completat el connector del gueto. El lector RFID té 4 connexions:
- Vcc
- HABILITAR
- Fora
- Gnd
Com probablement ho heu endevinat, connecteu Vcc a + 5V i Gnd a terra. Com que el lector RFID consumeix tanta energia, podeu tocar el pin ENABLE per apagar-lo i encendre-lo a diversos intervals. Simplement vaig escollir continuar. Com que està invertit, el tireu BAIX per activar-lo. Com a alternativa, podeu connectar-lo a terra. El vaig connectar a PIND3 per donar-me opcions d’activar / desactivar si ho decidia. El pin OUT és on el lector envia les seves dades de sèrie després de llegir una etiqueta. El vaig connectar a PIND2. Nota, a l’univers Parallax, vermell significa anar. És a dir, un LED verd significa que la unitat està inactiva i inactiva, mentre que un LED vermell significa que la unitat està activa. * encongir-se d’espatlles * Anar xifra.
Pas 3: escriviu el codi
Per llegir les dades del lector RFID, heu de saber quan s’ha enviat una etiqueta, traieu les dades del port sèrie i envieu-les a algun lloc.
Format de dades del lector RFID
El lector RFID Parallax envia dades a un ritme glacial fix de 2.400 baud. Una etiqueta RFID té 10 bytes. Per tal de permetre la detecció / correcció d'errors, ja que el lector es podria desactivar del soroll aleatori, el RFID de 10 bytes està limitat per una sentinella d'inici i aturada. El sentinella inicial és l'alimentació de línia (0x0A) i el sentinella d'aturada és retorn de carro (0x0D). Es veu així:
[Inici Sentinel | Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 | Byte 8 | Byte 9 | Byte 10 | Stop Sentinel]Aquests són els tres passos principals.
Saber quan s'ha enviat una etiqueta
He utilitzat una interrupció de canvi de pins a l'AVR que notifica al firmware que s'ha produït un canvi en un pin supervisat. Configurar l'AVR per a això és fàcil i requereix establir el senyalador, indicar a la MCU quin pin voleu controlar i configurar el bit d'interrupció global. Configureu PCINT
BSET (PCICR, PCIE2); // registre de control d'interrupció de canvi de pin pcie2 BSET (PCMSK2, PCINT18); // habilitar la interrupció del canvi de pin per a PCINT18 (PD2) BSET (SREG, 7); // Estableix SREG I-bitVoleu que el vostre ISR sigui breu, de manera que en el meu vector d’interrupcions llegeixo tot el byte, poc a poc, i emmagatzemo el byte en una matriu de caràcters volàtils global. Faig el següent a cada interrupció:
- Comproveu que estic en un punt inicial
- Centreu el temps al pols mig a 2400 baud (la velocitat del lector RFID)
- Omet el bit inicial i posa’t en pausa a la meitat del bit següent
- Llegiu cada bit en un enter sense signar
- Quan tinc 8 bits, poseu el byte en una matriu de caràcters
- Quan hagi recopilat 12 bytes, feu saber a la MCU que l'etiqueta s'ha llegit per a la detecció d'errors.
Vaig modificar el codi SoftSerial de Mikal Hart que va modificar el codi de David Mellis pels retards determinats experimentalment en les rutines serials.
Analitza la sortida RS232
La rutina PCINT conté el codi per llegir la sortida RS232 del lector RFID. Quan tinc 12 bytes (RFID de 10 bytes més sentinelles) he definit bDataReady a 1 i deixo que el bucle principal processi les dades i les mostri.
// aquest és el controlador d’interrupcionsISR (PCINT2_vect) {if (BCHK (PIND, RFID_IN)) // El bit d’inici té un retorn baix; uint8_t bit = 0; TunedDelay (CENTER_DELAY); // Centra el bit inicial per a (uint8_t x = 0; x <8; x ++) {TunedDelay (INTRABIT_DELAY); // salta una mica, germà … if (BCHK (PIND, RFID_IN)) BSET (bit, x); altrament BCLR (bit, x); } TunedDelay (INTRABIT_DELAY); // ometeu el bit de parada RFID_tag [rxIdx] = bit; ++ rxIdx; if (rxIdx == 12) bDataReady = 1;}
Mostra la vostra etiqueta
Al main (), durant el bucle for (ever), comprovo si s'ha configurat bDataReady, indicant que s'ha enviat tota l'estructura RFID. A continuació, comprovo si es tracta d’una etiqueta vàlida (és a dir, els caràcters d’inici i d’aturada són 0x0A i 0x0D, respectivament) i, si és així, l’envio la meva connexió RS232.
per a (;;) {if (bDataReady) {#ifdef _DEBUG_ USART_tx_S ("Octet inicial:"); USART_tx_S (itoa (RFID_tag [0], & ibuff [0], 16)); ibuff [0] = 0; ibuff [1] = 0; USART_tx_S ("\ nDeter byte:"); USART_tx_S (itoa (RFID_tag [11], & ibuff [0], 16)); # endif if (ValidTag ()) {USART_tx_S ("\ nRFID Tag:"); per a (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; }}
Pas 4: Codi i comiat
Aquesta pàgina conté un fitxer zip amb el codi corresponent. Va ser escrit a AVR Studio 4.16. Si utilitzeu el bloc de notes, eclipsi o vi del programador (o alguna cosa més), haureu de copiar un Makefile de confiança al directori i afegir aquests fitxers a la línia d’origen. MCU de 16 MHz. Si esteu executant amb una freqüència de rellotge diferent, haureu de determinar experimentalment els retards sintonitzats per centrar-se en els impulsos de la velocitat en bauds. Espero que aquesta instrucció us ajudi d'alguna manera. Si teniu algun suggeriment sobre com es podria millorar, no dubteu en fer-m'ho saber.
Recomanat:
Lector RFID basat en ESP32 amb pantalla tàctil: 7 passos
Lector RFID basat en ESP32 amb pantalla tàctil: en aquest petit format, mostraré com crear un lector RFID senzill amb sortida TFT per al muntatge a la paret mitjançant un mòdul ESP32 DEV KIT C, un lector basat en RC-522 i un kit AZ-Touch ESP. Podeu utilitzar aquest lector per accedir a la porta o per intrar alar
Pany elèctric amb escàner d'empremta digital i lector RFID: 11 passos (amb imatges)
Pany de porta elèctric amb escàner d’empremtes digitals i lector RFID: el projecte es va dissenyar per evitar la necessitat d’utilitzar claus, per assolir el nostre objectiu vam utilitzar un sensor d’empremtes digitals òptic i un Arduino. Tanmateix, hi ha persones que tenen una empremta digital il·legible i el sensor no la reconeixerà. Després pensant en
Lector RFID Arduino amb pantalla TFT: 7 passos
Lector RFID Arduino amb pantalla TFT: en aquest instructiu us mostraré com dissenyar un lector RFID d’aspecte agradable amb pantalla TFT i per al muntatge a la paret. És molt fàcil crear un lector RFID d’aspecte agradable amb sortida TFT per al muntatge a la paret amb un Arduino MKR de la vostra elecció i el nostre Ar
Demostració 4x4 d’un tauler d’escacs electrònic / amb lector Arduino Mega + RFID + Sensors d’efecte Hall: 7 passos
Demostració 4x4 d’un tauler d’escacs electrònic / amb lector Arduino Mega + RFID + Sensors d’efecte Hall: Hola fabricants, sóc Tahir Miriyev, graduat el 2018 a la Universitat Tècnica de l’Orient Mitjà, Ankara / Turquia. Em vaig especialitzar en Matemàtiques Aplicades, però sempre em va encantar fer coses, sobretot quan es tractava de treballs manuals amb electrònica, disseny i programació
Utilitzeu el lector RFID MFRC522 amb Arduino: 5 passos
Utilitzeu el lector RFID MFRC522 amb Arduino: Hola! Vaig a ensenyar-vos a fer un escàner de targetes clau o de porta claus molt fàcil de fer. Si teniu un mòdul RFID MFRC522, leds, resistències, cables, un arduino uno, una placa de configuració i una bateria de 9 v (opcional), esteu bé per anar a refrescar-vos