Interfaz RFID para 8051.
RFID o Radio Frequency Identification es un método en el que las ondas
electromagnéticas se utilizan para la transmisión de datos para el
propósito de identificar las etiquetas unidas a objetos.
Un sistema de RFID consiste en un transmisor (tag) y una etiqueta de
reader.The se cifra con un código único y el lector escanea el código
para el propósito de identificación. Las etiquetas son generalmente de dos tipos: activa y pasiva.
Las etiquetas activas tienen una batería instalada a la misma y que
transmite periódicamente o en la proximidad del lector el código único. Las etiquetas pasivas son alimentados mediante la inducción electromagnética de la señal transmitida por el lector.
Las aplicaciones típicas de RFID son los sistemas de control de acceso,
tarjetas de identificación, identificación humana, la identificación de
animales, sistemas de pago, los libros de marcado, en sustitución de
códigos de barras, etiquetado mercancía en las tiendas, etc. Las etiquetas RFID están disponibles en diferentes formas, pero la forma más común es en forma de una tarjeta. Los lectores de RFID están disponibles en el mercado en la forma de un módulo con todo el hardware de apoyo. Este artículo es sobre la interfaz RFID para 8051 microcontrolador. Las imágenes de una tarjeta RFID y el lector típico se muestran a continuación.
La tarjeta RFID está disponible en diferentes tamaños y formas y el tipo más comúnmente utilizado se muestra arriba. La imagen de un módulo típico lector de RFID también se muestra arriba.
Básicamente contiene una memoria de semiconductores para almacenar el
código de identificación único, circuito y una bobina de modulación.
Los bobina actúa como la fuente de alimentación por medio de inducción
electromagnética, mientras que en la zona del lector y que también sirve
como la antena para propagar el código ID. El circuito de modulación modula el código único en la onda transmitida. El lector contiene básicamente una bobina y un circuito electrónico. La bobina sirve como excitador para la tarjeta y también la antena para recibir la señal propagada por la tarjeta. El circuito electrónico demodula esta señal y la convierte en una forma adecuada para la siguiente etapa (microcontrolador). Esquema de conexiones para la conexión del módulo RFID para 8051 microcontrolador se muestra a continuación.
Interfaz RFID para 8051 diagrama del circuito.
El esquema completo para la conexión del módulo RFID para 8051 se muestra arriba. El código de identificación único en la tarjeta RFID es leído por el circuito y se visualiza en la pantalla LCD 16 × 2. Pin Tx del módulo RFID está conectado al puerto 3.5 del microcontrolador. El microcontrolador recibe datos desde el módulo de RFID a través de este canal. Interruptor S1, el condensador C1 y la resistencia R1 forma el circuito de rearme. El condensador C2, C3 y el cristal X1 están asociados con el circuito de reposición.
Programa:
RS EQU P2.7 //equates P2.7 to RS RW EQU P2.6 //equates P2.6 to RW E EQU P2.5 //equates P2.5 to E ORG 000H //origin MOV TMOD,#00100001B //Timer1=Mode2 timer & Timer0=Mode1 timer MOV TH1,#253D //loads TH1 with 253D(9600 baud) MOV SCON,#50H //sets serial port to Mode1 and receiver enabled SETB TR1 //starts Timer1 MAIN:ACALL DINT //calls DINT subroutine ACALL TEXT1 //calls TEXT1 subroutine ACALL LINE2 //calls LINE2 subroutine ACALL TEXT2 //calls TEXT2 subroutine ACALL READ //calls READ subroutine ACALL LINE2 //calls LINE2 subroutine ACALL WRITE //calls WRITE subroutine ACALL DELAY1 //calls DELAY1 subroutine SJMP MAIN //jumps back to MAIN label DELAY1:MOV R3,#46D //loads R3 with 46D BACK: MOV TH0,#00000000B //loads TH0 with all 0's MOV TL0,#00000000B //loads TL0 with all 0's SETB TR0 //starts Timer 0 HERE1: JNB TF0,HERE1 //loops here until TFO flag is 1 CLR TR0 //stops TR1 CLR TF0 //clears TF0 flag DJNZ R3,BACK //iterates the loop 46 times for 3s delay RET //returns from subroutine READ:MOV R0,#12D //loads R0 with 12D MOV R1,#160D //loads R1 with 160D WAIT:JNB RI,WAIT //loops here until RI flag is set MOV A,SBUF //moves SBUF to A MOV @R1,A //moves A to location pointed by R1 CLR RI //clears RI flag DJNZ R0,WAIT //iterates the loop 12 times RET //return from subroutine WRITE:MOV R2,#12D //loads R2 with 12D MOV R1,#160D //loads R1 with 160D BACK1:MOV A,@R1 //loads A with data pointed by R1 ACALL DISPLAY //calls DISPLAY subroutine INC R1 //incremets R1 DJNZ R2,BACK1 //iterates the loop 160 times RET //return from subroutine TEXT1: MOV A,#52H //loads A with ascii of "R" ACALL DISPLAY //calls DISPLAY subroutine MOV A,#46H //loads A with ascii of "F" ACALL DISPLAY //calls DISPLAY subroutine MOV A,#49H //loads A with ascii of "I" ACALL DISPLAY //calls DISPLAY subroutine MOV A,#44H //loads A with ascii of "D" ACALL DISPLAY //calls DISPLAY subroutine MOV A,#20H //loads A with ascii of "space" ACALL DISPLAY //calls DISPLAY subroutine MOV A,#52H //loads A with ascii of "R" ACALL DISPLAY //calls DISPLAY subroutine MOV A,#45H //loads A with ascii of "E" ACALL DISPLAY //calls DISPLAY subroutine MOV A,#41H //loads A with ascii of "A" ACALL DISPLAY //calls DISPLAY subroutine MOV A,#44H //loads A with ascii of "D" ACALL DISPLAY //calls DISPLAY subroutine MOV A,#45H //loads A with ascii of "E" ACALL DISPLAY //calls DISPLAY subroutine MOV A,#52H //loads A with ascii of "R" ACALL DISPLAY //calls DISPLAY subroutine RET //returns from subroutine TEXT2: MOV A,#53H //loads A with ascii of "S" ACALL DISPLAY //calls DISPLAY subroutine MOV A,#77H //loads A with ascii of "w" ACALL DISPLAY //calls DISPLAY subroutine MOV A,#69H //loads A with ascii of "i" ACALL DISPLAY //calls DISPLAY subroutine MOV A,#70H //loads A with ascii of "p" ACALL DISPLAY //calls DISPLAY subroutine MOV A,#65H //loads A with ascii of "e" ACALL DISPLAY //calls DISPLAY subroutine MOV A,#20H //loads A with ascii of "space" ACALL DISPLAY //calls DISPLAY subroutine MOV A,#63H //loads A with ascii of "c" ACALL DISPLAY //calls DISPLAY subroutine MOV A,#61H //loads A with ascii of "a" ACALL DISPLAY //calls DISPLAY subroutine MOV A,#72H //loads A with ascii of "r" ACALL DISPLAY //calls DISPLAY subroutine MOV A,#64H //loads A with ascii of "d" ACALL DISPLAY //calls DISPLAY subroutine MOV A,#2EH //loads A with ascii of "." ACALL DISPLAY //calls DISPLAY subroutine MOV A,#2EH //loads A with ascii of "." ACALL DISPLAY //calls DISPLAY subroutine RET //return from subroutine DINT:MOV A,#0FH //display ON cursor blinking ON ACALL CMD //calls CMD subroutine MOV A,#01H //clear display screen ACALL CMD //calls CMD subroutine MOV A,#06H //increment cursor ACALL CMD //calls CMD subroutine MOV A,#83H //cursor line 1 position 3 ACALL CMD //calls CMD subroutine MOV A,#3CH //activate 2nd line ACALL CMD //calls CMD subroutine RET //return from subroutine LINE2:MOV A,#0C0H //force cursor to line 2 position 1 ACALL CMD //calls CMD subroutine RET //return from subroutine CMD: MOV P0,A //moves content of A to Port 0 CLR RS //clears register select pin CLR RW //clears read/write pin SETB E //sets enable pin CLR E //clears enable pin ACALL DELAY //calls DELAY subroutine RET //return from subroutine DISPLAY:MOV P0,A //moves content of A to Port 0 SETB RS //sets register select pin CLR RW //clears read/write pin SETB E //sets enable pin CLR E //clears enable pin ACALL DELAY //calls DELAY subroutine RET //return from subroutine DELAY: CLR E //clears enable pin CLR RS //clears register select pin SETB RW //clears read/write pin MOV P0,#0FFh //moves all 0's to Port 0 SETB E //sets enable pin MOV A,P0 //moves Port 0 to A JB ACC.7,DELAY //jumps back to label DELAY if ACC.7 is set CLR E //clears enable pin CLR RW //clears read/write pin RET //return from subroutine END //end statement
Acerca del programa.
El programa para la interfaz RFID a 8051 se muestra arriba y puede ser simplemente divide en cuatro partes.
Configuración de la comunicación en serie, la lectura de la tarjeta
RFID, ir a buscar desde la posición de memoria y mostrarlo en la
pantalla LCD.
Configuración de la comunicación en serie.
La primera parte establece la velocidad de transmisión y la velocidad
de comunicación mode.Baud de serie es el número de pulsos por segundo
que se producen en una línea de transmisión o en palabras simples es la
velocidad a la que se intercambian datos entre dos sistemas. La velocidad de transmisión requiere aquí es 9600 y se establece mediante el Timer1. Para ello, el Timer1 se configura en Modo 2 y TH1 (Timer1 registro agudo) se carga con 253D.
El valor que tiene que ser cargado en TH1 para ca velocidad de
transmisión particular puede determinarse usando la siguiente ecuación;
TH1 = 256 - ((Crystal / 384) / Baud).
El cristal utilizado aquí es 11,052 MHz y la velocidad de transmisión
requerida es de 9600. Sustituyendo estos valores en la ecuación anterior
obtenemos TH1 = 256 - ((11.052MHz / 384) / Baud) = 253. El registro SCON se carga con 50H para establecer modo de puerto serie al Modo 1 y permitiendo que el receptor de serie.
Todo lo anterior dijo procedimientos son el requisito mínimo para
implementar la comunicación en serie en un microcontrolador 8051.
Lectura de la tarjeta RFID.
El siguiente paso es leer la tarjeta RFID. El lector RFID está emitiendo periódicamente señales electromagnéticas.
Cuando la tarjeta RFID está en la vecindad del lector, la tarjeta RFID
será recoger las emisiones lector y transmite el código de ID único en
la forma de una señal de radio modulada.
El lector fotos esta onda de radio, demodula ella, la convierte en un
microcontrolador formas reconocibles y salidas que en serie en su pin
Tx.
En palabras simples el lector emite un código de identificación único
en serie, cuando cada vez la tarjeta RFID está en su proximidad.
Por lo general, el código RFID constará de 12 caracteres y el
microcontrolador tiene que recogerlo cuando cada vez que el lector lo
transmite. Esto se hace comprobando el estado de la bandera RI en el registro SCON. Los datos transmitidos al microcontrolador es receptor por el registro SBUF y este proceso sucede automáticamente. Cuando alguna vez la SBUF recibe un bloque completo de datos, se hace alta RI.
Así que, cuando cada vez RI va alto, byte dentro SBUF se mueve en un
registro y luego se mudó a una posición de memoria apuntada por registro
R1. La ubicación de memoria inicial (160D) es pre-cargado en el R1. Entonces R1 se incrementa, bandera RI se borra y toda la etapa se repite 12 veces para recibir todos los 12 caracteres.
Obtención y visualización del código de identificación único.
La siguiente parte es a buscar a los caracteres individuales de la memoria y lo mostrará en la pantalla LCD.
Por esta dirección de la posición de memoria del primer carácter está
cargado en en el registro R1 y luego se trasladó a acuumulator (A)
utilizando el código MOV A, @ R1. Entonces subrutina DISPLAY se llama para mostrar el carácter actual en A en la pantalla LCD. Todo el paso se repite 12 veces para ir a buscar y mostrar todos los 12 caracteres del código RFID único.
No hay comentarios:
Publicar un comentario