Вы находитесь на странице: 1из 14

Урок 13

RFID-замок
на Arduino

Материалы урока прикреплены к данному PDF-файлу. Для досту-


па к материалам, урок необходимо открыть в программе Adobe
Acrobat Reader.

2
RFID-замок на Arduino

RFID-замок на Arduino
У вас уже есть опыт разработки гаджетов для систе-
мы безопасности дома — ранее вы создали ультразвуко-
вую сигнализацию. Сегодня вы соберете на Arduino за-
мок, который будет открываться с помощью RFID-метки
(Radio Frequency IDentification — радиочастотная иден-
тификация). Такие метки используют для контроля до-
ступа сотрудников на предприятиях (рис. 1).

Рисунок 1
Для реализации такой системы на Arduino нам пона-
добится модуль RC522 (рис. 2).

3
Урок 13

Рисунок 2
Для начала нам потребуется считыватель RFID, что-
бы узнать данные имеющихся ключей. Давайте самосто-
ятельно соберем считыватель, воспользовавшись следу-
ющей схемой (рис. 3):
Также необходимо установить библиотеку для рабо-
ты с RC522. Вы можете найти ее в дополнительных ма-
териалах к занятию или загрузить по ссылке: http://bit.
ly/2P30wOn. Нажмите Sketch — Include Library — Add
.ZIP Library и выберите архив с библиотекой (рис. 4).

4
RFID-замок на Arduino

Рисунок 3

Рисунок 4
После этого перейдите File — Examples — MFRC522 —
DumpInfo. Откроется проект, который мы будем исполь-
зовать для считывания значений с меток (рис. 5).

5
Урок 13

Рисунок 5
Запустите проект на плате и откройте Serial Monitor.
Поднесите метку к считывателю. В Serial Monitor вы уви-
дите UID (User identifier) — идентификатор пользовате-
ля (рис. 6).
Приступим к сборке замка. Для этого воспользуемся
следующей схемой (рис. 7):

6
RFID-замок на Arduino

Рисунок 6

Рисунок 7

7
Урок 13

Нам также понадобится библиотека для работы с дис-


плеем I2C. Ее можно найти в дополнительных материа-
лах, а также по ссылке: http://bit.ly/36kGgOm.
Импортируйте Zip-файл. После этого можно присту-
пать к написанию кода. Сперва подключим все необхо-
димые библиотеки, создадим объекты для используемых
компонентов и объявим переменные.

#include <LiquidCrystal_I2C.h>
#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
MFRC522 mfrc522(10, 9);
Servo sg90;
constexpr uint8_t greenLed = 7;
constexpr uint8_t redLed = 6;
constexpr uint8_t servoPin = 8;
constexpr uint8_t buzzerPin = 5;

Кроме того, нужно указать UID вашей метки, кото-


рый мы считали ранее. Поменяйте «29 B9 ED 23» на ваш.
String tagUID = "29 B9 ED 23";

Теперь функция setup():

void setup() {
pinMode(buzzerPin, OUTPUT);
pinMode(redLed, OUTPUT);
pinMode(greenLed, OUTPUT);
sg90.attach(servoPin);
sg90.write(0);
lcd.begin();

8
RFID-замок на Arduino

lcd.backlight();
SPI.begin();
mfrc522.PCD_Init();
lcd.clear();
}

В основном цикле программы выводим на экран со-


общение с просьбой воспользоваться RFID-меткой и про-
веряем, была ли она использована.
void loop() {
lcd.setCursor(0, 0);
lcd.print(“ RFID Door Lock”);
lcd.setCursor(0, 1);
lcd.print(“ Show Your Tag “);
if ( ! mfrc522.PICC_IsNewCardPresent()) {
return;
}
if ( ! mfrc522.PICC_ReadCardSerial()) {
return;
}

Получаем данные метки:

String tag = "";


for (byte i = 0; i < mfrc522.uid.size; i++)
{
tag.concat(String(mfrc522.uid.uidByte[i] <
0x10 ? “ 0” : “ “));
tag.concat(String(mfrc522.uid.uidByte[i], HEX));
}
tag.toUpperCase();

Если данные совпадают с меткой, указанной в коде


выше, выводим на экран соответствующее сообщение

9
Урок 13

и поворачиваем сервопривод. При этом должен мигнуть


зеленый светодиод.
if (tag.substring(1) == tagUID)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“Access Granted”);
lcd.setCursor(0, 1);
lcd.print(“Door Opened”);
sg90.write(90);
digitalWrite(greenLed, HIGH);
delay(3000);
digitalWrite(greenLed, LOW);
sg90.write(0);
lcd.clear();
}

В противном случае выводим сообщение о запрете


доступа, а также должен мигнуть красный светодиод:

else
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“Wrong Tag Shown”);
lcd.setCursor(0, 1);
lcd.print(“Access Denied”);
digitalWrite(buzzerPin, HIGH);
digitalWrite(redLed, HIGH);
delay(3000);
digitalWrite(buzzerPin, LOW);
digitalWrite(redLed, LOW);
lcd.clear();
}
}

10
RFID-замок на Arduino

Протестируем устройство (рис. 8).

Рисунок 8
А вот еще примеры применения использования тех-
нологии RFID в системах умного дома.
■■ Кольцо для открытия замка (рис. 9).

Рисунок 9
11
Урок 13

■■ Сигнализация с RFID (рис. 10).

Рисунок 10

12
RFID-замок на Arduino

13
Урок 13
RFID-замок на Arduino

© Компьютерная Академия «Шаг»


www.itstep.org

Все права на охраняемые авторским правом фото-, аудио- и видеопро-


изведения, фрагменты которых использованы в материале, принадле-
жат их законным владельцам. Фрагменты произведений используются
в иллюстративных целях в объёме, оправданном поставленной задачей,
в рамках учебного процесса и в учебных целях, в соответствии со ст. 1274
ч. 4 ГК РФ и ст. 21 и 23 Закона Украины «Про авторське право і суміжні
права». Объём и способ цитируемых произведений соответствует
принятым нормам, не наносит ущерба нормальному использованию
объектов авторского права и не ущемляет законные интересы автора
и правообладателей. Цитируемые фрагменты произведений на момент
использования не могут быть заменены альтернативными, не охраня-
емыми авторским правом аналогами, и как таковые соответствуют
критериям добросовестного использования и честного использования.
Все права защищены. Полное или частичное копирование материалов
запрещено. Согласование использования произведений или их фраг-
ментов производится с авторами и правообладателями. Согласованное
использование материалов возможно только при указании источника.
Ответственность за несанкционированное копирование и коммерческое
использование материалов определяется действующим законодатель-
ством Украины.

Оценить