1 de junio de 2015

Interfaz RFID para 8051microcontroller

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.
Tarjeta RFID
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.

Interfaz módulo RFID para 8051
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