Один из важнейших вопросов при создании умного дома – безопасность. Рассмотрим организацию доступа по технологии RFID с помощью карт доступа.
Радиочастотная RFID — это технология автоматической бесконтактной идентификации объектов при помощи радиочастотного канала связи. Любая RFID-система состоит из:
• RFID-метки;
• считывателя информации (RFID-ридера);
• микроконтроллера или компьютера для дальнейшей обработки информации.
Идентификация объектов производится по уникальному цифровому коду, который считывается из памяти электронной метки, прикрепляемой к объекту идентификации.
Считыватель содержит в своем составе передатчик и антенну, и посылает в эфир электромагнитные сигналы определенной частоты. RFID-метки "отвечают" собственным сигналом, который содержит информацию об идентификационном номере данной метки и данные об объекте, оснащенном данной меткой. Этот сигнал улавливается антенной считывателя, информация расшифровывается и передается для дальнейшей обработки обработки.
В состав набора входит модуль RC522 – RFID-модуль 13.56 МГц с SPI-интерфейсом (см. рис. 6.11). В комплекте к модулю идет 2 RFID-метки — в виде карты и брелока. В RFID-метках, работающих на данной частоте, реализована криптографическая защита, что обеспечивает защиту от копирования и подделки.
Рис. 6.11. RFID-модуль RC522 и RFID-метки.
Основные характеристики:
• Основан на микросхеме MFRC522;
• Напряжение питания: 3.3V;
• Потребляемый ток :13-26mA
• Рабочая частота: 13.56MHz
• Дальность считывания: 0 ~ 60 мм
• Интерфейс: SPI, максимальная скорость передачи 10МБит/с
• Размер: 40мм х 60мм
• Чтение и запись RFID-меток.
Схема подключения модуля к плате Arduino показана на рис. 6.12. При определении RFID-считывателем карты из списка, мы можем отправить сигнал на открытие дверей (например, на электромеханический замок, подключенный через реле).
Рис. 6.12. Схема подключения RFID-модуля к плате Arduino MEGA
Приступим к написанию скетча. Для работы с RFID-модулем RC522 будем использовать библиотеки SPI (встроенная в Arduino IDE) и MFRC522.
#include
#include
Уникальные идентификаторы карт или брелоков, по которым доступен вход запишем в массиве uid_ok:
byte uidok[][4]={
{0x11,0x22,0x33,0x44},
{0x11,0x22,0x33,0x44}
};
Пины для подключения реле:
#define RELAY_RC522_PIN 41
В цикле будем считывать данные с поднесенной карты или брелока, затем проверять uid карты со списком разрешенных uid.
Код скетча представлен в листинге 6.5.
Листинг 6.5
#include <SPI.h>
#include <MFRC522.h>
// пин для подключения реле
#define RELAY_RC522_PIN 41
// уровни для включения/выключения реле
#define RELAY_ON 0
#define RELAY_OFF 1
// Инициализация MFRC522
// константы подключения контактов SS и RST
#define RST_PIN = 5;
#define SS_PIN = 53;
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.
// массив разрешенных uid
byte uidok[][4]={
{0xE0, 0x2A, 0x87, 0x1B},
{0xD9, 0xFA, 0x90, 0x55 }
};
void setup() {
Serial.begin(9600); // инициализация последовательного порта
SPI.begin(); // инициализация SPI
mfrc522.PCD_Init(); // инициализация MFRC522
// сконфигурировать вывод реле как OUTPUT
pinMode(RELAY_RC522_PIN,OUTPUT);
digitalWrite(RELAY_RC522_PIN, RELAY_OFF);
}
void loop() {
if (mfrc522.PICC_IsNewCardPresent()) {
// чтение карты
if ( mfrc522.PICC_ReadCardSerial()) {
// показать результат чтения UID и тип метки
Serial.print(F("Card UID:"));
if(compare_uid(mfrc522.uid.uidByte, mfrc522.uid.size)) {
Serial.println();
Serial.println(" – ok !!");
// включить реле
digitalWrite(RELAY_RC522_PIN, RELAY_ON);
delay(4000);
digitalWrite(RELAY_RC522_PIN, RELAY_OFF);
} else {
Serial.println();
Serial.println(" – false !!");
delay(1000);
}
}
}
}
// поиск считанного uid в списке разрешенных
boolean compare_uid(byte *buffer, byte bufferSize) {
int bytes_ok=0;
for(int i1=0;i1<2;i1++) {
bytes_ok=0;
for (byte i2 = 0; i2 < 4; i2++) {
Serial.print(buffer[i2] < 0x10 ? " 0" : " ");
Serial.print(buffer[i2], HEX);
if(buffer[i2]== uidok[i1][i2]) {
bytes_ok= bytes_ok+1;
}
}
if(bytes_ok==4) {
return true;
}
}
return false;
}
Загрузим данный скетч на плату Arduino MEGA и проверим ограничение доступа работу с помощью RFID (см. рис. 6.13).
Рис. 6.13. Доступ по RFID-картам.
Скачать данный скетч можно на сайте www.arduino-kit.ru по ссылке .