- Предназначение дубликатора домофонных ключей
- Библиотека MFRC522
- Вход по пропускам
- Принцип работы дубликатора на Ардуино
- Запись и чтение пользовательских данных
- Необходимые материалы
- Создание дубликатора своими руками
- Arduino Uno (DIP версия)
- Аппаратная часть
- Программная часть
- RC522 – RFID-модуль 13.56 МГц + карта + брелок
- Подключение к плате ESP32
- Функции библиотеки
- Шлейф проводов «Папа — Мама» (20см, 40шт.)
- Прозрачная макетная плата на 400 точек (breadboard)
Предназначение дубликатора домофонных ключей
Используя микроконтроллер 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, дубликатора ключей внутренней связи, вам потребуются следующие компоненты:
- Arduino Nano.
- RFID RC522.
- Пьезоэлектрический зуммер.
- 2x светодиодный монитор.
- 2х 330 резисторов.
- Клавиатура 4 × 4.
- Адаптер I2C для LCD.
- LCD16X2BL.
Создание дубликатора своими руками
ЖК-дисплей имеет 16 контактов, что слишком много для домофона Arduino Nano, поэтому важно иметь адаптер I2C. Это позволяет вам управлять дисплеем с помощью всего двух сигнальных контактов на Arduino. Это полезно из-за небольшого количества контактов, которые необходимо контролировать MCU.
LCD контакты
ЖК-дисплеи имеют параллельный интерфейс, что означает, что микроконтроллер должен одновременно управлять несколькими контактами интерфейса для управления дисплеем. В таблице ниже представлено описание каждого из контактов на английском языке:
Характеристики контактов
Во-первых, давайте подключим ЖК-дисплей к I2C. Для этого требуется адаптер I2C LCD (LCD1602). Адаптер преобразует ЖК-дисплей 16 x 2 в ЖК-дисплей с последовательным интерфейсом I2C, которым можно управлять через Arduino с помощью всего 2 проводов.
Соединения между Arduino и LCD
Arduino Uno (DIP версия)
Аппаратная часть
Чтобы ввести код, вам понадобится библиотека LiquidCrystal_I2C.h в среде Arduino IDE. Библиотека позволяет подключать ЖК-дисплей к Arduino. Встроенная библиотека LiquidCrystal_I2C упрощает отображение символов на ЖК-дисплее.
Вы можете скачать LiquidCrystal_I2C.h с нашего сайта здесь или с Github — https://github.com/todeilatiberia/SmartDoor.
Следуйте приведенным ниже инструкциям, чтобы установить новую библиотеку в среду разработки Arduino.
- Сначала загрузите файлы с Github.
- Извлеките каждую папку из архивов.
- Скопируйте zip-файлы в папку Arduino.
- Откройте Arduino и добавьте Keypad.zip:
Меню эскиза -> Включить библиотеку -> Добавить библиотеку ZIP - Добавить библиотеку клавиатуры:
Эскиз -> Включить библиотеку -> Клавиатура
Программная часть
Мы подключим клавиатуру для отображения чисел на ЖК-дисплее для 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 МГц + карта + брелок
Тестирование и настройка готового дупликатора
Для описанного выше проекта вам понадобится специальный футляр, чтобы аккуратно разместить все компоненты и сохранить их в целости.
Вы можете создать корпус с помощью 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шт.)
Прозрачная макетная плата на 400 точек (breadboard)
Читайте также: Подключение адресной светодиодной ленты к Arduino