- Componentes usados:
- Explicação de trabalho:
- Descrição do circuito:
- Instalando a biblioteca wiringPi no Raspberry Pi:
- Explicação de programação:
Já usamos RFID em muitos de nossos projetos de RFID e já construímos um sistema de atendimento baseado em RFID usando 8051, aqui vamos construir um sistema de atendimento baseado em RFID usando Raspberry Pi.
Neste projeto de sistema de atendimento baseado em RFID, explicaremos como podemos autorizar e contar o atendimento automaticamente usando cartões RFID. A tecnologia RFID (identificação e detecção por radiofrequência) é comumente usada em escolas, faculdades, escritórios e estações para vários fins, para rastrear pessoas automaticamente. Aqui contaremos o atendimento de uma pessoa autorizada utilizando RFID.
Se você não está familiarizado com o Raspberry Pi, criamos uma série de tutoriais e projetos do raspberry pi, com interface com todos os componentes básicos e alguns projetos simples para começar, verifique.
Componentes usados:
- Raspberry Pi (com cartão SD inicializado)
- Botão de apertar
- Buzzer
- LCD 16x2
- Pote de 10k
- Resistor 10K
- CONDUZIU
- Resistor 1k
- Tábua de pão
- Leitor RFID
- Energia 5 volts
- Etiquetas ou cartões RFID
- Cabo Ethernet
- Fios de conexão
Leitor e tags RFID:
RFID é um dispositivo eletrônico que tem duas partes - uma é o leitor RFID e a outra é a etiqueta ou cartão RFID. Quando colocamos a etiqueta RFID perto do leitor RFID, ele lê os dados da etiqueta em série. A etiqueta RFID possui um código de caracteres de 12 dígitos em uma bobina. Este RFID está funcionando a uma taxa de transmissão de 9600 bps. RFID usa eletroímã para transferir dados do leitor para a etiqueta ou etiqueta para o leitor.
Explicação de trabalho:
Aqui, o Raspberry Pi 3 está controlando todo o processo deste projeto (o usuário pode usar qualquer placa Raspberry Pi). O RFID Reader lê o ID do cartão RFID, esses dados são recebidos pelo Raspberry Pi através do UART, então RPi valida o cartão e mostra os resultados na tela LCD.
Quando uma pessoa coloca sua etiqueta RFID próxima ao leitor RFID para fazer a varredura, o RFID lê os dados da etiqueta e os envia para o Raspberry Pi. Em seguida, o Raspberry Pi lê o número de identificação exclusivo dessa etiqueta RFID e, em seguida, compara esses dados com dados ou informações predefinidas. Se os dados corresponderem aos dados predefinidos, o Raspberry Pi aumentará a frequência da pessoa do tag em um e se não houver correspondência, o microcontrolador mostra a mensagem 'Cartão inválido' no LCD e a campainha apita continuamente por algum tempo. E aqui também adicionamos um botão para ver o número total. de atendimento de todos os alunos. Aqui pegamos 4 etiquetas RFID nas quais três são usadas para registrar a frequência de três alunos e uma é usada como cartão inválido.
Descrição do circuito:
O diagrama de circuito para este projeto de sistema de atendimento Raspberry Pi é muito simples, que contém Raspberry Pi 3, leitor RFID, tags RFID, campainha, LED e LCD. Aqui, o Raspberry Pi controla o processo completo, como leitura de dados provenientes do Reader, comparando dados com dados predefinidos, campainha de condução, LED de status de condução e envio de status para o display LCD. Leitor RFID é usado para ler tags RFID. Buzzer é usado para indicações e conduzido por transistor NPN embutido. O LCD é usado para exibir status ou mensagens nele.
As conexões são simples. O LCD está conectado ao Raspberry Pi no modo de 4 bits. Os pinos RS, RW e EN do LCD são conectados diretamente em wiringPi GPIO 11, gnd e 10. E os pinos de dados são conectados em wiringPi GPIO 6, 5, 4 e 1. Um potenciômetro de 10K é usado para definir o contraste ou brilho do LCD. A campainha está conectada no pino 7 do wiringPi GPIO em relação ao aterramento. Três LEDs são conectados para indicação do aluno com o respectivo cartão RFID. E um LED é usado para mostrar que o sistema está pronto para digitalizar o cartão RFID. Um botão de pressão também é conectado no pino 12 do wiringPi GPIO para exibir a contagem de atendimento. O leitor RFID está conectado ao pino UART (cabeamento GPIO pino 16).
Instalando a biblioteca wiringPi no Raspberry Pi:
Como em Python, importamos RPi.GPIO de importação como arquivo de cabeçalho IO para usar os pinos GPIO do Raspberry Pi, aqui na linguagem C precisamos usar a biblioteca wiringPi para usar os pinos GPIO em nosso programa C. Podemos instalá-lo usando os comandos abaixo um por um, você pode executar este comando no Terminal ou em algum cliente SSH como o Putty (se estiver usando Windows). Consulte nosso tutorial Introdução ao Raspberry Pi para saber mais sobre como manusear o Raspberry Pi.
sudo apt-get install git-core sudo apt-get update sudo apt-get upgrade git clone git: //git.drogon.net/wiringPi cd wiringPi git pull origin cd wiringPi./build
Teste a instalação da biblioteca wiringPi, use os comandos abaixo:
gpio -v gpio readall
Explicação de programação:
Agora, primeiro incluímos algumas bibliotecas e definimos os pinos que precisamos usar neste código.
#incluir
Depois disso, defina algumas variáveis e array para cálculo e armazene valores e strings.
int sp; int contagem1 = 0, contagem2 = 0, contagem3 = 0; char ch; char rfid; int i = 0; char temp;
Em seguida, funções foram escritas para executar todo o processo. Alguns deles são dados abaixo:
Dada a função void lcdcmd é usada para enviar o comando ao LCD
void lcdcmd (unsigned int ch) {int temp = 0x80; digitalWrite (D4, temp & ch << 3); digitalWrite (D5, temp & ch << 2); digitalWrite (D6, temp & ch << 1); digitalWrite (D7, temp & ch); digitalWrite (RS, LOW); digitalWrite (EN, HIGH);……………..
A função void write é usada para enviar dados ao LCD.
void write (unsigned int ch) {int temp = 0x80; digitalWrite (D4, temp & ch << 3); digitalWrite (D5, temp & ch << 2); digitalWrite (D6, temp & ch << 1); digitalWrite (D7, temp & ch); digitalWrite (RS, HIGH); digitalWrite (EN, HIGH);……………..
Dada a função void clear () é usada para limpar o LCD, void setCursor é usado para definir a posição do cursor e void print para enviar string ao LCD.
void clear () {lcdcmd (0x01); } void setCursor (int x, int y) {int set = 0; se (y == 0) conjunto = 128 + x; se (y == 1) conjunto = 192 + x; lcdcmd (conjunto); } void print (char * str) {while (* str) {write (* str); str ++; }}
A função void begin é usada para inicializar o LCD no modo de 4 bits.
void begin (int x, int y) {lcdcmd (0x02); lcdcmd (0x28); lcdcmd (0x06); lcdcmd (0x0e); lcdcmd (0x01); }
As funções void buzzer () e void wait () são usadas para emitir o bipe e para aguardar para colocar o cartão novamente. A função void serialbegin é usada para inicializar a comunicação serial.
void buzzer () {digitalWrite (buzz, HIGH); atraso (1000); digitalWrite (zumbido, BAIXO); } void wait () {digitalWrite (led5, LOW); atraso (3000); } void serialbegin (int baud) {if ((sp = serialOpen ("/ dev / ttyS0", baud)) <0) {clear (); imprimir ("Não foi possível abrir"); setCursor (0,1); imprimir ("porta serial"); }}
Na função void setup () iniciamos todos os GPIOs, LCD e UART serial.
void setup () {if (wiringPiSetup () == -1) {clear (); print ("Impossível iniciar"); setCursor (0,1); imprimir ("wiringPi"); } pinMode (led1, OUTPUT); pinMode (led2, OUTPUT);……………………
A função void get_card () fornecida é usada para obter dados do leitor RFID.
Na função void main () , mostramos algumas mensagens no LCD e comparamos os dados do tag com os dados predefinidos para validar o cartão com o código abaixo.
……………… if (strncmp (rfid, "0900711B6003", 12) == 0) {count1 ++; Claro(); print ("Attd. Registrado"); setCursor (0,1); imprimir ("Studnet 1"); digitalWrite (led1, HIGH); campainha (); digitalWrite (led1, LOW); esperar(); } else if (strncmp (rfid, "090070FE6EE9", 12) == 0) {count2 ++; Claro(); print ("Attd. Registrado"); setCursor (0,1);………………
Finalmente, a função void check_button () é usada para mostrar o comparecimento total ao pressionar o botão.
void check_button () {if (digitalRead (in1) == 0) {digitalWrite (led5, LOW); Claro(); setCursor (0,0); imprimir ("std1 std2 std3");……………..
Verifique o código completo para este sistema de atendimento Raspberry Pi abaixo.