RFID olvasó LCD kijelzővel

## Leírás

Egyszerű RFID kapcsolás. A kimenet, ami az RFID sorozatszám, a soros vonalon, és az LCD kijelzőn is megjelenik.

## Kapcsolás

Ami kell hozzá:

- Arduino

- RFID-RC522 modul

- LCD modul

- Dugdosós panel, vezetékek

## Használat

Az olvasóhoz érintve a mifare kártyát, az LCD kijelző második sorában megjelenik a kód hexadecimális formában.

A kód formátuma:

1.-2. karakter mindíg nulla

3.-6. karakter Tag kód

7.-8. karakter ellenőrző összeg

## Példa

A példába az eredeti RFID bekötése ütközött az általam használt általános LCD bekötéssel, ezért áttettem a RESET lábat az Arduino D5 ről a D2-es lábára. A AddicoreRFID.h rutinban a RESET konfigurációban is javítani kell

```
// 13.56MHz RFID tag olvasása, RC522 modullal.

```

```
// Soros kimeneten olvasható a TAG kódja, vagy ha az ellenőrző összeg nem egyezik, hibaüzenet.

```

```
// Kimenet az LCD

```

```
#include "LiquidCrystal.h"                //LCD függvénykönyvtár betöltése

```

```
LiquidCrystal lcd(4, 5, 6, 7, 8, 9);      //LCD beállítása a D4-D9 digitális kimeneten

```

```
const int ContrastPin = 3;                //A 3-as lábon a kontraszt szabályozása

```

```
int Contrast = 60;                        //Alapértelmezett kontraszt érték

```

```
//RFID  Bekötés

```

```
//    RC522  Arduino

```

```
// 1. SDA    D10

```

```
// 2. SCK    D13

```

```
// 3. MOSI   D11

```

```
// 4. MISO   D12

```

```
// 5. IRQ    ---

```

```
// 6. GND    GND

```

```
// 7. RST    D2                          //Eredetileg 5!!!Az AddicoreRFID könyvtárban is javítani kell, mert ütközik az LCD beállításokkal

```

```
// 8. 3.3V   3.3V

```

```
#include <AddicoreRFID.h>

```

```
#include <SPI.h>

```

```
#define	uchar	unsigned char

```

```
#define	uint	unsigned int

```

```
//uchar fifobytes;

```

```
//uchar fifoValue;

```

```
AddicoreRFID myRFID;                        // AddicoreRFID objektum létrehozása az RFID modul kezelésére

```

```
//const int chipSelectPin = 10;               // RFID kiválaszás a D10 láb

```

```
//const int NRSTPD = 2;

```

```
int hb;

```

```
int lb;

```

```
static const char* digits = "0123456789ABCDEF";

```

```
char* strki="";

```

```
#define MAX_LEN 16

```

```
void setup() {

```

```
analogWrite(ContrastPin,Contrast);      //Kontraszt beállítása. A kimenet analóg PWM

```

```
lcd.begin(16, 2);                       //LCD inicializálása 16 karakter, 2 sor

```

```
lcd.setCursor(0,0);                     //Kurzor a bal felső sarokban

```

```
lcd.print("RFID olvaso EBI");           //Szöveg kiiratása 0.oszlop, 0.sor

```

```
Serial.begin(9600);                     // Soros vonal megnyitása 9600 Baud sebességgel

```

```
myRFID.AddicoreRFID_Init();

```

```
}

```

```
void loop()

```

```
{

```

```
uchar i, tmp, checksum1;

```

```
uchar status;

```

```
uchar str[MAX_LEN];

```

```
str[1] = 0x4400;

```

```
status = myRFID.AddicoreRFID_Request(PICC_REQIDL, str); //Tag keresése, visszaadja atípusát

```

```
status = myRFID.AddicoreRFID_Anticoll(str);             //Anti-collizio, visszaadja a 4 bájt kódot

```

```
myRFID.AddicoreRFID_Halt();		                // Hibernálás

```

```
if (status == MI_OK)

```

```
{

```

```
checksum1 = str[0] ^ str[1] ^ str[2] ^ str[3];          //Checksum - Ellenőrző összeg számítása

```

```
if (str[4] != checksum1)                                //Checksum - Ellenőrző összeg

```

```
{

```

```
Serial.print("Ellenőrző összeg hibás! Olvasott: ");

```

```
Serial.print(str[4]);

```

```
Serial.print(" , számított: ");

```

```
Serial.println(checksum1);

```

```
Serial.println();

```

```
}

```

```
lcd.setCursor(0,1);

```

```
//Bevezető nulla

```

```
Serial.print("0");lcd.print("0");

```

```
Serial.print("0");lcd.print("0");

```

```
hb=str[0]/16;

```

```
Serial.print(digits[hb]);lcd.print(digits[hb]);

```

```
lb=str[0]-(hb*16);

```

```
Serial.print(digits[lb]);lcd.print(digits[lb]);

```

```
hb=str[1]/16;

```

```
Serial.print(digits[hb]);lcd.print(digits[hb]);

```

```
lb=str[1]-(hb*16);

```

```
Serial.print(digits[lb]);lcd.print(digits[lb]);

```

```
hb=str[2]/16;

```

```
Serial.print(digits[hb]);lcd.print(digits[hb]);

```

```
lb=str[2]-(hb*16);

```

```
Serial.print(digits[lb]);lcd.print(digits[lb]);

```

```
hb=str[3]/16;

```

```
Serial.print(digits[hb]);lcd.print(digits[hb]);

```

```
lb=str[3]-(hb*16);

```

```
Serial.print(digits[lb]);lcd.print(digits[lb]);

```

```
//checksum

```

```
hb=checksum1/16;

```

```
Serial.print(digits[hb]);lcd.print(digits[hb]);

```

```
lb=checksum1-(hb*16);

```

```
Serial.print(digits[lb]);lcd.print(digits[lb]);

```

```
delay(1000);                         // Következő olvasás 1 másodperc után

```

```
}

```

```
}

```