Arduino İle RC522 RFID Modül Kullanarak Kapı Kilidi Projesi Yapalım
Kart okuyucu devresini yaparken aynı zamanda RFID ile servo motor kontrolü uygulamasını da gerçekleştirmiş olacağız. Yani hem Arduino’nun RFID ile iletişimini öğreneceğiz hem de servo motor kullanarak algoritmamızı yazmış olacağız.
Gereken malzemeler:
- Arduino UNO
- Breadboard
- RC522 RFID NFC Kiti
- Servo motor
- Erkek-erkek jumper kablo
Devre şemamız şu şekilde:
Kart Okuyucu Devresi
Projeye Başlamadan Önce İndirmemiz Gereken RFID ve Servo Motor Kütüphaneleri
Bu adresten kartımızı çalıştırmamızda gerekli olan kütüphaneyi indirerek Arduino programının kurulu olduğu klasör altındaki libraries klasörüne MFRC522 ismiyle kaydediyoruz.
Arduino Kart Okuyucu devremiz için gerekli kodu aşağıdaki gibi yazıyoruz. Her bir satırda açıklamalar bulunuyor fakat projede bir sorun yaşarsanız yorum kısmından bildirebilirsiniz.
#include <spi.h> //SPI kütüphanemizi tanımlıyoruz. #include <mfrc522.h> //MFRC522 kütüphanemizi tanımlıyoruz. #include <servo.h> //Servo kütüphanemizi tanımlıyoruz int RST_PIN = 9; //RC522 modülü reset pinini tanımlıyoruz. int SS_PIN = 10; //RC522 modülü chip select pinini tanımlıyoruz. int servoPin = 8; //Servo motor pinini tanımlıyoruz. Servo motor; //Servo motor için değişken oluşturuyoruz. MFRC522 rfid(SS_PIN, RST_PIN); //RC522 modülü ayarlarını yapıyoruz. byte ID = { 97, 76, 67, 9 }; //Yetkili kart ID'sini tanımlıyoruz. void setup() { motor.attach(servoPin); //Servo motor pinini motor değişkeni ile ilişkilendiriyoruz. Serial.begin(9600); //Seri haberleşmeyi başlatıyoruz. SPI.begin(); //SPI iletişimini başlatıyoruz. rfid.PCD_Init(); //RC522 modülünü başlatıyoruz. } void loop() { if (!rfid.PICC_IsNewCardPresent()) //Yeni kartın okunmasını bekliyoruz. return; if (!rfid.PICC_ReadCardSerial()) //Kart okunmadığı zaman bekliyoruz. return; if (rfid.uid.uidByte == ID && //Okunan kart ID'si ile ID değişkenini karşılaştırıyoruz. rfid.uid.uidByte == ID && rfid.uid.uidByte == ID && rfid.uid.uidByte == ID) { Serial.println("Kapi acildi"); ekranaYazdir(); motor.write(180); //Servo motoru 180 dereceye getiriyoruz. delay(3000); motor.write(0); //Servo motoru 0 dereceye getiriyoruz. delay(1000); } else { //Yetkisiz girişte içerideki komutlar çalıştırılır. Serial.println("Yetkisiz Kart"); ekranaYazdir(); } rfid.PICC_HaltA(); } void ekranaYazdir() { Serial.print("ID Numarasi: "); for (int sayac = 0; sayac < 4; sayac++) { Serial.print(rfid.uid.uidByte); Serial.print(" "); } Serial.println(""); }
RFID ile yaptığımız bu projeden memnun kaldınız mı? Öyleyse kendinizi RFID protokolü konusunda daha çok geliştirebileceğiniz bir proje seti tavsiye ediyoruz. Arduino RFID Kit Seti ile servo motor haricinde LDR, yangın sensörü, ses sensörü, sıcaklık sensörü gibi birçok komponent kullanarak bilgi sinyali alarak step motor, LED, buzzer ve daha bir sürü aktüatör ile projeler yapabilirsiniz
> Buradan Alabilirsin.
Тестирование и настройка готового дубликатора
Для описанного выше проекта понадобится специальный корпус, чтобы аккуратно разместить все компоненты и сохранить их без ущерба.
Можно разработать корпус с использованием программы SketchUp, которая имеет удобный интерфейс с простыми кнопками, такими как Eraser, Lines и Tape Measure Tool.
Размеры коробки составляют: 120 х 125 х 37 мм.
Если вы не знакомы с Sketchup, вам нужно ознакомиться со следующими учебниками SketchUp:
http://www.sketchup.com/learn/videos/58
Коробка для корпуса устройства (вид сверху)
Коробка для корпуса устройства (вид снизу)
Перед разработкой корпуса для проекта необходимо учитывать следующие аспекты:
-
Вид сверху:
— 2 отверстия для светодиодов (5,2 мм).
— 1 для ЖК-дисплея (42,2 × 7,3 мм).
— 1 отверстие для кабеля (16 × 10,5 мм). -
Вид снизу:
— 1 открытие для клавиатуры (27 × 10 мм).
После этого можно соотнести размеры и построить пластиковый корпус. Причем можно менять дизайн по своему усмотрению.
Полный корпус с модулями, расположенными внутри
4Скетч для считывания информации, записанной на RFID-метке
Теперь давайте откроем скетч из примеров: Файл Образцы MFRC522 DumpInfo и загрузим его в память Arduino.
Открываем скетч DumpInfo
Данный скетч определяет тип приложенного к считывателю устройства и считывает данные, записанные на RFID-метке или карте, а затем выводит их в последовательный порт.
#include <SPI.h> #include <MFRC522.h> const int RST_PIN = 9; // пин RST const int SS_PIN = 10; // пин SDA (SS) MFRC522 mfrc522(SS_PIN, RST_PIN); // создаём объект MFRC522 void setup() { Serial.begin(9600); // инициализация послед. порта SPI.begin(); // инициализация шины SPI mfrc522.PCD_Init(); // инициализация считывателя RC522 } void loop() { // Ожидание прикладывания новой RFID-метки: if ( ! mfrc522.PICC_IsNewCardPresent()) { return; // выход, если не приложена новая карта } // Считываем серийный номер: if ( ! mfrc522.PICC_ReadCardSerial()) { return; // выход, если невозможно считать сер. номер } // Вывод дампа в послед. порт: mfrc522.PICC_DumpToSerial(&(mfrc522.uid)); }
Текст скетча достаточно хорошо прокомментирован.
Для более полного знакомства с библиотекой изучите файлы MFRC522.h и MFRC522.cpp из директории rfid-master.
Step 2: Simple Code to Read and Print RFID Tags Value
Copy the Below code then upload it on your Arduino
/*PINOUT:
RC522 MODULE Uno/Nano MEGA
SDA D10 D9
SCK D13 D52
MOSI D11 D51
MISO D12 D50
IRQ N/A N/A
GND GND GND
RST D9 D8
3.3V 3.3V 3.3V
*/
/* Include the standard Arduino SPI library */
#include <SPI.h>
/* Include the RFID library */
#include <RFID.h>
/* Define the DIO used for the SDA (SS) and RST (reset) pins. */
#define SDA_DIO 9
#define RESET_DIO 8
/* Create an instance of the RFID library */
RFID RC522(SDA_DIO, RESET_DIO);
void setup()
{
Serial.begin(9600);
/* Enable the SPI interface */
SPI.begin();
/* Initialise the RFID reader */
RC522.init();
}
void loop()
{
/* Has a card been detected? */
if (RC522.isCard())
{
/* If so then get its serial number */
RC522.readCardSerial();
Serial.println(«Card detected:»);
for(int i=0;i<5;i++)
{
Serial.print(RC522.serNum,DEC);
//Serial.print(RC522.serNum,HEX); //to print card detail in Hexa Decimal format
}
Serial.println();
Serial.println();
}
delay(1000);
}
Считывание данных с RFID-тега
Подключив все как нужно, кликните в IDE Arduino по Файл > Примеры > MFRC522 > DumpInfo (File > Examples > MFRC522 > DumpInfo) и загрузите этот скетч на Arduino. Он уже будет в IDE Arduino, когда вы установите в него библиотеку RFID.
Затем откройте в IDE Arduino монитор порта. В нем должны появиться данные примерно как на картинке ниже:
Приложите к RFID-ридеру карту или брелок с RFID-тегом. Держите их в таком положении, пока в мониторе порта не будет показана вся необходимая информация.
Это информация, считанная с RFID-тега, включая UID, который высвечен желтым цветом. Информация хранится в памяти, которая поделена на сегменты и блоки, которые можно наблюдать на картинке выше. Общий объем памяти составляет 1024 байта, которые поделены на 16 секторов, и каждый сектор защищен двумя разными ключами, A и B.
Запишите где-нибудь UID свой карты – позже он вам понадобится.
Загрузите на Arduino код, показанный ниже:
1 /* 2 * 3 * Более подробно о проекте на: http://randomnerdtutorials.com/ 4 * Модифицирован Руи Сантосом (Rui Santos) 5 * 6 * Написан FILIPEFLOP 7 * 8 */ 9 10 #include <SPI.h> 11 #include <MFRC522.h> 12 13 #define SS_PIN 10 14 #define RST_PIN 9 15 MFRC522 mfrc522(SS_PIN, RST_PIN); // создаем экземпляр MFRC522 instance. 16 17 void setup() 18 { 19 Serial.begin(9600); // запускаем последовательную коммуникацию 20 SPI.begin(); // инициализируем шину SPI 21 mfrc522.PCD_Init(); // инициализируем MFRC522 22 Serial.println("Approximate your card to the reader..."); 23 // "Приложите карту к ридеру... " 24 Serial.println(); 25 26 } 27 void loop() 28 { 29 // ищем новые карты: 30 if ( ! mfrc522.PICC_IsNewCardPresent()) 31 { 32 return; 33 } 34 // выбираем одну из карт: 35 if ( ! mfrc522.PICC_ReadCardSerial()) 36 { 37 return; 38 } 39 // показываем UID на мониторе порта: 40 Serial.print("UID tag :"); // "UID тега: " 41 String content= ""; 42 byte letter; 43 for (byte i = ; i < mfrc522.uid.size; i++) 44 { 45 Serial.print(mfrc522.uid.uidBytei < 0x10 ? " 0" " "); 46 Serial.print(mfrc522.uid.uidBytei], HEX); 47 content.concat(String(mfrc522.uid.uidBytei < 0x10 ? " 0" " ")); 48 content.concat(String(mfrc522.uid.uidBytei], HEX)); 49 } 50 Serial.println(); 51 Serial.print("Message : "); // "Сообщение: " 52 content.toUpperCase(); 53 if (content.substring(1) == "BD 31 15 2B") 54 // впишите здесь UID тега, которому вы хотите дать доступ 55 { 56 Serial.println("Authorized access"); // "Доступ открыт" 57 Serial.println(); 58 delay(3000); 59 } 60 61 else { 62 Serial.println(" Access denied"); // "Запрос на доступ отклонен" 63 delay(3000); 64 } 65 }
В этом скетче вам нужно поменять строчку…
if (content.substring(1) == "BD 31 15 2B")
…вписав вместо BD 31 15 2B значение для UID, которое ранее было показано в мониторе порта.
Подключение RFID модуля RC522 к Arduino UNO
Теперь, когда мы знаем всё о модуле, мы можем подключить его к нашей плате Arduino!
Для начала подключите вывод VCC на модуле к выводу 3,3V на Arduino, а вывод GND — к земле Arduino. Вывод RST может быть подключен к любому цифровому выводу на Arduino. В нашем случае он подключен к цифровому выводу 5. Вывод IRQ не подключен, так как библиотека Arduino, которую мы собираемся использовать, не поддерживает его.
Теперь у нас остаются выводы, которые используются для связи по SPI. Поскольку модуль RC522 требует передачи больших данных, то наилучшая производительность будет обеспечена при использовании аппаратного модуля SPI в микроконтроллере. Использование выводов аппаратного SPI модуля намного быстрее, чем «дергание битов» в коде при взаимодействии через другой набор выводов.
Обратите внимание, что у плат Arduino выводы SPI различаются. Для плат Arduino, таких как UNO/Nano V3.0, это цифровые выводы 13 (SCK), 12 (MISO), 11 (MOSI) и 10 (SS)
Если у вас Arduino Mega, выводы отличаются! Вы должны использовать цифровые выводы 50 (MISO), 51 (MOSI), 52 (SCK) и 53 (SS). В таблице ниже приведен список выводов для связи по SPI для разных плат Arduino.
MOSI | MISO | SCK | CS | |
---|---|---|---|---|
Arduino Uno | 11 | 12 | 13 | 10 |
Arduino Nano | 11 | 12 | 13 | 10 |
Arduino Mega | 51 | 50 | 52 | 53 |
В случае если вы используете плату Arduino, отличную от приведенных выше, рекомендуется проверить официальную документацию Arduino, прежде чем продолжить.
Рисунок 5 – Подключение модуля RFIDсчитывателя RC522 к Arduino UNO
Как только вы всё подключите, вы готовы к работе!
Как подключить RFID считыватель RC522 к Arduino
В этой статье мы рассмотрим подключение к Arduino считывателя карт и брелоков RFID RC522, работающего на частоте 13,56 МГц.
Модуль RFID-RC522 выполнен на микросхеме MFRC522 фирмы NXP. Эта микросхема обеспечивает двухстороннюю беспроводную (до 6 см) коммуникацию на частоте 13,56 МГц.
Беспроводной модуль RFID-RC522
Микросхема MFRC522 поддерживает следующие варианты подключения:
SPI (Serial Peripheral Interface, последовательный интерфейс для связи периферийных устройств) | до 10 Мбит/сек; |
двухпроводной интерфейс I2C | до 3400 кбод в режиме High-speed,до 400 кбод в режиме Fast; |
последовательный UART (аналог RS232) | до 1228,8 кбод. |
С помощью данного модуля можно записывать и считывать данные с различных RFID-меток: брелоков от домофонов, пластиковых карточек-пропусков и билетов на метро и наземный транспорт, а также набирающих популярность NFC-меток.
RFID – это сокращение от “Radio Frequency IDentification” и переводится как «радиочастотная идентификация». NFC – это “Near field communication”, «коммуникация ближнего поля» или «ближняя бесконтактная связь».
2Схема подключения RFID-RC522 к Arduino
Подключим модуль RFID-RC522 к Arduino по интерфейсу SPI по приведённой схеме.
Схема подключения RFID-RC522 к Arduino по интерфейсу SPI
Питание модуля обеспечивается напряжением от 2,5 до 3,3 В. Остальные выводы подключаем к Arduino так:
RST | D9 |
SDA (SS) | D10 |
MOSI | D11 |
MISO | D12 |
SCK | D13 |
Не забывайте также, что Arduino имеет специальный разъём ICSP для работы по интерфейсу SPI. Его распиновка также приведена на иллюстрации. Можно подключить выводы RST, SCK, MISO, MOSI и GND модуля RC522 к разъёму ICSP на Ардуино.
3Библиотека для работы Arduino с RFID
Микросхема MFRC522 имеет достаточно обширную функциональность. Познакомиться со всеми возможностями можно изучив её паспорт (datasheet). Мы же для знакомства с возможностями данного устройства воспользуемся одной из готовых библиотек, написанных для работы Arduino с RC522. Скачайте её и распакуйте в директорию Arduino IDE\libraries\
Установка библиотеки “rfid-master” для работы Arduino с RFID-метками
После этого запустите среду разработки Arduino IDE.
4Скетч для считывания информации, записанной на RFID-метке
Теперь давайте откроем скетч из примеров: Файл Образцы MFRC522 DumpInfo и загрузим его в память Arduino.
Открываем скетч DumpInfo
Данный скетч определяет тип приложенного к считывателю устройства и считывает данные, записанные на RFID-метке или карте, а затем выводит их в последовательный порт.
#include #include const int RST_PIN = 9; // пин RST const int SS_PIN = 10; // пин SDA (SS) MFRC522 mfrc522(SS_PIN, RST_PIN); // создаём объект MFRC522 void setup() { Serial.begin(9600); // инициализация послед. порта SPI.begin(); // инициализация шины SPI mfrc522.PCD_Init(); // инициализация считывателя RC522 } void loop() { // Ожидание прикладывания новой RFID-метки: if ( ! mfrc522.PICC_IsNewCardPresent()) { return; // выход, если не приложена новая карта } // Считываем серийный номер: if ( ! mfrc522.PICC_ReadCardSerial()) { return; // выход, если невозможно считать сер. номер } // Вывод дампа в послед. порт: mfrc522.PICC_DumpToSerial(&(mfrc522.uid)); }
Текст скетча достаточно хорошо прокомментирован.
Для более полного знакомства с библиотекой изучите файлы MFRC522.h и MFRC522.cpp из директории rfid-master.
5Дамп данных с RFID-метки
Запустим монитор последовательного порта сочетанием клавиш Ctrl+Shift+M, через меню Инструменты или кнопкой с изображением лупы. Теперь приложим к считывателю билет метро или любую другую RFID-метку. Монитор последовательного порта покажет данные, записанные на RFID-метку или билет.
Считываем данные с билета на наземный транспорт и метро с помощью RFID
Например, в моём случае здесь зашифрованы уникальный номер билета, дата покупки, срок действия, количество оставшихся поездок, а также служебная информация. Мы разберём в одной из будущих статей, что же записано на карты метро и наземного транспорта.
Примечание
Да, с помощью модуля RFID-RC522 можно записать данные на билет метро.
Но не обольщайтесь, каждая карта имеет неперезаписываемый счётчик циклов записи, так что «добавить» поездок себе на метро не получится – это сразу будет обнаружено и карта будет забракована турникетом А вот использовать билеты метро для записи на них небольших объёмов данных – от 1 до 4 кб – можно. И способы применения этому ограничены только вашей фантазией.
Step 3: Simple Code for Super Market Application Using RFID
Copy the Below code then upload it on your Arduino. in the below the total purchase value will incremented when reading the card first time then decremented when reading the same for second time…
/*
PINOUT:
RC522 MODULE Uno/Nano MEGA
SDA D10 D9
SCK D13 D52
MOSI D11 D51
MISO D12 D50
IRQ N/A N/A
GND GND GND
RST D9 D8
3.3V 3.3V 3.3V
* Include the standard Arduino SPI library */
#include
/* Include the RFID library */
#include
/* Define the DIO used for the SDA (SS) and RST (reset) pins. */
#define SDA_DIO 9
#define RESET_DIO 8
int productname={228,18,37,75,24};
int product={100,120,230,125,70};
int token={0,0,0,0,0};
int Total;
/* Create an instance of the RFID library */
RFID RC522(SDA_DIO, RESET_DIO);
void setup()
{
Serial.begin(9600);
/* Enable the SPI interface */
SPI.begin();
/* Initialise the RFID reader */
RC522.init();
}
void loop()
{
/* Temporary loop counter */
byte i=0;
byte j=0;
byte k=0;
int ID;
/* Has a card been detected? */
if (RC522.isCard())
{
/* If so then get its serial number */
RC522.readCardSerial();
Serial.print(RC522.serNum,DEC);
//Serial.println(«Card detected:»);
/* Output the serial number to the UART */
ID=RC522.serNum;
//Serial.print(ID);
Serial.println(» «);
for(i=0;i<5;i++)
{
if(productname==ID)
{
Serial.println(«Total Purchase»);
if(token==0)
{
Total=Total+product;
token=1;
}
else
{
Total=Total-product;
token=0;
}
Serial.println(Total);
break;
}
else if(i==5)
{
Serial.println(«Access Denied»);
break;
}
}
Serial.println();
Serial.println();
}
delay(1000);
}
5 Дамп данных с RFID-метки
Запустим монитор последовательного порта сочетанием клавиш Ctrl+Shift+M , через меню Инструменты
или кнопкой с изображением лупы. Теперь приложим к считывателю билет метро или любую другую RFID-метку. Монитор последовательного порта покажет данные, записанные на RFID-метку или билет.
Например, в моём случае здесь зашифрованы уникальный номер билета, дата покупки, срок действия, количество оставшихся поездок, а также служебная информация. Мы разберём в одной из будущих статей, что же записано на карты метро и наземного транспорта.
Примечание
Да, с помощью модуля RFID-RC522 можно записать данные на билет метро. Но не обольщайтесь, каждая карта имеет неперезаписываемый счётчик циклов записи, так что «добавить» поездок себе на метро не получится — это сразу будет обнаружено и карта будет забракована турникетом:) А вот использовать билеты метро для записи на них небольших объёмов данных — от 1 до 4 кб — можно. И способы применения этому ограничены только вашей фантазией.
Здравствуйте. Сегодня на очереди RFID-модуль.
Этот модуль служит для чтения и записи данных, хранящихся в RFID – метках. Подробно об этой технологии можно почитать, например, в википедии. Мы здесь занимаемся практикой – поэтому приступим.
Когда я готовил этот проект, я изучил несколько статей об RFID модуле, на основе представленных там данных (главным образом http://robocraft.ru/blog/3004.html) написал скетч.
Пока ключ не приближен к сенсору – контакты реле будут разомкнуты. Когда мы подносим к приемнику нужный ключ – включается контактная группа реле, и остается включенной, пока не убран ключ. Мой приемник слышит метки через фанеру – это позволяет сделать секретный выключатель.
Если скрытно смонтировать считыватель (например под столешницей), легко можно заблокировать включение компьютера или освещения.
Процесс сборки состоит из следующих этапов:
- Собрать прибор по предложенной схеме.
- Записать в процессорную плату скетч (ссылка в конце статьи).
- Подключить сборку к компьютеру и включить монитор последовательного порта.
- Поднести к считывателю ключ.
- Отредактировать 20 строку скетча с учетом кода ключа, который пришел в монитор последовательного порта.
- Записать отредактированный скетч в плату.
- Всё – у нас есть готовая одноранговая система контроля доступа.
Сегодня я расскажу про RFID модуль RC522 , на базе чипа MFRC522. Питание 3.3В, дальность обнаружения до 6см. Предназначен для чтения и записи RFID меток с частотой 13.56 МГц. Частота в данном случае очень важна, так как RFID метки существуют в трех частотных диапазонах:
- Метки диапазона LF (125—134 кГц)
- Метки диапазона HF (13,56 МГц)
- Метки диапазона UHF (860—960 МГц)
Конкретно этот модуль работает с метками диапазона HF, в частности с протоколом MIFARE.
Для работы с модулем можно использовать стандартную библиотеку RFID входящую в Arduino IDE, однако есть и другая библиотека, написанная специально под данный модуль — MFRC522 (1 Мб) . Обе библиотеки вполне удобны, однако в MFRC522 больше специальных функций, позволяющих максимально сократить итоговый код программы.
What works and not?
-
Works
- Communication (Crypto1) with MIFARE Classic (1k, 4k, Mini).
- Communication (Crypto1) with MIFARE Classic compatible PICCs.
- Firmware self check of MFRC522.
- Set the UID, write to sector 0, and unbrick Chinese UID changeable MIFARE cards.
- Manage the SPI chip select pin (aka SS, SDA)
-
Works partially
- Communication with MIFARE Ultralight.
- Other PICCs (Ntag216).
- More than 2 modules, require a multiplexer .
-
Doesn’t work
- MIFARE DESFire, MIFARE DESFire EV1/EV2, not supported by software.
- Communication with 3DES or AES, not supported by software.
- Use of IRQ pin. But there is a proof-of-concept example.
- With Intel Galileo (Gen2) see #310, not supported by software.
- Power reduction modes #269, not supported by software.
- I2C instead of SPI #240, not supported by software.
- UART instead of SPI #281, not supported by software.
-
Need more?
- If software: code it and make a pull request.
- If hardware: buy a more expensive like PN532 (supports NFC and many more, but costs about $15 and not usable with this library).
Описание
Аббревиатура RFID расшифровывается как «radio-frequency identification», что переводится как «радио-частотная идентификация». Эта технология используется для передачи данных на короткие расстояния при помощи электромагнитных полей. Она может пригодиться, к примеру, для идентификации людей, совершения финансовых транзакций и т.д.
Систему, в основе которой лежит технология RFID, можно использовать, к примеру, для открытия дверей. То есть можно вручить какому-нибудь человеку карту, на которой будут данные, позволяющие открыть дверь лишь при помощи этой карты.
RFID-система состоит из следующих компонентов:
Теги (метки). Они встраиваются в объект, который нужно идентифицировать. К примеру, в брелок или электромагнитную карту. У каждого тега есть собственный UID (расшифровывается как «user identifier», т.е. «идентификатор пользователя»)
Ридер. Это двусторонний радио-приемопередатчик. Он отправляет сигнал тегу, а затем считывает ответ.
Подключение RC522 к Ардуино
Для подключения понадобятся плата Ардуино, считыватель RC522, компьютер, провода и беспроводная RFID метка.
Подключается модуль RC522 к ардуино по следующей схеме:
Напряжение питания обеспечивается от 2,5 до 3,3 В. Выход RST подключается к D9 пину на ардуино, SDA – к D10, MOSI – D11, MISO – D12, SCK – D13. В данном случае рассмотрены платы Arduino Nano v3 и Arduino Uno. После того как все будет подключено, на RC522 загорится индикатор.
Сегодня я расскажу про RFID модуль RC522 , на базе чипа MFRC522. Питание 3.3В, дальность обнаружения до 6см. Предназначен для чтения и записи RFID меток с частотой 13.56 МГц. Частота в данном случае очень важна, так как RFID метки существуют в трех частотных диапазонах:
- Метки диапазона LF (125—134 кГц)
- Метки диапазона HF (13,56 МГц)
- Метки диапазона UHF (860—960 МГц)
Конкретно этот модуль работает с метками диапазона HF, в частности с протоколом MIFARE.
Для работы с модулем можно использовать стандартную библиотеку RFID входящую в Arduino IDE, однако есть и другая библиотека, написанная специально под данный модуль — MFRC522 (1 Мб) . Обе библиотеки вполне удобны, однако в MFRC522 больше специальных функций, позволяющих максимально сократить итоговый код программы.
Программная часть
Мы подключим клавиатуру для отображения номеров на ЖК-дисплее для Arduino и скопируем ключ, который вводим с клавиатуры.
Keypad.h – это библиотека, которая позволяет Arduino читать клавиатуру с матричным типом.
В этом проекте используется клавиатура 4 × 4.
В таблице показано соединение между платой Arduino и клавиатурой. Штыри клавиатуры подключены к цифровым выходным выводам Arduino. Pin D6 использовался для зуммера, потому что это был штырь ШИМ.
Вывод клавиатуры | Контакт Arduino |
---|---|
1 | D2 |
2 | D3 |
3 | D4 |
4 | D5 |
5 | A0 |
6 | D7 |
7 | D8 |
Соединение между Arduino, LCD и клавиатурой
ЖК-дисплей и клавиатура, подключенные к Arduino
Затем добавим RFID. В этом случае плата RFID использует протокол связи SPI, где Arduino будет действовать, как ведущий и считыватель RFID в качестве подчиненного. Считыватель карт и теги предназначены для связи с частотой, равной 13,56 МГц.
Это важный шаг, поскольку он помогает нам считывать данные с карты, и он будет решать, соответствует ли идентификатор информации, хранящейся в EEPROM. Если он соответствует, он даст нам доступ и отобразит «Unlocked». В противном случае на ЖК-дисплее отобразится «Заблокировано».
Соединение между Arduino, LCD и RFID
Домофон на Ардуино, LCD и RFID
Следующий шаг – добавить зуммер и 2 светодиода для имитации системы контролируемого доступа. Ознакомьтесь с приведенной ниже диаграммой. Зуммер установлен так, что он гудит всякий раз, когда мы получаем доступ (разблокирован). Красный светодиод всегда горит, когда он заблокирован, но зеленый светодиод загорается, когда он разблокирован.
Чтобы защитить модули, нужно использовать 3D-печать корпуса. Если у вас нет 3D-принтера, вы можете просто использовать пластиковый корпус, который позволяет вам вставлять все компоненты внутрь. Это очень полезно, потому что модули будут размещены внутри, а единственными частями вне коробки будут светодиоды, клавиатура и ЖК-дисплей.
Схема соединений, показывающая соединение между Nano, LCD, клавиатурой, RFID и звуковым сигналом
www.deviceplus.com/how-tos/arduino-guide/make-your-own-arduino-rfid-door-lock/
Обзор аппаратного обеспечения — Модуль чтения / записи RF522 RFID
RFID модуль RC522 на основе микросхемы MFRC522 от NXP – это один из самых недорогих вариантов RFID, который вы можете найти в интернете менее чем за четыре доллара. Обычно он поставляется с картой RFID метки и брелоком с объемом памяти 1 КБ. И что лучше всего, он может записать метку, чтобы вы могли хранить в ней свое секретное сообщение.
Рисунок 3 – Модуль RFID считывателя RC522 с меткой-картой и меткой-ключом
Модуль считывателя RFID RC522 предназначен для создания электромагнитного поля на частоте 13,56 МГц, которое он использует для связи с метками RFID (стандартные метки ISO 14443A). Считыватель может взаимодействовать с микроконтроллером через 4-контактный последовательный периферийный интерфейс (SPI) с максимальной скоростью передачи данных 10 Мбит/с. Он также поддерживает связь по протоколам I2C и UART.
У модуля имеется вывод прерывания. Это удобно потому, что вместо того, чтобы постоянно опрашивать RFID модуль «есть ли карта в поле зрения?», модуль сам предупредит нас, когда метка окажется рядом.
Рабочее напряжение модуля составляет от 2,5 до 3,3 В, но хорошая новость заключается в том, что логические выводы допускают напряжение 5 вольт, поэтому мы можем легко подключить его к Arduino или любому микроконтроллеру с 5-вольтовой логикой без использования какого-либо преобразователя логических уровней.
Частотный диапазон | 13,56 МГц, ISM диапазон |
Интерфейс | SPI / I2C / UART |
Рабочее напряжение питания | от 2,5 В до 3,3 В |
Максимальный рабочий ток | 13-26 мА |
Минимальный ток (отключение питания) | 10 мкА |
Логические входы | допускают 5 В |
Расстояние считывания | 5 см |
Технические характеристики
- Напряжение питания: 3.3V
- Потребляемый ток :13-26mA
- Рабочая частота: 13.56MHz
- Дальность считывания: до 6 см
- Интерфейс: SPI
- Скорость передачи: максимальная 10МБит/с
- Размер: 40мм х 60мм
Микросхема MFRC522 поддерживает интерфейсы SPI, UART и I2C. Выбор интерфейса осуществляется установкой логических уровней на определенных выводах микросхемы. В Arduino принято использовать SPI.
Назначение выводов интерфейса SPI:
- SDA – выбор ведомого
- SCK – сигнал синхронизации
- MOSI – передача от master к slave
- MISO – передача от slave к master
- IRQ – вывод прерывания
- GND – земля;
- RST – вывод для сброса
- Vcc –питание 3.3 В
Выводы модуля подключаются к цифровым пинам Arduino
На платах Arduino есть разъём ICSP, который можно использовать для работы с интерфейсом SPI.