semaver
New member
RFID'ler, örneğin bir kapıya erişime erişim için nesneleri veya kişileri kaydeden birçok uygulamada kullanılabilir. Tabii ki, artık projelerinize RFID etiketleri ve RFID okuyucuları olan bir ekonomik donanım var.
IoT teriminin yaratıcısı (Nesnelerin İnterneti) Kevin Ashton, Massachusetts Teknoloji Enstitüsü'nün (ile) Otomatik Kimlik Merkezinde çalıştı. Orada RFID için uluslararası bir standart başlattı. Bu nedenle Nesnelerin İnterneti ile RFID teknolojisi arasında tarihsel bir referans vardır. Bu sayıda, birbirine ait olan şey birlikte büyümelidir.
Ama tam olarak ne için ve ne için? Bu konuya sanal ansiklopedide göz atmak istiyorum.
RFID (İngilizce Radiff kimliği), Wikipedia'ya göre:
” […] Otomatik ve temas kimliği ve yerelleştirilmiş nesneler ve radyo dalgaları olan canlılar için gönderen sistemleri için bir teknoloji.
Bir RFID sistemi, nesnede veya canlı varlıkta bulunan ve karakteristik bir kod ve bu tanımlayıcıyı okumak için bir okuyucu içeren bir transponderden (hatta Funkitta olarak adlandırılır) oluşur.
RFID transponder, pirinç tanesi kadar küçük olabilir ve örneğin evcil hayvanlarda veya insanda implante edilebilir. ”
Oklahoma Üniversitesi'nde RFID ile hayvan gezilerine zulüm
(Resim: www.animalmigration.org)
“Buna ek olarak, polimerlerden istikrarlı devrelerin özel bir baskı süreci kullanılarak RFID transponder üretme olasılığı vardır. Bu teknolojinin avantajları, okumanın gizli okumasından (örneğin Almanya'da kimlik kartında) ve son zamanlarda Almanya'da tanıtılan) kombinasyonundan kaynaklanmaktadır (bazen merkezi alanda).
Birleştirme, okuyucunun düşük aralıklı veya yüksek frekanslı radyo dalgalarında üretilen alternatif manyetik alanlar tarafından yapılır. Bu sadece verileri iletir, aynı zamanda transponder sağlar. Güç kaynağı ile aktif olan transponderler daha büyük aralıklar elde etmek için kullanılır, ancak daha yüksek maliyetlerle ilişkilidir. […]”
Şimdi günlük yaşamın her yerinde RFID ile tanışıyoruz. Örneğin, makam için malların taranması sırasında veya NFC terminalleri üzerinden ödeme yaptığınızda. Günümüzde, donanım ve RFID kartları o kadar ucuz ki, kullanımları üreticinin dünyasında, yani kendi projeleri için de ödeme yapıyor.
RFID-RC522 SET
Deneyiniz için cazip bir fiyat RFID-RC522 araştırma süresi altında çalışır. Donanım modülü, bir S50 RFID/NFC S50 kartı, anahtar olarak mavi bir transproner ve eBay'de sadece 5 Euro için eklenti çizgileri (açılı, düz) içeren bu set elde edilebilir.
Bir RFID-RC522 seti, bir okuyucu, iki RFID etiketi ve kaynak için eklenti şeritlerinden oluşur
SPI veri yolu ve yaklaşık 6 cm x 4 cm ile bağlanması gereken modül, bir besleme voltajı olarak 3.3 V gerektirir, 10 ila 30 arasında çalışma akımlarını tüketir, ancak 80 µA'lık bir disfolizmaya sahiptir. İletim frekansı 13.56 MHz'dir.
RFID-RC522 ve pimi ataması
(Resim: https://home.ctw.utwente.nl)
RFID oynatıcı ile diğer/RFID kart türlerini kullanmak istiyorsanız, S50, S70, Ultralight, Profesyoneller ve Desfire türleri arasında bir seçeneğiniz vardır.
Proje
Her zaman olduğu gibi, uygulama ön planda olmalıdır. Kapının bir açılış sistemini simüle etmekle ilgilidir. Kapanış mekanizmasının rolü hizmetçi bir motor varsayar. Kırmızı ve yeşil bir LED ilgili durumu görüntüler. Başlangıçta kapı kapalı ve kırmızı LED yanıyor. Eskiz, RFID Günü aracılığıyla insanların kabul edilmesini bekliyor. Devre yakınınızdaki bir RFID günü algılarsa, değerini okuyun.
Testteki devre
Operasyon sırasında teşhis masrafları
Materyal faturası
Burada açıklanan projeyi gerçekleştirmek için aşağıdaki materyal gereklidir:
Arduino mega için aşağıdaki bağlantılar gereklidir.
Arduino Mega RFID-RC522 (RFID-Leser)
GND GND
5 RST
3,3 V 3,3 V
53 SDA
52 SCK
51 MOSI
50 MISO
Birleşmiş Milletler ile devreyi değiştirmeli ve SDA'yı dijital pin 10'a koymalısınız, 13 üzerinden SCK, 11 üzerinden MOSI ve 12'de MISO. Buna ek olarak, RFID okuyucusunun birincisi Birleşmiş Milletler'in dijital pim 9'una bağlanır:
Arduino Uno RFID-RC522 (RFID-Leser)
GND GND
9 RST
3,3 V 3,3 V
10 SDA
13 SCK
11 MOSI
12 MISO
devre
Devreye aşağıdaki bağlantılar eklenir. Mega Arduino için bağlantılar gösterilmiştir. Birleşmiş Milletler ile diğer dijital çıktıları kullanıyor.
Mega, RFID-RC522, Servo Motoru, LED'leri ile devre
Genellikle RFID MFRC522 okuyucuları, Arduino kartının 3.3 V voltajı ile kolayca yönetilebilirken, aynı zamanda modülün SPI veriyolunun bağlantıları doğrudan Arduino kartın üzerindedir. Güvenli tarafta olmak istiyorsanız, bildiğimiz gibi, örneğin Bluetooth devrelerinde mantıklı bir dönüştürücü kullanın. Bu arada, MFRC522, yongaların üreticisi olan NXP yarı iletkenlerinin MIE ürünlerinin ailesi için kısaltmadır. Bu Wikipedia sayfasında daha fazla bilgi de bulabilirsiniz. Bu bağlantıdan bir İngilizce -dil veri kartı var.
kütüphane
Miguel Balboa bu amaç için bu GitHub sayfasında bulabileceğiniz bir kütüphane sunduğundan, kartı MFRC522 çipinin kendisiyle programlamaya değmez. Kütüphane aşağıdaki bağlantıdan indirilir. Sonra büyütülmüş kütüphane (dizin RFID-Master) Arduino fikrinde içe aktarın.
Fikirde de gezin Eskiz | Kütüphaneyi ekleyin | .Zip kitaplığını ekleyin Ve kütüphanenin yoluna girin.
İlk Eskiz
Her şeyden önce, ilk taslak RFID etiket kimliklerine izin vermelidir. Kullanıcı okuma formuna RFID kartı ile yaklaşırsa, program Sürekli Döngü ()-kimliklerini yükler.
Arduino mega yerine Birleşmiş Milletler gibi farklı bir masa kullanıyorsanız, eskizdeki bazı pimi de değiştirmelisiniz. Yukarıdaki açıklamalarda zaten bilgi vardı.
/////////////////////////////////////////////////
//
// Lesen und Ausgeben von RFID-Tags
// auf Basis von MFRC422-Reader
// (c) Michael Stal, 2016
//
//////////////////////////////////////////////////
#include <SPI.h> // Import SPI-Bibiothek
#include <MFRC522.h> // Import RFID-Bibiothek
#include <Servo.h> // Import Servo-Bibliothek
///////// Variablen MFRC522 //////////////////////
const int SDAPIN = 53; // Uno => Pin 10
const int RSTPIN = 9; // Uno => Pin 9
MFRC522 rfidReader(SDAPIN, RSTPIN); // RFID-Empfänger
//////////////////////////////////////////////////
//
// setup()
// Initialisieren von SPI,
// seriellem Monitor,
// RFID-Leser
//
//////////////////////////////////////////////////
void setup()
{
Serial.begin(9600); // Serielle Verbindung
SPI.begin(); // SPI-Verbindung aufbauen
rfidReader.PCD_Init(); // RFID-Reader initial.
}
//////////////////////////////////////////////////
//
// loop()
// Warten auf RFID-Erkennung
//
//////////////////////////////////////////////////
void loop()
{
// Karte erkannt und gelesen
if (rfidReader.PICC_IsNewCardPresent() && rfidReader.PICC_ReadCardSerial()) {
Serial.print("Erkanntes RFID-TAG ist => ");
// Bytes der ID lesen und ausgeben
Serial.print("/");
for (byte i = 0; i < rfidReader.uid.size; i++) {
Serial.print(rfidReader.uid.uidByte, HEX);
Serial.print("/");
}
Serial.println();
}
}
Çıktı olarak, seri monitörde tanınan RFID kartlarının değerlerini görebilirsiniz:
Seri monitörde RFID kiralamalarının çıkışı
Bu arada, kitapçı rutinlerindeki PCD ve PICC öneki Yakınlık birleştirme cihazı ve Entegre yakınlık devre kartı. Birincisi okuyucuyu gösterir, ikincisi RFID kartı.
Proje için program
Gerçek proje için üst çizimi bir temel olarak yeniden kullanabiliriz.
Değişken Susam (alt listede azaltılmış) bir yazarın RFID transponderinin kimliğini içerir. Açıkçası, son deneysel yapılandırmada yazdığınız gibi, bu değişkeni RFID kartınızın kimliğiyle değiştirmelisiniz.
Sonraki çizim tam olarak yukarıda açıklanan senaryoyu uygular.
İçinde Ayarlamak ()
9600 baud altındaki seri monitörde teşhis masraflarını gözlemlemek mümkündür.
//////////////////////////////////////////////////
//
// Demo für RFID-Tags
// auf Basis von MFRC422-Reader
// (c) Michael Stal, 2016
//
//////////////////////////////////////////////////
#include <SPI.h> // Import SPI-Bibiothek
#include <MFRC522.h> // Import RFID-Bibiothek
#include <Servo.h> // Import Servo Bibliothek
///////// Variablen MFRC522 //////////////////////
const int SDAPIN = 53; // Uno => Pin 10
const int RSTPIN = 9; // Uno => Pin 9
MFRC522 rfidReader(SDAPIN, RSTPIN); // RFID-Empfänger
///////// Aktoren: LEDs, Servo ///////////////////
const int REDLED = 13; // Uno -> Pin 8
const int GREENLED = 12; // Uno -> Pin 7
const int SERVOPIN = 11; // Uno -> Pin 6
Servo door; // Türverschluss (Servo)
//////// ID des richtigen RFID-Tags //////////////
byte sesam[] = {0x26, 0xA7, 0xFB, 0x48};
//////////////////////////////////////////////////
//
// setup()
// Initialisieren von SPI,
// seriellem Monitor,
// RFID-Leser
//
//////////////////////////////////////////////////
void setup()
{
door.attach(SERVOPIN);
pinMode(REDLED, OUTPUT);
pinMode(GREENLED, OUTPUT);
pinMode(SERVOPIN, OUTPUT);
Serial.begin(9600); // Serielle Verbindung
SPI.begin(); // SPI-Verbindung aufbauen
rfidReader.PCD_Init(); // Initial. RFID-Leser
Serial.println("Tuerkontrolle aktiviert");
}
//////////////////////////////////////////////////
//
// acceptedRFID()
// Stimmt gelesene RFID
// mit der voreingestellten ID überein?
//
//////////////////////////////////////////////////
bool acceptedRFID(byte uid[4]) {
return
(rfidReader.uid.uidByte[0] == sesam[0]) &&
(rfidReader.uid.uidByte[1] == sesam[1]) &&
(rfidReader.uid.uidByte[2] == sesam[2]) &&
(rfidReader.uid.uidByte[3] == sesam[3]);
}
//////////////////////////////////////////////////
//
// openDoor()
// Servo um 180° in Richtung drehen
//
//////////////////////////////////////////////////
void openDoor() {
for (int pos = 0; pos <= 180; pos++) {
door.write(pos);
delay(20);
}
}
//////////////////////////////////////////////////
//
// closeDoor()
// Servo um 180° in Gegenrichtung drehen
//
//////////////////////////////////////////////////
void closeDoor() {
for (int pos = 180; pos >= 0; pos--) {
door.write(pos);
delay(20);
}
}
//////////////////////////////////////////////////
//
// signalDoorLocked()
// Zugang versperrt =>
// rote LED leuchtet,
// gruene nicht
//
//////////////////////////////////////////////////
void signalDoorLocked() {
digitalWrite(REDLED, HIGH);
digitalWrite(GREENLED, LOW);
}
//////////////////////////////////////////////////
//
// signalAccessGranted()
// Zugang gewährt =>
// gruene LED leuchtet,
// rote nicht
//
//////////////////////////////////////////////////
void signalAccessGranted() {
digitalWrite(REDLED, LOW);
digitalWrite(GREENLED, HIGH);
}
//////////////////////////////////////////////////
//
// signalAccessRefused()
// Zugang verweigert =>
// rote LED blinkt 5x
//
//////////////////////////////////////////////////
void signalAccessRefused() {
for (int i = 0; i < 5; i++) {
digitalWrite(REDLED, HIGH);
delay(250);
digitalWrite(REDLED, LOW);
delay(250);
}
}
//////////////////////////////////////////////////
//
// loop()
// Warten auf RFID-Erkennung
// Reaktion abhaengig vom ID-Vergleich
//
//////////////////////////////////////////////////
void loop()
{
// Rotes Signal
signalDoorLocked();
// Karte erkannt und gelesen
if (rfidReader.PICC_IsNewCardPresent() && rfidReader.PICC_ReadCardSerial()) {
Serial.print("Erkanntes RFID-TAG ist => ");
// Bytes der ID lesen und ausgeben
Serial.print("/");
for (byte i = 0; i < rfidReader.uid.size; i++) {
Serial.print(rfidReader.uid.uidByte, HEX);
Serial.print("/");
}
Serial.println();
// Check ob Karte mit Variable sesam übereinstimmt
if (acceptedRFID(rfidReader.uid.uidByte)) { // ja =>
// Erlaubten Zugriff signalisieren
signalAccessGranted();
Serial.println("Zugriff erlaubt => Tuer oeffnen");
// Oeffnen der Tuere
openDoor();
Serial.println("Tuer 3 Sekunden offen lassen");
// 3 Sekunden Pause
delay(3000);
Serial.println("Tuer schliessen");
// Tuere wieder schliessen
closeDoor();
}
else // nein =>
{
Serial.println("Zugriff verweigert");
// Rote LED blinkt als Warnung
signalAccessRefused();
}
}
}
Genişleme Seçenekleri
Tabii ki, bu sefer onları uzatma önerileri olmadan yayınlamıyorum. Aşağıdakiler gibi birkaç seçeneğiniz var:
Özet
Okuyucular ve RFID etiketleri ile bazı ilginç projeler oluşturabilirsiniz. Güvenlik sistemlerinden canlı varlıklara veya hareketli mülklere kadar birçok uygulama düşünülebilir. Bu bölüm buzdağının ucunu gösterebildi. Bununla birlikte, profesyonel ve güvenlik eleştirisi için, ekonomik RC522 kartının sınırlarına ulaşması muhtemeldir. İşte daha pahalı ve daha güçlü seçenekler. Bununla birlikte, çipin olasılığı deneyimlerin toplanması için yeterlidir ve birçoğu proje gerçekleştirir. Deneyerek eğlenin!
()
IoT teriminin yaratıcısı (Nesnelerin İnterneti) Kevin Ashton, Massachusetts Teknoloji Enstitüsü'nün (ile) Otomatik Kimlik Merkezinde çalıştı. Orada RFID için uluslararası bir standart başlattı. Bu nedenle Nesnelerin İnterneti ile RFID teknolojisi arasında tarihsel bir referans vardır. Bu sayıda, birbirine ait olan şey birlikte büyümelidir.
Ama tam olarak ne için ve ne için? Bu konuya sanal ansiklopedide göz atmak istiyorum.
RFID (İngilizce Radiff kimliği), Wikipedia'ya göre:
” […] Otomatik ve temas kimliği ve yerelleştirilmiş nesneler ve radyo dalgaları olan canlılar için gönderen sistemleri için bir teknoloji.
Bir RFID sistemi, nesnede veya canlı varlıkta bulunan ve karakteristik bir kod ve bu tanımlayıcıyı okumak için bir okuyucu içeren bir transponderden (hatta Funkitta olarak adlandırılır) oluşur.
RFID transponder, pirinç tanesi kadar küçük olabilir ve örneğin evcil hayvanlarda veya insanda implante edilebilir. ”

Oklahoma Üniversitesi'nde RFID ile hayvan gezilerine zulüm
(Resim: www.animalmigration.org)
“Buna ek olarak, polimerlerden istikrarlı devrelerin özel bir baskı süreci kullanılarak RFID transponder üretme olasılığı vardır. Bu teknolojinin avantajları, okumanın gizli okumasından (örneğin Almanya'da kimlik kartında) ve son zamanlarda Almanya'da tanıtılan) kombinasyonundan kaynaklanmaktadır (bazen merkezi alanda).
Birleştirme, okuyucunun düşük aralıklı veya yüksek frekanslı radyo dalgalarında üretilen alternatif manyetik alanlar tarafından yapılır. Bu sadece verileri iletir, aynı zamanda transponder sağlar. Güç kaynağı ile aktif olan transponderler daha büyük aralıklar elde etmek için kullanılır, ancak daha yüksek maliyetlerle ilişkilidir. […]”
Şimdi günlük yaşamın her yerinde RFID ile tanışıyoruz. Örneğin, makam için malların taranması sırasında veya NFC terminalleri üzerinden ödeme yaptığınızda. Günümüzde, donanım ve RFID kartları o kadar ucuz ki, kullanımları üreticinin dünyasında, yani kendi projeleri için de ödeme yapıyor.
RFID-RC522 SET
Deneyiniz için cazip bir fiyat RFID-RC522 araştırma süresi altında çalışır. Donanım modülü, bir S50 RFID/NFC S50 kartı, anahtar olarak mavi bir transproner ve eBay'de sadece 5 Euro için eklenti çizgileri (açılı, düz) içeren bu set elde edilebilir.

Bir RFID-RC522 seti, bir okuyucu, iki RFID etiketi ve kaynak için eklenti şeritlerinden oluşur
SPI veri yolu ve yaklaşık 6 cm x 4 cm ile bağlanması gereken modül, bir besleme voltajı olarak 3.3 V gerektirir, 10 ila 30 arasında çalışma akımlarını tüketir, ancak 80 µA'lık bir disfolizmaya sahiptir. İletim frekansı 13.56 MHz'dir.

RFID-RC522 ve pimi ataması
(Resim: https://home.ctw.utwente.nl)
RFID oynatıcı ile diğer/RFID kart türlerini kullanmak istiyorsanız, S50, S70, Ultralight, Profesyoneller ve Desfire türleri arasında bir seçeneğiniz vardır.
Proje
Her zaman olduğu gibi, uygulama ön planda olmalıdır. Kapının bir açılış sistemini simüle etmekle ilgilidir. Kapanış mekanizmasının rolü hizmetçi bir motor varsayar. Kırmızı ve yeşil bir LED ilgili durumu görüntüler. Başlangıçta kapı kapalı ve kırmızı LED yanıyor. Eskiz, RFID Günü aracılığıyla insanların kabul edilmesini bekliyor. Devre yakınınızdaki bir RFID günü algılarsa, değerini okuyun.
- RFID okuma kartı izin verilen bir tanımlayıcı içeriyorsa, kırmızı LED parlamayı durdurur, bundan sonra yeşil LED parlamaya başlar. Hizmetçi motor 180 ° yönde hareket eder. Daha sonra, kontrol 3 saniye bekliyor ve hizmetkarı 180 ° ters yönde hareket ettiriyor. Böylece yeşil LED sona erer ve kırmızı LED parlamaya başlar. Kapı tekrar kapalı.
- Okuma RFID, kabul edilmemiş bir tanımlayıcı içeriyorsa, kırmızı LED, kalıcı bir ışığa dönmeden önce raporlama için beş kez yanıp söner.

Testteki devre

Operasyon sırasında teşhis masrafları
Materyal faturası
Burada açıklanan projeyi gerçekleştirmek için aşağıdaki materyal gereklidir:
- Arduino Mega (veya Arduino Uno veya Arduino Leonardo)
- Kırmızı LED
- Yeşil LED
- Küçük motor hizmetkarı
- RFID-RC522 Seti (yukarıya bakın)
- 2 direnç (Mít 220 Ω, 330 Ω veya 470 Ω)
- 11 adet anahtarlama ipliği (her biri 20-30 cm)
- Küçük gözaltı
Arduino mega için aşağıdaki bağlantılar gereklidir.
Arduino Mega RFID-RC522 (RFID-Leser)
GND GND
5 RST
3,3 V 3,3 V
53 SDA
52 SCK
51 MOSI
50 MISO
Birleşmiş Milletler ile devreyi değiştirmeli ve SDA'yı dijital pin 10'a koymalısınız, 13 üzerinden SCK, 11 üzerinden MOSI ve 12'de MISO. Buna ek olarak, RFID okuyucusunun birincisi Birleşmiş Milletler'in dijital pim 9'una bağlanır:
Arduino Uno RFID-RC522 (RFID-Leser)
GND GND
9 RST
3,3 V 3,3 V
10 SDA
13 SCK
11 MOSI
12 MISO
devre
Devreye aşağıdaki bağlantılar eklenir. Mega Arduino için bağlantılar gösterilmiştir. Birleşmiş Milletler ile diğer dijital çıktıları kullanıyor.
- Eklenti kartındaki mavi GND pisti Mega GND'ye bağlanır.
- Eklenti kartındaki kırmızı voltaj izi, Mega veya Birleşmiş Milletler'in 5 volt voltaj çıkışına bağlanır.
- Motor hizmetkarı, mega (pim 6 için), ayrıca GND ve 5V ile genişlikte Dijital Veri Çıkışı 11'e doğrudan bağlanır.
- Kırmızı LED, mega (A: pim 8) pim 13, mega pin 12 ile yeşil LED (A: pim 7) ile doğrudan kontrol edilir. Her iki LED de bir dirençle GND ekmek tahtası GND'ye bağlanır.

Mega, RFID-RC522, Servo Motoru, LED'leri ile devre
Genellikle RFID MFRC522 okuyucuları, Arduino kartının 3.3 V voltajı ile kolayca yönetilebilirken, aynı zamanda modülün SPI veriyolunun bağlantıları doğrudan Arduino kartın üzerindedir. Güvenli tarafta olmak istiyorsanız, bildiğimiz gibi, örneğin Bluetooth devrelerinde mantıklı bir dönüştürücü kullanın. Bu arada, MFRC522, yongaların üreticisi olan NXP yarı iletkenlerinin MIE ürünlerinin ailesi için kısaltmadır. Bu Wikipedia sayfasında daha fazla bilgi de bulabilirsiniz. Bu bağlantıdan bir İngilizce -dil veri kartı var.
kütüphane
Miguel Balboa bu amaç için bu GitHub sayfasında bulabileceğiniz bir kütüphane sunduğundan, kartı MFRC522 çipinin kendisiyle programlamaya değmez. Kütüphane aşağıdaki bağlantıdan indirilir. Sonra büyütülmüş kütüphane (dizin RFID-Master) Arduino fikrinde içe aktarın.
Fikirde de gezin Eskiz | Kütüphaneyi ekleyin | .Zip kitaplığını ekleyin Ve kütüphanenin yoluna girin.
İlk Eskiz
Her şeyden önce, ilk taslak RFID etiket kimliklerine izin vermelidir. Kullanıcı okuma formuna RFID kartı ile yaklaşırsa, program Sürekli Döngü ()-kimliklerini yükler.
- İçinde Ayarlamak () SPI veri yolu, seri monitör ve RFID okuyucu başlangıçtır.
- İçinde Sürekli Döngü () Eskiz, bir RFID kartının algılanmasını bekler ve kimliğini seri monitöre harcar.
Arduino mega yerine Birleşmiş Milletler gibi farklı bir masa kullanıyorsanız, eskizdeki bazı pimi de değiştirmelisiniz. Yukarıdaki açıklamalarda zaten bilgi vardı.
/////////////////////////////////////////////////
//
// Lesen und Ausgeben von RFID-Tags
// auf Basis von MFRC422-Reader
// (c) Michael Stal, 2016
//
//////////////////////////////////////////////////
#include <SPI.h> // Import SPI-Bibiothek
#include <MFRC522.h> // Import RFID-Bibiothek
#include <Servo.h> // Import Servo-Bibliothek
///////// Variablen MFRC522 //////////////////////
const int SDAPIN = 53; // Uno => Pin 10
const int RSTPIN = 9; // Uno => Pin 9
MFRC522 rfidReader(SDAPIN, RSTPIN); // RFID-Empfänger
//////////////////////////////////////////////////
//
// setup()
// Initialisieren von SPI,
// seriellem Monitor,
// RFID-Leser
//
//////////////////////////////////////////////////
void setup()
{
Serial.begin(9600); // Serielle Verbindung
SPI.begin(); // SPI-Verbindung aufbauen
rfidReader.PCD_Init(); // RFID-Reader initial.
}
//////////////////////////////////////////////////
//
// loop()
// Warten auf RFID-Erkennung
//
//////////////////////////////////////////////////
void loop()
{
// Karte erkannt und gelesen
if (rfidReader.PICC_IsNewCardPresent() && rfidReader.PICC_ReadCardSerial()) {
Serial.print("Erkanntes RFID-TAG ist => ");
// Bytes der ID lesen und ausgeben
Serial.print("/");
for (byte i = 0; i < rfidReader.uid.size; i++) {
Serial.print(rfidReader.uid.uidByte, HEX);
Serial.print("/");
}
Serial.println();
}
}
Çıktı olarak, seri monitörde tanınan RFID kartlarının değerlerini görebilirsiniz:

Seri monitörde RFID kiralamalarının çıkışı
Bu arada, kitapçı rutinlerindeki PCD ve PICC öneki Yakınlık birleştirme cihazı ve Entegre yakınlık devre kartı. Birincisi okuyucuyu gösterir, ikincisi RFID kartı.
Proje için program
Gerçek proje için üst çizimi bir temel olarak yeniden kullanabiliriz.
Değişken Susam (alt listede azaltılmış) bir yazarın RFID transponderinin kimliğini içerir. Açıkçası, son deneysel yapılandırmada yazdığınız gibi, bu değişkeni RFID kartınızın kimliğiyle değiştirmelisiniz.
Sonraki çizim tam olarak yukarıda açıklanan senaryoyu uygular.
İçinde Ayarlamak ()
- SPI veri yolu, seri monitör ve RFID okuyucu başlangıçtır.
- Önce kırmızı LED parlıyor
- Eskiz, bir RFID kartının algılanmasını bekliyor =>
- Kağıt yanlış kimliğe sahipse, kırmızı LED 5 kez yanar
- Kağıt doğru kimliğe sahipse, kırmızı LED sona erer ve yeşil parlamaya başlar. Servomotor bir yönde 180 ° çalışır, 3 saniye durur, sonra tekrar ters yönde 180 ° döner.
9600 baud altındaki seri monitörde teşhis masraflarını gözlemlemek mümkündür.
//////////////////////////////////////////////////
//
// Demo für RFID-Tags
// auf Basis von MFRC422-Reader
// (c) Michael Stal, 2016
//
//////////////////////////////////////////////////
#include <SPI.h> // Import SPI-Bibiothek
#include <MFRC522.h> // Import RFID-Bibiothek
#include <Servo.h> // Import Servo Bibliothek
///////// Variablen MFRC522 //////////////////////
const int SDAPIN = 53; // Uno => Pin 10
const int RSTPIN = 9; // Uno => Pin 9
MFRC522 rfidReader(SDAPIN, RSTPIN); // RFID-Empfänger
///////// Aktoren: LEDs, Servo ///////////////////
const int REDLED = 13; // Uno -> Pin 8
const int GREENLED = 12; // Uno -> Pin 7
const int SERVOPIN = 11; // Uno -> Pin 6
Servo door; // Türverschluss (Servo)
//////// ID des richtigen RFID-Tags //////////////
byte sesam[] = {0x26, 0xA7, 0xFB, 0x48};
//////////////////////////////////////////////////
//
// setup()
// Initialisieren von SPI,
// seriellem Monitor,
// RFID-Leser
//
//////////////////////////////////////////////////
void setup()
{
door.attach(SERVOPIN);
pinMode(REDLED, OUTPUT);
pinMode(GREENLED, OUTPUT);
pinMode(SERVOPIN, OUTPUT);
Serial.begin(9600); // Serielle Verbindung
SPI.begin(); // SPI-Verbindung aufbauen
rfidReader.PCD_Init(); // Initial. RFID-Leser
Serial.println("Tuerkontrolle aktiviert");
}
//////////////////////////////////////////////////
//
// acceptedRFID()
// Stimmt gelesene RFID
// mit der voreingestellten ID überein?
//
//////////////////////////////////////////////////
bool acceptedRFID(byte uid[4]) {
return
(rfidReader.uid.uidByte[0] == sesam[0]) &&
(rfidReader.uid.uidByte[1] == sesam[1]) &&
(rfidReader.uid.uidByte[2] == sesam[2]) &&
(rfidReader.uid.uidByte[3] == sesam[3]);
}
//////////////////////////////////////////////////
//
// openDoor()
// Servo um 180° in Richtung drehen
//
//////////////////////////////////////////////////
void openDoor() {
for (int pos = 0; pos <= 180; pos++) {
door.write(pos);
delay(20);
}
}
//////////////////////////////////////////////////
//
// closeDoor()
// Servo um 180° in Gegenrichtung drehen
//
//////////////////////////////////////////////////
void closeDoor() {
for (int pos = 180; pos >= 0; pos--) {
door.write(pos);
delay(20);
}
}
//////////////////////////////////////////////////
//
// signalDoorLocked()
// Zugang versperrt =>
// rote LED leuchtet,
// gruene nicht
//
//////////////////////////////////////////////////
void signalDoorLocked() {
digitalWrite(REDLED, HIGH);
digitalWrite(GREENLED, LOW);
}
//////////////////////////////////////////////////
//
// signalAccessGranted()
// Zugang gewährt =>
// gruene LED leuchtet,
// rote nicht
//
//////////////////////////////////////////////////
void signalAccessGranted() {
digitalWrite(REDLED, LOW);
digitalWrite(GREENLED, HIGH);
}
//////////////////////////////////////////////////
//
// signalAccessRefused()
// Zugang verweigert =>
// rote LED blinkt 5x
//
//////////////////////////////////////////////////
void signalAccessRefused() {
for (int i = 0; i < 5; i++) {
digitalWrite(REDLED, HIGH);
delay(250);
digitalWrite(REDLED, LOW);
delay(250);
}
}
//////////////////////////////////////////////////
//
// loop()
// Warten auf RFID-Erkennung
// Reaktion abhaengig vom ID-Vergleich
//
//////////////////////////////////////////////////
void loop()
{
// Rotes Signal
signalDoorLocked();
// Karte erkannt und gelesen
if (rfidReader.PICC_IsNewCardPresent() && rfidReader.PICC_ReadCardSerial()) {
Serial.print("Erkanntes RFID-TAG ist => ");
// Bytes der ID lesen und ausgeben
Serial.print("/");
for (byte i = 0; i < rfidReader.uid.size; i++) {
Serial.print(rfidReader.uid.uidByte, HEX);
Serial.print("/");
}
Serial.println();
// Check ob Karte mit Variable sesam übereinstimmt
if (acceptedRFID(rfidReader.uid.uidByte)) { // ja =>
// Erlaubten Zugriff signalisieren
signalAccessGranted();
Serial.println("Zugriff erlaubt => Tuer oeffnen");
// Oeffnen der Tuere
openDoor();
Serial.println("Tuer 3 Sekunden offen lassen");
// 3 Sekunden Pause
delay(3000);
Serial.println("Tuer schliessen");
// Tuere wieder schliessen
closeDoor();
}
else // nein =>
{
Serial.println("Zugriff verweigert");
// Rote LED blinkt als Warnung
signalAccessRefused();
}
}
}
Genişleme Seçenekleri
Tabii ki, bu sefer onları uzatma önerileri olmadan yayınlamıyorum. Aşağıdakiler gibi birkaç seçeneğiniz var:
- Bir mesafe sensörü veya lazer bariyeri kullanarak, kapının hala açık olup olmadığını belirlemek mümkündür.
- RFID kartlarını kalıcı veya geçici olarak açmanıza ve tekrar engellemenize olanak tanıyan yazılım (örn. PC veya Raspberry Pi için) yazabilirsiniz. Buna ek olarak, ilgili RFID Zugríff gününün izin verdiği ve olmadığı zamanları tanımlayabilirler. Bu bilgiler sunucuda şifrelenmiştir. Arduino'daki devre, RFID okuma kartlarının girme hakkına sahip olup olmadığını öğrenmek için merkezi yazılımla WiFi aracılığıyla iletişim kurar. Merkezi yazılım tüm işlemleri buna göre kaydedebilir. Alternatif olarak, mikrodenetleyicide yerel olarak olayları kaydetmek için Arduino'da bir SD oynatıcı kullanın. Tabii ki, bu senaryolarda iletilen tüm verileri şifrelemelisiniz.
- RFID okuyucu aralığını birkaç santimetre artırmak için MRFC522.CPP A ekle. Yöntemle PCD_INIT () Önce PCD_ANTENNANAON () Aşağıdaki satırı ekleyin: PCD_WRITER RECID için (RFCFGGGG, (0x07 em>. Bu, MFRC522 çipinin maksimum değerine duyarlılığını arttırır. Bu, özellikle kapı devresi için gerekli olabilir.
- Ve yükleme, ancak daha az önemli değil, motor hizmetkarı yerine kapıların gerçek bir elektronik kilitleme sistemi kullanabilirsiniz.
Özet
Okuyucular ve RFID etiketleri ile bazı ilginç projeler oluşturabilirsiniz. Güvenlik sistemlerinden canlı varlıklara veya hareketli mülklere kadar birçok uygulama düşünülebilir. Bu bölüm buzdağının ucunu gösterebildi. Bununla birlikte, profesyonel ve güvenlik eleştirisi için, ekonomik RC522 kartının sınırlarına ulaşması muhtemeldir. İşte daha pahalı ve daha güçlü seçenekler. Bununla birlikte, çipin olasılığı deneyimlerin toplanması için yeterlidir ve birçoğu proje gerçekleştirir. Deneyerek eğlenin!
()