RFID significa Radio Frequency Identification. O módulo RFID pode ler ou gravar uma pequena quantidade de dados em uma etiqueta RFID passiva, que pode ser usada no processo de identificação em vários sistemas como sistema de atendimento, sistema de segurança, sistema de votação, etc. RFID é uma tecnologia muito conveniente e fácil.
Para ler os cartões RFID passivos e a etiqueta, precisamos de um microcontrolador com hardware UART. Se selecionarmos um microcontrolador sem UART, precisamos implementar o software UART. Aqui , estamos usando o microcontrolador PIC PIC16F877A para fazer a interface RFID. Vamos simplesmente ler o número de identificação único. de etiquetas RFID e exibi-las em um LCD 16x2.
Módulo RFID e seu funcionamento
Neste projeto, escolhemos o módulo RFID EM-18, que é um módulo de pequeno porte, baixo custo e eficiente em termos de energia. O módulo RFID EM-18 usa a frequência RF de 125 KHz para ler etiquetas RFID passivas de 125 KHz. O módulo EM-18 usa oscilador, demodulador e decodificador de dados para ler dados de um cartão passivo.
Tag RFID
Existem três tipos de etiquetas RFID disponíveis: Passiva, Ativa ou Passiva assistida por bateria. Diferentes tipos de tags RFID com diferentes formas e tamanhos estão disponíveis no mercado. Poucos deles usam frequências diferentes para fins de comunicação. Usaremos cartões RFID passivos de 125 Khz que armazenam os dados de identificação exclusivos. Aqui estão o cartão RFID e as etiquetas que estamos usando para este projeto.
Trabalho de RFID
Se virmos a folha de dados (http://www.alselectro.com/files/rfid-ttl-em18.pdf) do Módulo EM-18, poderemos ver a parte traseira do módulo e o circuito de aplicação:
O módulo usa o protocolo de comunicação UART na taxa de 9600 Baud. Quando uma etiqueta de frequência válida é inserida no campo magnético do leitor EM-18, o transistor BC557 liga e a campainha começa a apitar, e também acende o LED. Estamos utilizando um módulo facilmente disponível no mercado e que possui um circuito completo com buzzer, led e uma porta RS232 adicional.
Aqui está o módulo da placa RFID que estamos usando com os nomes dos pinos. Este módulo também possui opção de alimentação adicional.
Uma coisa precisa ser mantida em mente que a saída do leitor EM-18 usa nível lógico de 5V. Poderíamos usar outro microcontrolador que use um nível lógico inferior, mas, nesses casos, o conversor de nível lógico adicional é necessário. Em alguns casos, o pino UART do microcontrolador 3.3V é muitas vezes 5V tolerantes.
A saída UART fornece dados ASCII de 12 bits. Os primeiros 10 bits são o número da etiqueta RFID, que é a ID exclusiva e os dois últimos dígitos são usados para teste de erro. Esses dois últimos dígitos são o XOR do número da etiqueta. O módulo EM-18 lerá os dados de etiquetas ou cartões RFID passivos de 125 KHz.
Esses tags ou IDs têm uma matriz de memória programada de fábrica que armazena o número de ID exclusivo. Como são passivos, não há bateria no cartão ou nas etiquetas, eles são energizados pelo campo magnético do módulo RF Transceiver. Essas etiquetas RFID são feitas usando o EM4102 CMOS IC, que também é sincronizado pelo campo magnético.
Material Necessário
Para fazer este projeto, precisamos dos seguintes itens-
- PIC16F877A
- 20Mhz Cristal
- Capacitor de disco de cerâmica 2pcs 33pF
- LCD de caracteres 16x2
- Uma placa de ensaio
- Pote predefinido de 10k
- Resistor de 4,7k
- Fios de fio único para conectar
- Um adaptador 5V
- Módulo RF EM-18
- 5V Buzzer
- Capacitor 100uF &.1uF 12V
- Transistor BC557
- CONDUZIU
- Resistor 2.2k e 470R.
Estamos usando a placa do módulo EM-18 com buzzer e led pré-configurados. Portanto, os componentes listados de 11 a 15 não são necessários.
Diagrama de circuito
O esquema é simples; conectamos o LCD na porta RB e conectamos o módulo EM-18 no pino UART Rx.
Fizemos a conexão no breadboard de acordo com o esquema.
Explicação do código
Como sempre, primeiro precisamos definir os bits de configuração no microcontrolador pic, definir algumas macros, incluindo bibliotecas e frequência de cristal. Você pode verificar o código para todos aqueles no código completo fornecido no final.
// Configurações de bits de configuração PIC16F877A // instruções de configuração da linha de origem 'C' // CONFIG #pragma config FOSC = HS // Bits de seleção do oscilador (oscilador HS) #pragma config WDTE = OFF // Bit de habilitação do temporizador de watchdog (WDT desativado) # pragma config PWRTE = OFF // Bit de habilitação do temporizador de inicialização (PWRT desabilitado) #pragma config BOREN = ON // Bit de habilitação de redefinição de Brown-out (BOR habilitado) #pragma config LVP = OFF // Low-Voltage (Single-Supply) Bit de habilitação de programação serial em circuito (o pino RB3 / PGM tem função PGM; programação de baixa tensão habilitada) #pragma config CPD = OFF // Bit de proteção de código de memória EEPROM de dados (proteção de código EEPROM de dados desativada) #pragma config WRT = OFF // Bits de habilitação de gravação de memória de programa Flash (proteção contra gravação desligada; toda a memória de programa pode ser gravada pelo controle EECON) #pragma config CP = OFF // Bit de proteção de código de memória de programa Flash (proteção de código desligada) # incluir "supporing_cfile \ lcd.h" #include "supporing_cfile \ eusart1.h"
Se virmos a função principal , chamamos uma função para inicializar o sistema. Inicializamos o LCD e o UART nesta função.
/ * Esta função é para inicializações do sistema. * / void system_init (void) { TRISB = 0x00; // PORT B definido como pino de saída lcd_init (); // Isso irá inicializar o lcd EUSART1_Initialize (); // Isso inicializará o Eusart }
Agora, na função principal , usamos uma matriz de 13 bits que é o número RFID. Recebemos cada bit do RFID no. usando EUSART1_Read (); função, que é declarada dentro da biblioteca UART. Depois de receber 12bits, imprimimos o Array como string no LCD.
void main (void) { unsigned char count; unsigned char RF_ID; system_init (); lcd_com (0x80); lcd_puts ("Circuit Digest"); enquanto (1) { para (contagem = 0; contagem <12; contagem ++) { RF_ID = 0; RF_ID = EUSART1_Read (); } lcd_com (0xC0); // Define o cursor para a segunda linha começando lcd_puts ("ID:"); lcd_puts (RF_ID); } }
O código completo com o vídeo de demonstração é fornecido abaixo.
Verifique também a interface RFID com outro microcontrolador:
Interface RFID com MSP430 Launchpad
Interface RFID com microcontrolador 8051
Interface RFID com Arduino