Arduino si RFID

In acest articol vom folosi autentificarea cu ajutorul tagurilor RFID impreuna cu Arduino. 

Pentru acest lucru vom folosi modulul RC522. Informatiile de la care am plecat au fost postate pe acest site.

Acest modul se alimenteaza la 3,3V (mare atentie la acest aspect!).

Conexiunea la Arduino se face in felul urmator:

RFID          Arduino Uno     Arduino Mega

RST    -----    9               -   5

MISO  -----   12              -   50

MOSI  -----   11              -   51

SCK    -----   13              -   52

SDA    -----   10              -   53

Pentru a folosi acest modul vom folosi libraria MFRC522, aceasta se poate descarca de aici.

Poze cu modulul si tagurile RFID folosite sunt mai jos:

Pentru a identifica tagurile va trebui sa folosim (dupa adaugarea librariei de mai sus) sketch-ul DumpInfo. Acest se poate accesa prin meniul Fisier > Exemple > MFRC522 > DumpInfo.

Efectiv pe noi ne intereseaza doar UID-ul tagului. Pe baza acestui UID noi vom face selectia nivelului de acces dorit.

In sketch-ul folosit in acest articol avem 3 taguri RFID cu 3 niveluri de acces: administrator, utilizator si tag nesetat. La citirea fiecarui tag se va afisa pe display-ul LCD nivelul de acces acceptat si, in functie de nivelul de acces, un led RGB va afisa starea printr-o culoare distincta.

Display-ul LCD este conectat conform schemei din acest articol cu o singura modificare minora: pinul D4 al displayului a fost mutat in modulul Arduino de la D5 la D7.

La pinii D22, D23 si D24 (la Arduino Mega folosit de mine dar se pot folosi si alti pini fara probleme) am conectat cele 3 leduri (sau, in cazul de fata, un led RGB).

Aceste leduri (sau led RGB) afiseaza culoarea rosie in cazul unui tag neacceptat, culoarea albastra in cazul unui tag de utilizator sau culoarea verde in cazul unui tag de administrare.

Sketch-ul folosit este mai jos:

#include <SPI.h>
#include <MFRC522.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 7, 4, 3, 2);

#define RST_PIN         5
#define SS_PIN          53
MFRC522 mfrc522(SS_PIN, RST_PIN);
String tip = "";
int ledAlbastru = 22;
int ledVerde = 23;
int ledRosu = 24;

void setup() {
   pinMode(ledAlbastru, OUTPUT);
   pinMode(ledVerde, OUTPUT);
   pinMode(ledRosu, OUTPUT);
   digitalWrite(ledAlbastru, LOW);
   digitalWrite(ledVerde, LOW);
   digitalWrite(ledRosu, LOW);
  SPI.begin();
  mfrc522.PCD_Init();
  lcd.begin(16,4); 
  lcd.setCursor ( 0, 0 ); 
  lcd.print (" www.");  
  lcd.setCursor (0, 1 ); 
  lcd.print ("electronicstore");
  lcd.setCursor (0, 2 );
  lcd.print ("            .ro");
  lcd.setCursor (0, 3 );
  lcd.print ("****************");
  delay (2000); 
  lcd.clear(); 
  lcd.setCursor ( 0, 0 ); 
  lcd.print ("Autentificare");  
  lcd.setCursor (0, 1 ); 
  lcd.print ("cu ajutorul");
  lcd.setCursor (0, 2 );
  lcd.print ("tagurilor RFID");
  lcd.setCursor (0, 3 );
  lcd.print ("****************");
  delay (2000); 
  lcd.clear();
}

void loop() {
  //tip = "                ";
  lcd.setCursor ( 0, 0 ); 
  lcd.print ("Autentifica-te");   
  if ( ! mfrc522.PICC_IsNewCardPresent()) 
  { return; }
  if ( ! mfrc522.PICC_ReadCardSerial()) 
  { return; }
  String content= "";
  byte letter;
  for (byte i = 0; i < mfrc522.uid.size; i++) 
  {
     content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
     content.concat(String(mfrc522.uid.uidByte[i], HEX));
  }
  content.toUpperCase();
  if (content.substring(1) == "15 9C 04 6D") {
    //cardul este de administrare
    tip = "Administrator   ";
    digitalWrite(ledVerde, HIGH);
  } else if (content.substring(1) == "D6 EC C4 32") {
    //cardul este doar de acces
    tip = "Utilizator      ";
    digitalWrite(ledAlbastru, HIGH);
  } else {
    //cardul nu este acceptat
    tip = "Acces interzis!";
    digitalWrite(ledRosu, HIGH);
  }

   lcd.setCursor (0, 1 );
   lcd.print(tip);
   delay(1500);
   lcd.clear();
   digitalWrite(ledAlbastru, LOW);
   digitalWrite(ledVerde, LOW);
   digitalWrite(ledRosu, LOW);
}

 Un filmulet cu montajul poate fi vazut mai jos:

Nu sunt comentarii in “Arduino si RFID”

Lasa un comentariu

Raspuns lui Some User

Autentificare