RC522 RFID NFC Modülü Kullanımı
RFID, Radyo frekansı tanımlama anlamına gelir ve bir tanımlama mekanizması gerektiren birçok uygulama için kullanılabilir. Bu eğitimde, RFID-RC522 modülünün Arduino Uno ile nasıl kullanılacağı gösterilmektedir. RFID-RC522 modülü, yakın mesafeden RFID etiketlerini okuyabilen bir RFID okuyucudur. Bir RFID etiketinin okunabilmesi için okuyucu ve etiketin aynı frekansa sahip olması gerekir. RFID-RC522 modülü yalnızca 13.56 MHz'de Yüksek frekanslı etiketleri okur.
RFID-RC522 modülünü göstermek için, kullanıcıyı bir RFID etiketine göre tanımlayan basit bir uygulama programlanmıştır.
| RFID-RC522 Pimi | Arduino Uno Pimi |
|---|---|
| SDA | 10 |
| SCK | 13 |
| MOSI | 11 |
| MİSO | 12 |
| IRQ | KULLANILMAMIŞ |
| GND | GND |
| RST | 9 |
| 3.3V | 3.3V |
Kod, şurada bulunabilen mevcut bir RFID kitaplığını kullanır: https://github.com/miguelbalboa/rfid. Arduino IDE kullanıyorsanız, “Sketch->Include Library->Manage Libraries”e tıklayarak kütüphane kolayca kurulabilir. Ardından, “RFID” aratın ve “MFRC522 by GithubCommunity” başlıklı bir giriş bulacaksınız. Böyle bir giriş bulamazsanız, daha fazla yardım için kütüphanenin resmi web sitesini ziyaret etmenizi tavsiye ederim. RFID okuyucuyu çalıştırmak için, okuyucunun yanı sıra kitaplığın kendisini, bir SPI bağlantısını da kurmanız gerekir. Neyse ki, kitaplık, etiketleri okumak için çok kullanışlı iki kullanışlı işlev sunar: İlk işlev, bir RFID etiketinin/kartının mevcut olup olmadığını algılamayı sağlar. İkinci işlev, RFID etiket kimliğini okur. Aşağıdaki kodda, etiket boyunca yineleme yapmak için bir for döngüsü kullanılır. Her yinelemede, tek bir bayt okunur ve onaltılık değer (00..FF) olarak yazdırılır.
// (c) Michael Schoeffler 2014, http://www.mschoeffler.de
#include "SPI.h" // SPI library
#include "MFRC522.h" // RFID library (https://github.com/miguelbalboa/rfid)
const int pinRST = 9;
const int pinSDA = 10;
MFRC522 mfrc522(pinSDA, pinRST); // Set up mfrc522 on the Arduino
void setup() {
SPI.begin(); // open SPI connection
mfrc522.PCD_Init(); // Initialize Proximity Coupling Device (PCD)
Serial.begin(9600); // open serial connection
}
void loop() {
if (mfrc522.PICC_IsNewCardPresent()) { // (true, if RFID tag/card is present ) PICC = Proximity Integrated Circuit Card
if(mfrc522.PICC_ReadCardSerial()) { // true, if RFID tag/card was read
Serial.print("RFID TAG ID:");
for (byte i = 0; i < mfrc522.uid.size; ++i) { // read id (in parts)
Serial.print(mfrc522.uid.uidByte[i], HEX); // print id as hex values
Serial.print(" "); // add space between hex blocks to increase readability
}
Serial.println(); // Print out of id is complete.
}
}
}RFID, radyo frekansı tanımlaması anlamına gelir. RFID, kısa mesafelerde veri aktarmak için elektromanyetik alanlar kullanır. RFID, insanları tanımlamak, işlem yapmak vb. için kullanışlıdır.
Bir kapıyı açmak için bir RFID sistemi kullanabilirsiniz. Örneğin, sadece kartında doğru bilgiler bulunan kişinin giriş yapmasına izin verilir. Bir RFID sistemi şunları kullanır:
- Tanımlanacak nesneye yapıştırılan etiketler , bu örnekte bir anahtarlık ve bir elektromanyetik kartımız var. Her etiketin kendi kimliği (UID) vardır.
- Etikete bir sinyal gönderen ve yanıtını okuyan iki yönlü telsiz verici-alıcı, okuyucu .
Az kod ile birden fazla kart ekleme
/*Az kod ile birden fazla
kart ekleme */
#include <SPI.h>
#include <MFRC522.h>
// ne kadar kaç tane kart varsa o kadar kart
sayısını yazıyoruz
#define kartSayisi 6
MFRC522 rfid(10, 9);
// aynı şekilde eklediğimiz
kartların uid sini yazıyoruzburada hex veya dec yazmamız hiç farketmiyor.
byte Kartlar[kartSayisi][4] = {
{0x02, 0x58, 0xAE, 0x34},// hhh kart
{0xA7, 0xCE, 0xDB, 0x60},// hhh anahtarlık
{228, 112, 48, 251}, //
Erdem ogrenci kartı
{84, 236, 247, 21}, //
Mert ogrenci kartı
{0xD3, 0x71, 0xEB, 0x14}, //ugurkan
kart
{0xC3, 0x26, 0x37, 0x16} //ugurkan
anahtarlık
};
void ekranaYazdir() {
Serial.print("Kimlik Numarasi: ");
for (int sayac = 0; sayac < 4; sayac++) {
Serial.print(rfid.uid.uidByte[sayac]);
Serial.print(" ");
}
Serial.println("\n");
}
bool kartKontrol(byte* kart)
{
for (auto i = 0; i < kartSayisi; ++i) {
if (Kartlar[i][0] == kart[0] &&
Kartlar[i][1] == kart[1] &&
Kartlar[i][2] == kart[2] &&
Kartlar[i][3] == kart[3])
{
return true;
}
} return false;
}
void setup() {
Serial.begin(9600);
SPI.begin();
rfid.PCD_Init();
}
void loop() {
if ( ! rfid.PICC_IsNewCardPresent()) return;
if ( ! rfid.PICC_ReadCardSerial()) return;
if (kartKontrol(rfid.uid.uidByte)) {
Serial.println("Yetkili Kart");
ekranaYazdir();
delay(1000);
}
else {
Serial.println("Yetkisiz Kart");
ekranaYazdir();
delay(1000);
}
rfid.PICC_HaltA();
}
Etiketler: Arduino RC522 RFID


0 Yorum:
Yorum Gönder
Kaydol: Kayıt Yorumları [Atom]
<< Ana Sayfa