Pesquisar

Wiegand-26 e Módulo AFsmart com ESP8266


É possível utilizar o módulo ESP8266 modelo AFSmart-ESP12F para ler leitores de tags RFID  usando o protocolo Wiegand-26, ou mesmo Wiegand-34
Iremos usar neste exemplo o de leitor de Cartão BDT-1508-MF que realiza leitura de cartões Mifare. Embora o  mesmo possua teclas para cadastro de senha/usuários, será realizado tão somente a leitura do cartão.
Imagem da leitora utilizada

O leitor RFID deve ser conectado a dois pinos GPIO no módulo AFSmart. No caso estamos usando: IO0 e IO4.
Já é sabido que o ESP8266 aceita somente nível de tensão 3V3 em todos seus pinos digitais, desta forma em muitas aplicações se faz necessário baixar ou elevar esta tensão para o projeto em desenvolvimento.
Neste caso isso se faz necessário,uma vez que as linhas de dados Data0 e Data1 trabalham em 5Vdc, desta forma se faz necessário baixar a tensão para 3V3 na leitura pelo ESP8266 para não danificar a entrada do ESp-12F do módulo Módulo AFSmart ESP-12F.
Para isso é utilizado um conversor de nível conforme imagem abaixo.
Conversor de nível
Não é necessário se preocupar quando da utilização do módulo Módulo AFSmart ESP-12F - isso porque no módulo em questão já esta projetado o conversor de nível para elevar a tensão de saída para 5V e baixar a mesma para 3V3 quando realizado  leitura pelo EPS8266.

Nesta aplicação estamos usando o conversor de nível acima para usar no Data0 e Data1 do protocolo Wiegand-26, mas o mesmo pode ser usado para as mais diversas comunicação, como  comunicação Serial, comunicação I2c onde se converte de 3v3 para 5Vdc e vice-versa, ou seja um circuito bastante útil para as mais diversas aplicações.
O ESP usa uma rotina de interrupção para decodificar o fluxo de bits Wiegand-26. O leitor de RFID enviará uma mensagem ao módulo AFSmart-ESP12F contendo o ID de etiqueta RFID exclusivo.
 Módulo AFSmart
Módulo AFSmart-ESP12F
Conexões:
Data0 do leitor conectado à IO0
Data1 do leitor conectado à IO4
Gnd do leitor conectado à GND fonte
Vcc do leitor conectado à 12Vdc fonte
HV (high Voltage) do módulo AFSmart conectado à 5Vdc

Para desenvolvimento desta aplicação foi utilizada a biblioteca Wiegand-26 se faz necessário baixa-la e instalar na pasta libraries da instalação de sua IDE Arduino

Neste exemplo esta sendo realizado a leitura de dois cartões/Tag Mifire, uma vez que o cartão seja o cadastrado, é acionado o rele1 do módulo que esta ligado à IO14 por 3 segundos para a abertura do portão por exemplo.

Esta é uma aplicação exemplo para uso local, basta realizar pequenas alterações para coloca-lo na rede ethernet, podendo realizar controle remoto do mesmo.

#include <Wiegand.h>

#define FALSE 0
#define TRUE  1
const int rele1 = 14;
long Usuario1 = 0x97F8A5;
long Usuario2 = 0x5C2FE5;

WIEGAND wg;

void setup() {

  Serial.begin(9600);

  pinMode ( rele1, OUTPUT );
  digitalWrite ( rele1, 1 );
  
  //Porta A 
  wg.D0PinA =0;   
  wg.D1PinA =4;   

  //Porta B
  //wg.D0PinB =18;  
 // wg.D1PinB =19;   

  //PortaC
//  wg.D0PinC =20;  
//  wg.D1PinC =21;  

 // Reader enable
wg.begin(TRUE, FALSE, FALSE);  // wg.begin(PortaA , PortaB, PortaC)

}

void loop() {
if(wg.available())
{
Serial.print("Wiegand HEX = ");
Serial.print(wg.getCode(),HEX);
Serial.print(", DECIMAL = ");
Serial.print(wg.getCode());
                Serial.print(", Porta= ");
                Serial.print(wg.getGateActive());
Serial.print(", Type W");
Serial.println(wg.getWiegandType());    

    //if the code matches to claires card
    if(wg.getCode() == Usuario1)
    {
      Serial.println("Usuario1\n");
      //open the door
      digitalWrite(14, LOW);
      //turn on her pathway lights
      //digitalWrite(5, HIGH);
      //wait 2 seconds before lock the door
      delay(3000);
      digitalWrite(14, HIGH);
      //wait 1 minute before turning off the lights
      //delay(60000);

    }

    if(wg.getCode() == Usuario2)
    {
      Serial.println("Usuario2\n");
      //open the door
      digitalWrite(14, LOW);
      //turn on her pathway lights
      //digitalWrite(5, HIGH);
      //wait 2 seconds before lock the door
      delay(3000);
      digitalWrite(14, HIGH);
      //wait 1 minute before turning off the lights
      //delay(60000);

    }
   
    }
}



Nenhum comentário:

Postar um comentário