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(" "); }