Índice:
- Etapa 1: Obtenha os bens
- Etapa 2: conectar as peças
- Etapa 3: Escreva o Código
- Etapa 4: Código e despedida
Vídeo: Leitor RFID AVR / Arduino com código UART em C: 4 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:40
RFID é a mania, encontrada em todos os lugares - de sistemas de inventário a sistemas de identificação de crachás. Se você já foi a uma loja de departamentos e passou por aquelas coisas que parecem detectores de metal nos pontos de entrada / saída, então você viu RFID. Existem vários lugares para encontrar boas informações sobre a configuração de RFID, e este instrutível concentra-se na instalação do leitor Parallax RFID (Serial TTL) em um AVR, com ênfase no código C necessário para ler a entrada serial. O código está em C e não usa nenhuma biblioteca externa. Na verdade, ele fala 2400 baud diretamente sem o uso de um UART, sincronizando com a taxa de baud do leitor RFID e lendo o pino digital ao qual está conectado. Animado? Eu também.
Etapa 1: Obtenha os bens
Você precisará da seguinte lista de peças:
- Leitor RFID (Parallax # 28140 $ 39,99)
- Tag RFID (Parallax # 32397 $ 0,99)
- AVR ou clone do Arduino (se você usar um AVR padrão, também precisará de um capacitor max232, 5 x 1uF e um conector DE9)
- Placa de ensaio sem solda
Opcional
- Cabeçalho de 4 posições
- Arame
(e o max232 etc. para comunicação das informações do tag) Você também pode conectar sua tela LCD favorita em vez de enviar dados do tag via RS232.
Etapa 2: conectar as peças
O lado do hardware é muito fácil. Em vez de colocar meu leitor RFID diretamente na placa de ensaio, optei por fazer um cabo rápido para poder mover o leitor RFID um pouco melhor. Para isso, cortei 4 posições de uma régua de encaixe fêmea que eu tinha deitado e soldada em três fios. Fita elétrica completou o conector do gueto. O leitor RFID tem 4 conexões:
- Vcc
- PERMITIR
- FORA
- Gnd
Como você provavelmente já deve ter adivinhado, conecte Vcc a + 5V e Gnd ao aterramento. Como o leitor RFID consome muita energia, você pode bater o pino ENABLE para desligá-lo e ligá-lo em vários intervalos. Eu simplesmente escolhi continuar. Como ele está invertido, você o puxa para BAIXO para ativá-lo. Como alternativa, você pode conectá-lo ao aterramento. Eu o conectei ao PIND3 para me dar opções de habilitar / desabilitar se eu decidir. O pino OUT é para onde o leitor envia seus dados seriais depois de ler uma tag. Eu o conectei ao PIND2. Note, no Universo Parallax, vermelho significa ir. Ou seja, um LED verde significa que a unidade está inativa e ociosa, enquanto um LED vermelho significa que a unidade está ativa. * encolher os ombros * Vai entender.
Etapa 3: Escreva o Código
Para ler os dados do leitor RFID, você precisa saber quando uma etiqueta foi enviada, retirar os dados da porta serial e enviá-los para algum lugar.
Formato de dados do leitor RFID
O leitor Parallax RFID envia dados em um ritmo glacial fixo de 2.400 baud. Uma etiqueta RFID tem 10 bytes. A fim de permitir a detecção / correção de erros, uma vez que o leitor pode ser desligado do ruído aleatório, o RFID de 10 bytes é delimitado por uma sentinela de início e parada. A sentinela de início é alimentação de linha (0x0A) e a sentinela de parada é retorno de carro (0x0D). Se parece com isso:
[Iniciar o Sentinel | Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 | Byte 8 | Byte 9 | Byte 10 | Stop Sentinel]Estas são as três etapas principais.
Saiba quando uma tag foi enviada
Usei uma interrupção de alteração de pino no AVR que notifica o firmware de que ocorreu uma alteração em um pino monitorado. Configurar o AVR para isso é fácil e requer definir o sinalizador, dizer ao MCU qual pino você deseja monitorar e definir o bit de interrupção global. Configurar PCINT
BSET (PCICR, PCIE2); // registro de controle de interrupção de alteração de pino pcie2 BSET (PCMSK2, PCINT18); // habilita a interrupção de mudança de pino para PCINT18 (PD2) BSET (SREG, 7); // Definir SREG I-bitEscreva sua rotina de serviço de interrupção. Você deseja manter seu ISR curto para que em meu vetor de interrupção eu leia o byte inteiro, bit a bit, e armazene o byte em uma matriz global de caracteres voláteis. Eu faço o seguinte em cada interrupção:
- Verifique se estou começando
- Centralize o tempo no pulso do meio a 2400 baud (a velocidade do leitor RFID)
- Pule o bit de início e pare no meio do próximo bit
- Leia cada bit em um inteiro sem sinal
- Quando eu tiver 8 bits, coloque o byte em uma matriz de caracteres
- Quando eu coletar 12 bytes, informe ao MCU que a tag foi lida para detecção de erros.
Eu modifiquei o código SoftSerial de Mikal Hart que modificou o código de David Mellis para os atrasos determinados experimentalmente nas rotinas seriais.
Analisar saída RS232
A rotina PCINT contém o código para ler a saída RS232 do leitor RFID. Quando obtenho 12 bytes (RFID de 10 bytes mais sentinelas), defino bDataReady como 1 e deixo o loop principal processar os dados e exibi-los.
// este é o manipulador de interrupçãoISR (PCINT2_vect) {if (BCHK (PIND, RFID_IN)) // O bit de início vai para baixo return; uint8_t bit = 0; TunedDelay (CENTER_DELAY); // Centralizar no bit de início para (uint8_t x = 0; x <8; x ++) {TunedDelay (INTRABIT_DELAY); // pula um pouco, irmão… if (BCHK (PIND, RFID_IN)) BSET (bit, x); else BCLR (bit, x); } TunedDelay (INTRABIT_DELAY); // pula o bit de parada RFID_tag [rxIdx] = bit; ++ rxIdx; if (rxIdx == 12) bDataReady = 1;}
Exibir sua tag
No main (), durante o loop for (ever), eu verifico se bDataReady foi definido, sinalizando que toda a estrutura RFID foi enviada. Em seguida, verifico se é uma tag válida (ou seja, os caracteres de início e parada são 0x0A e 0x0D, respectivamente) e, em caso afirmativo, envio-a pela minha conexão RS232.
para (;;) {if (bDataReady) {#ifdef _DEBUG_ USART_tx_S ("Byte inicial:"); USART_tx_S (itoa (RFID_tag [0], & ibuff [0], 16)); ibuff [0] = 0; ibuff [1] = 0; USART_tx_S ("\ nParar byte:"); USART_tx_S (itoa (RFID_tag [11], & ibuff [0], 16)); # endif if (ValidTag ()) {USART_tx_S ("\ nTag RFID:"); para (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; }}
Etapa 4: Código e despedida
Esta página contém um arquivo zip com o código relevante. Foi escrito em AVR Studio 4.16. Se você usar o bloco de notas do programador, eclipse ou vi (ou qualquer outra coisa), você precisará copiar um Makefile confiável para o diretório e adicionar esses arquivos à linha de origem. Observe também que o tempo para a seção de leitura serial é baseado em um MCU de 16 MHz. Se você estiver operando em uma frequência de clock diferente, precisará determinar experimentalmente os atrasos sintonizados para centralizar nos pulsos de taxa de transmissão. Espero que este instrutivo tenha ajudado de alguma forma. Se você tiver alguma sugestão sobre como pode ser melhorado, não hesite em me avisar!
Recomendado:
Leitor Arduino RFID com display TFT: 7 etapas
Leitor RFID Arduino com display TFT: mostrarei a você como projetar um leitor RFID de boa aparência com display TFT e para montagem na parede. É muito fácil criar um leitor RFID de boa aparência com saída TFT para montagem em parede com um Arduino MKR de sua escolha e nosso Ar
Demonstração 4x4 de um tabuleiro de xadrez eletrônico / Com Arduino Mega + Leitor RFID + Sensores de efeito Hall: 7 etapas
Demonstração 4x4 de um tabuleiro de xadrez eletrônico / Com Arduino Mega + Leitor RFID + Sensores de efeito Hall: Olá, fabricantes, sou Tahir Miriyev, graduado em 2018 pela Middle East Technical University, Ancara / Turquia. Eu me formei em Matemática Aplicada, mas sempre adorei fazer coisas, especialmente quando envolvia algum trabalho manual com eletrônica, design e programação
Leitor Arduino RFID UHF: 10 etapas
Leitor UHF Arduino RFID: O objetivo deste Instructable é fornecer um exemplo fácil de entender de uma interface de microcontrolador com um leitor RFID UHF. O leitor que estamos usando é o Thinkify TR-265. A demonstração consiste em três tags UHF, cada uma com um ID exclusivo
Use o leitor RFID MFRC522 com Arduino: 5 etapas
Use o leitor RFID MFRC522 com Arduino: Olá! Eu vou te ensinar como fazer um scanner legal e fácil de fazer cartão-chave ou chaveiro! Se você tem um módulo RFID MFRC522, leds, resistores, fios, um arduino uno, uma placa de ensaio e uma bateria de 9v (opcional), então você está pronto para fazer um
Leitor de código de barras Raspberry Pi Talking: 12 etapas
Raspberry Pi Talking Barcode Reader: Fig.1 Barcode Scanner de DX.comOverviewUpdate: Um breve vídeo de demonstração está disponível https://youtu.be/b905MLfGTcMMinha mãe não consegue mais ler rótulos em itens de mercearia, então eu procurei soluções. Depois de ver aqueles leitores de código de barras para cegos