This is an old revision of the document!


Card reader

Introducere

Scopul proiectului este realizarea unui cititor de carduri, un aparat care permite citirea unui card/cartele prin intermediul unui modul special pentru scrierea si citirea cardurilor. Reusirea citirii cardului va fi semnalata de aprinderea unui LED.

Descriere generală

Prin utilizarea Modulului RFID522 putem citi o cartela/card astfel incat se poate realiza “accesul” respectiv. Modulul va fi conectat la o placa Arduino UNO care va citi semnalul si in cazul in care accesul este permis, un LED se va aprinde.

Hardware Design

Lista componente:

  • Arduino UNO
  • Modul RFID522
  • Jumper-wires
  • LED

Software Design

Arduino IDE

Libraries:

  1. SPI.h - folosit pentru ca Arduino sa poata comunica cu modulul RFID
  2. MFRC522.h - folosit pentru a se putea introduce functii care interactioneaza cu modulul RFID

Cod Functia void setup() este folosita pentru a se initializa circuitul

Serial.begin(9600);
SPI.begin();
rfid.PCD_Init();
pinMode(LED_PIN, OUTPUT);

Functia void loop() este principala functie care verifica daca un nou card exista. Daca gaseste un card, determina tipul acestuia, ii citeste ID-ul, iar pe baza acestuia decide daca sa lucreze mai departe sau nu. Daca da, retine cardul si opreste algoritmul.

if (isNewCardPresent() && readCardSerial()) {
  MFRC522::PICC_Type piccType = getCardType();
  if (isMifareClassic(piccType)) {
    String cardID = getCardID();
    Serial.print("Card ID: ");
    Serial.println(cardID);
    if (cardID.equals("20:6B:18:83")) {
      turnOnLED();
    } else {
      turnOffLED();
    }
  } else {
    Serial.println("Your tag is not of type MIFARE Classic.");
  }
  haltCard();
  stopCrypto1();
}

Functiile bool isNewCardPresent()

return rfid.PICC_IsNewCardPresent();

bool readCardSerial()

return rfid.PICC_ReadCardSerial();

verifica daca exista un card si ii citeste numarul de serie.

Functiile MFRC522::PICC_Type getCardType()

return rfid.PICC_GetType(rfid.uid.sak);

bool isMifareClassic(MFRC522::PICC_Type piccType) {

return piccType == MFRC522::PICC_TYPE_MIFARE_MINI ||
       piccType == MFRC522::PICC_TYPE_MIFARE_1K ||
       piccType == MFRC522::PICC_TYPE_MIFARE_4K;

String getCardID()

String cardID = "";
for (byte i = 0; i < 4; i++) {
  cardID += (rfid.uid.uidByte[i] < 0x10 ? "0" : "");
  cardID += String(rfid.uid.uidByte[i], HEX);
  if (i != 3) {
    cardID += ":";
  }
}
cardID.toUpperCase();
return cardID;

citesc tipul cardului apeland functia PICC_GetType() din libraria MFRC522, verifica daca cardul e de tipul MIFARE Classic si citesc ID-ul cardului astfel incat sa concateneze IU (identificatorul unic) pentru ca la final ID-ul cardului sa fie de tip string.

Functiile void turnOnLED()

digitalWrite(LED_PIN, HIGH);

void turnOffLED()

digitalWrite(LED_PIN, LOW);

void haltCard()

rfid.PICC_HaltA();

void stopCrypto1()

rfid.PCD_StopCrypto1();

se ocupa de pornirea/oprirea LED-ului, cat si oprirea comunicarii dintre card si algoritm.

Rezultate Obţinute

Work in progress…

Concluzii

Download

Work in progress…

Jurnal

Work in progress…

Bibliografie/Resurse

Work in progress…

Export to PDF

pm/prj2023/tmiu/card_reader.1685398746.txt.gz · Last modified: 2023/05/30 01:19 by teodor.macoveiciuc
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0