СКУД на Ардуино: копирование домофонных ключей и подключение RFID-замка

Вопросы и ответы

Предназначение дубликатора домофонных ключей

Используя микроконтроллер Arduino, вы можете скопировать ключ внутренней связи, если случайно потеряете его.

RFID означает радиочастотную идентификацию. Устройство выполняет ту же функцию, что и штрих-код или магнитная полоса на обратной стороне кредитной карты. Предоставляет уникальный идентификатор для этого объекта. И точно так же, как штрих-код или магнитная полоса, RFID необходимо сканировать для получения информации.

RFID используется в этом проекте для чтения данных с RFID-меток и отправки информации в энергонезависимую память MCU.

Идентификатор, считанный тегами, сравнивается с сохраненной информацией и, если он совпадает, дверь открывается.

Библиотека MFRC522

Установите версию MFRC522 (домашняя страница) через диспетчер библиотек).

Библиотека включает несколько примеров, а также компонент для Fritzing. Для первого знакомства запустите скетч DumpInfo. В комментариях указаны варианты подключения разных карт. Стандартный вариант для Arduino Uno / Nano.

Когда вы поднесете карту к дверному монитору, вы увидите большую таблицу данных. Дождитесь полной загрузки данных и обратите внимание на данные в блоке 0 — там вы можете увидеть идентификатор.

Но нет необходимости вручную считывать информацию из массива данных, идентификатор можно получить с помощью вызова функции. В начале стоит отдельная строка Card UID: 77 E7 BC 3A.

Возьмем упрощенный пример. Суть в следующем. Инициализируем объект класса MFRC522 и проверяем различные условия. Если карта не поднесена к считывателю, то выходим из функции loop (), если не можем прочитать карту, то также выходим из функции. Если оба условия все же соблюдаются (есть карта и данные с нее), то выполняем требуемый код.

Носим карту и брелок из комплекта (MIFARE 1 КБ), а также транспортные карты Москвы (MIFARE Ultralight или Ultralight C). Идентификатор карты отображается в десятичном формате.

Вход по пропускам

Каждая вкладка имеет собственный идентификатор, который можно найти после наброска библиотеки DumpInfo. Запоминаем идентификатор и пишем наш скетч для проверки. Если идентификатор совпадает, отображается сообщение (включить светодиод, открыть ворота и т.д.). Если идентификатор не совпадает, отображается запрещающее сообщение. Даем карточку с правом доступа коту (вешаем на шею) и проверяем.

Программа не пустила меня к себе на порог, а вот кота пустили. «Умный дом» — угроза человечеству.

Принцип работы дубликатора на Ардуино

Каждый ключ имеет внутреннее соединение с дверью домофона — этот номер служит идентификатором ключа. Этот номер ключа внутренней связи определяет, правильно ли вы добавили ключ. Поэтому принцип работы дубликатора ключей домофона на Arduino довольно прост: сначала нужно проверить «разрешенный» ключ, затем присвоить такой же номер другому ключу-клону.

Проверяя номер из своей базы данных разрешенной скорости передачи, он откроет дверь. Ключи внутренней связи, которые мы будем подключать к дупликатору Arduino (иногда называемому iButton или Touch Memory), считываются и записываются на 1-проводном интерфейсе. Поэтому схема подключения очень проста.

Запись и чтение пользовательских данных

Давайте посмотрим на два примера, включенных в библиотеку: rfid_write_personal_data и rfid_read_personal_data. Они позволяют записывать, а затем читать данные с карты.

Сначала загрузите скетч для записи данных. После перепрошивки подносим карту к считывателю; в дверном мониторе предлагается ввести фамилию, которую необходимо дополнить решёткой. После успешного ввода вам необходимо ввести имя и еще раз с последним символом решетки.

Затем прошиваем доску вторым примером и снова приносим карту. Считыватель прочитает данные и передаст их на дверной монитор.

Необходимые материалы

Для создания проекта Arduino, дубликатора ключей внутренней связи, вам потребуются следующие компоненты:

  1. Arduino Nano.
  2. RFID RC522.
  3. Пьезоэлектрический зуммер.
  4. 2x светодиодный монитор.
  5. 2х 330 резисторов.
  6. Клавиатура 4 × 4.
  7. Адаптер I2C для LCD.
  8. LCD16X2BL.

Создание дубликатора своими руками

ЖК-дисплей имеет 16 контактов, что слишком много для домофона Arduino Nano, поэтому важно иметь адаптер I2C. Это позволяет вам управлять дисплеем с помощью всего двух сигнальных контактов на Arduino. Это полезно из-за небольшого количества контактов, которые необходимо контролировать MCU.

LCD контакты

ЖК-дисплеи имеют параллельный интерфейс, что означает, что микроконтроллер должен одновременно управлять несколькими контактами интерфейса для управления дисплеем. В таблице ниже представлено описание каждого из контактов на английском языке:

Характеристики контактов

Во-первых, давайте подключим ЖК-дисплей к I2C. Для этого требуется адаптер I2C LCD (LCD1602). Адаптер преобразует ЖК-дисплей 16 x 2 в ЖК-дисплей с последовательным интерфейсом I2C, которым можно управлять через Arduino с помощью всего 2 проводов.

Соединения между Arduino и LCD

Arduino Uno (DIP версия)

Плата Arduino Uno (официальная версия)

Аппаратная часть

Чтобы ввести код, вам понадобится библиотека LiquidCrystal_I2C.h в среде Arduino IDE. Библиотека позволяет подключать ЖК-дисплей к Arduino. Встроенная библиотека LiquidCrystal_I2C упрощает отображение символов на ЖК-дисплее.

Вы можете скачать LiquidCrystal_I2C.h с нашего сайта здесь или с Github — https://github.com/todeilatiberia/SmartDoor.

Следуйте приведенным ниже инструкциям, чтобы установить новую библиотеку в среду разработки Arduino.

  1. Сначала загрузите файлы с Github.
  2. Извлеките каждую папку из архивов.
  3. Скопируйте zip-файлы в папку Arduino.
  4. Откройте Arduino и добавьте Keypad.zip:
    Меню эскиза -> Включить библиотеку -> Добавить библиотеку ZIP
  5. Добавить библиотеку клавиатуры:
    Эскиз -> Включить библиотеку -> Клавиатура

Программная часть

Мы подключим клавиатуру для отображения чисел на ЖК-дисплее для Arduino и скопируем ключ, который мы вводим с клавиатуры.

Keypad.h — это библиотека, которая позволяет Arduino читать клавиатуру матричного типа.

В этом проекте используется клавиатура 4×4.

В таблице показано подключение платы Arduino к клавиатуре. Контакты клавиатуры подключены к цифровым выходным контактам Arduino. Вывод D6 использовался для зуммера, потому что это был вывод ШИМ.

Штырь для клавиатуры Штырь Arduino

1 Re2
2 RE3
3 D4
4 D5
5 A0
6 RE7
7 D8

Связь между Arduino, ЖК-дисплеем и клавиатурой
ЖК-дисплей и клавиатура подключены к Arduino

Итак, давайте добавим RFID. В этом случае карта RFID использует протокол связи SPI, в котором Arduino будет действовать как ведущее устройство, а считыватель RFID — как ведомое устройство. Кардридер и метки предназначены для связи на частоте 13,56 МГц.

Это важный шаг, поскольку он помогает нам считывать данные с карты и определять, соответствует ли идентификатор информации, хранящейся в EEPROM. Если он совпадает, он предоставит нам доступ и отобразит «Разблокировано». В противном случае на ЖК-дисплее отобразится «Заблокировано».

Следующий шаг — добавить зуммер и 2 светодиода для имитации системы контролируемого доступа. Взгляните на схему ниже. Зуммер настроен на звуковой сигнал каждый раз, когда мы получаем доступ (разблокирован). Красный светодиод всегда горит в заблокированном состоянии, но зеленый светодиод горит в разблокированном состоянии.

Для защиты модулей нужно использовать 3D-печать корпуса. Если у вас нет 3D-принтера, вы можете просто использовать пластиковый корпус, в который можно поместить все компоненты. Это очень полезно, потому что модули будут размещены внутри, а единственными частями из коробки будут светодиоды, клавиатура и ЖК-дисплей.

Схема подключения, показывающая соединение между Nano, ЖК-дисплеем, клавиатурой, RFID и звуковым сигналом

RC522 – RFID-модуль 13.56 МГц + карта + брелок

RFID-модуль RC522 + карта + брелок
Тестирование и настройка готового дупликатора

Для описанного выше проекта вам понадобится специальный футляр, чтобы аккуратно разместить все компоненты и сохранить их в целости.

Вы можете создать корпус с помощью SketchUp, который имеет интуитивно понятный интерфейс с простыми кнопками, такими как Ластик, Линии и Инструмент рулетки.

Размеры коробки: 120 х 125 х 37 мм.

Если вы новичок в Sketchup, вам необходимо ознакомиться со следующими руководствами по SketchUp:

Коробка для корпуса устройства (вид сверху)
Коробка для корпуса устройства (вид снизу)

Прежде чем разрабатывать кейс для проекта, следует учесть следующие аспекты:

  • Вид сверху:
    • 2 отверстия для светодиодов (5,2 мм).
    • 1 для ЖК-дисплея (42,2 x 7,3 мм).
    • 1 отверстие для кабеля (16 x 10,5 мм).
  • Вид снизу:
    • 1 отверстие для клавиатуры (27 × 10 мм).

Далее можно соотнести размеры и соорудить пластиковый корпус. Также вы можете изменить дизайн по своему усмотрению.

Все тело с модулями, расположенными внутри

Подключение к плате ESP32

Плата ESP32 имеет другую распиновку, чем Arduino Uno, поэтому схема подключения будет следующей.

Библиотека MFRC522 должна работать без проблем.

Функции библиотеки

PCD_DumpVersionToSerial () — отправляет версию прошивки считывателя на дверной монитор

PICC_IsNewCardPresent () — Проверяет отправленную метку

PICC_ReadCardSerial () — считывает данные с метки

PICC_DumpToSerial () — загружает данные метки в монитор порта

PICC_GetType () — тип карты

PICC_GetTypeName — имя карты

Купить модуль RC-522 на AliExpress

Шлейф проводов «Папа — Мама» (20см, 40шт.)

Комплект проводов «Папа - Мама», шлейф, 20 см

Прозрачная макетная плата на 400 точек (breadboard)

Доска разделочная прозрачная 400 точек

Читайте также: Подключение адресной светодиодной ленты к Arduino

Оцените статью
Блог про Arduino