En esta ocasion veremos cómo utilizar un modulo RFID con Arduino y cómo funciona. RFID es un sistema de identificación por radiofrecuencia (Radio Frecuency Identification).

Código

int led = 13;
byte data_1 = 0x00;
byte data_2 = 0x00;
byte data_3 = 0x00;
byte data_4 = 0x00;
byte data_5 = 0x00;
int val = 0;
void setup(){
// Start serial port 19200 bps
Serial.begin(19200);
pinMode(led, OUTPUT);
delay(500);
// Setting Auto Read Mode - EM4102 Decoded Mode - No password
// command: FF 01 09 87 01 03 02 00 10 20 30 40 37
Serial.print(0xFF,BYTE);
Serial.print(0x01,BYTE);
Serial.print(0x09,BYTE);
Serial.print(0x87,BYTE);
Serial.print(0x01,BYTE);
Serial.print(0x03,BYTE);
Serial.print(0x02,BYTE);
Serial.print(0x00,BYTE);
Serial.print(0x10,BYTE);
Serial.print(0x20,BYTE);
Serial.print(0x30,BYTE);
Serial.print(0x40,BYTE);
Serial.print(0x37,BYTE);
delay(500);
Serial.flush();
Serial.println();
Serial.println("RFID module started in Auto Read Mode");
}

void loop(){
val = Serial.read();
while (val != 0xff){
Serial.println("Waiting card");
val = Serial.read();
delay(1000); }
// Serial.read();
// we read ff
Serial.read();
// we read 01
Serial.read();
// we read 06
Serial.read();
// we read 10
data_1 = Serial.read();
// we read data 1
data_2 = Serial.read();
// we read data 2
data_3 = Serial.read();
// we read data 3
data_4 = Serial.read();
// we read data 4
data_5 = Serial.read();
// we read data 5
Serial.read();
// we read checksum
// Led blink
if(data_1 == 0x45 & data_2==0x00 & data_3==0x6A & data_4==0x56 & data_5==0x9E){
digitalWrite(led,HIGH);
delay(2000);
digitalWrite(led,LOW);
delay(500); }
// Printing the code of the card
Serial.println();
Serial.print("EM4100 card found - Code: ");
writeByte(data_1);
writeByte(data_2);
writeByte(data_3);
writeByte(data_4);
writeByte(data_5);
Serial.println();
Serial.println();
}
//Write a byte (hex) in ASCII
void writeByte(byte data){
int aux_1 = 0;
int aux_2 = 0;
aux_1=data/16;
aux_2=data%16;
if (aux_1<10){
Serial.print(aux_1 + 48,BYTE);
}
else{
Serial.print(aux_1+55,BYTE);
}
if (aux_2<10){
Serial.print(aux_2 + 48,BYTE);
}
else{
Serial.print(aux_2 + 55,BYTE);
}
Serial.print(" ");
}

Vídeo

Enrique Gómez

Ingeniero Electrónico Industrial y Automático, amante de la comunicación audiovisual y de la divulgación ingenieril y científica. Friki de Star Wars, cuenta más de lo que parece. Puedes saber más sobre mi y sobre mis trabajos en enrique.rinconingenieril.es

1
Leave a Reply

avatar
1 Hilos de comentarios
0 Respuestas a los hilos
0 Followers
 
Más recientes
Hilos más activos
1 Comentarios de autores
Vladimir Rojas Comentarios recientes de autores
  Suscribete  
Nuevos Antiguos Más votados
Notificame
Vladimir Rojas
Invitado
Vladimir Rojas

que tal amigo buenas quise copiar el codigo pero esta incompleto haber si puedes volver a subirlo saludos y sigue adelante

Cerrar menú