Rfid замок на дверь своими руками

Обновлено: 18.05.2024

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

Создадим дверной замок RFID Arduino посредством копирования домофонного ключа. Узнаем о радиочастотной идентификации RFID и используем беспроводную связь.

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

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

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

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

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

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

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

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

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

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

    .
  1. RFID RC522.
  2. Пьезо-зуммер.
  3. 2x LED-монитора.
  4. 2x 330 резистор.
  5. Клавиатура 4 × 4.
  6. Адаптер I2C для ЖК-дисплея.
  7. LCD16X2BL.

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

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

ЖК-контакты

ЖК-контакты

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

Спецификация контактов

Спецификация контактов

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

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

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

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

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

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

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

Мы подключим клавиатуру для отображения номеров на ЖК-дисплее для 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 и звуковым сигналом

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

Код для загрузки на микропроцессор доступен по ссылке:

Тестирование и настройка готового дубликатора

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

Можно разработать корпус с использованием программы SketchUp, которая имеет удобный интерфейс с простыми кнопками, такими как Eraser, Lines и Tape Measure Tool.

Размеры коробки составляют: 120 х 125 х 37 мм.


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

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

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

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

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

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

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

Как пользоваться устройством

Откройте последовательный монитор. Нажмите клавиши. Вы должны заметить, что последовательный монитор сообщает, какой именно ключ пользователь нажал.

Делаем универсальный RFID-ключ для домофонов

Приветствую всех, кого интересует тема электронных ключей-вездеходов. Сам я, по правде сказать, давно не слежу за новостями в этой области. Но свою разработку трёхлетней давности хочу опубликовать, так как она проста в повторении и может быть кому-то интересна. Суть: вместо десятка ключей с кодами-вездеходами и просто кодами, все ключи можно носить в одном небольшом устройстве.




Дисклеймер: повторять — не призываю, за сборку и применение — отвечаете сами, я делюсь информацией исключительно в ознакомительных целях. Например, чтоб помогали компаниям, обслуживающим домофоны, вовремя латать «дыры», если таковые с помощью прибора обнаружатся.

1. Что это такое? Что умеет?

Устройство, которое я собирал в далёком 2017 году, есть ни что иное, как спуфер домофонного RFID-ключа, работающего на частоте 125 кГц. Слово «спуфер» в данном случае означает, что устройство, по сути ключом не являясь, выдаёт себя за него, и домофоны реагируют на это соответствующе.

Прибор умеет транслировать любые коды ключей, которые записаны в его память. Некоторые коды можно найти в Сети по запросу «ключи-вездеходы», их я вставил в прошивку в первую очередь. Но при некотором навыке и желании можно вставить в прошивку коды вообще всех RFID-ключей, которыми вы пользуетесь (если они работают на частоте 125 кГц), и, таким образом, иметь возможность заменить одним прибором связку брелков.

Я знаю, что на просторе Сети гуляет большое количество схем подобных устройств. Моей целью было создать наипростейший вариант из всех доступных. Удалось или нет — судите сами.

2. Какими навыками нужно обладать, чтобы повторить данный проект?

Прежде всего, навыки работы с Arduino: иметь установленную среду разработки, уметь заливать в плату прошивки, устанавливать библиотеки, драйверы, вот это вот всё. Далее. Имеется в проекте место, где без пайки — ну вот никак. Потому — нужны прямые руки и паяльник с расходниками. Уметь читать электрические принципиальные схемы (или их подобия). Ну и навыки программирования на C++, дабы иметь возможность кастомизации прибора. Но это уже опционально.

3. Какие запчасти нужны и как их монтировать?

Не откладывая в долгий ящик - вот схема устройства: Простите за то, что «не по ГОСТ» — я в drawio рисую, ибо единственная бесплатная и удобная альтернатива Visio, а я сейчас только лицензионный софт использую. Но, полагаю, всё и так предельно понятно.


Как видно, BOM для базовой версии выглядит примерно так:

  1. Arduino Nano (или любая другая Дуня, которая под рукой есть);
  2. RFID-ключ формата EM4100 (вместо катушки индуктивности);
  3. n-p-n транзистор (любой какой отыщется, частоты тут не очень высокие);
  4. резистор на 10К;
  5. конденсатор на 560 пФ (лучше SMD, можно прямо в корпус от ключа припаять);
  6. литий-ионный аккумулятор — по вкусу;
  7. три сенсорных кнопки;
  8. OLED-дисплей с I2C интерфейсом;
  9. модуль зарядки для liIon;
  10. повышающий DC-DC преобразователь с выходом 5 В.

Собрать тестовый образец можно и на беспаечной макетке. Особых инструкций тут не требуется, за исключением того, как быть с «индуктивностью». Об этом — поподробнее.


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


Она представляет собой катушку и микросхему памяти с двумя контактными площадками по бокам. Выводы катушки припаяны как раз к этим площадкам. Всё это залито тонким слоем эластичного термополимера (по виду и свойствам похожего на застывший клей B7000). Чтобы добыть катушку, я поступил следующим образом. Взяв канцелярский нож, я аккуратно продавил лезвием текстолит между площадками и микросхемой. Микросхему отделил от катушки и выкинул. Затем паяльником я аккуратно (чтобы не отпаять тонкие проводки катушки) сжёг термополимер над контактными площадками, сделав возможным дальнейшую прозвонку.


Прежде чем паять, следует измерить сопротивление катушки, убедившись, что она не в обрыве. Если всё в порядке, то собирать лучше так: сперва припаять SMD-конденсатор к контактным площадкам (он должен аккуратно поместиться между ними), затем — ножки транзистора и под конец — резистор к базе. Всё это можно аккуратно смонтировать в корпус ключа. Провода «земли» и базы транзистора припаивать в последнюю очередь.


Затем сделать в крышке ключа отверстие под эти провода, и закрыть брелок, придав ему почти что первозданный вид. Для сборки на беспаечной макетке к проводам следует припаять штырьевые разъёмы (или просто хорошенько залудить их, чтобы можно было без проблем вставлять в макетную плату).

4. Прошивка, тест и наладка

Как и обещал, ссылка на репозиторий проекта. Файлы прошивки лежат в папке My_125_kHz_spoofer_v.03.

После сборки и заливки прошивки прибор готов к использованию. Чтобы убедиться в его работоспособности, совсем не обязательно искать домофон — можно обойтись китайским модулем для чтения RFID-ключей, который называется RDM6300 и ещё одной платой Arduino (хотя кому что проще). Прошивку для модуля RDM6300, выдающую транслируемый код ключа в том же формате, в каком он внесён в прошивку спуфера, я также положил в репозиторий проекта. Схема подключения ридера — там же.

Порядок тестирования с помощью ридера RDM6300:

  1. Убедиться, что ридер работает, поднеся к антенне любой из имеющихся в наличии ключей на 125 кГц (данные будут выводиться в COM-порт);
  2. Выбрать в меню спуфера интересующий код ключа;
  3. Поднести антенну к ридеру. Если ридер прочёл тот же ключ, что указан в прошивке — всё получилось! Else — проверяем схему, ищем, где ошибка, устраняем её и начинаем с пункта 1.

5. Что в прошивке можно менять, а что — лучше не трогать

Поскольку лепилась прошивка на основе вот этого, не вполне понятного для меня кода, то жизненно-необходимые функции, которые менять нельзя вот прям совсем, я вынес в отдельную вкладку functions.ino. Остальная часть программы служит исключительно для предоставления пользователю комфортной возможности вызвать функцию EmulateCard (ну, и нескольких строчек кода перед ней).

Свои ключи можно добавлять в массив uint64_t universalID[], расположенный на 75 строке кода. Поскольку я не «задефайнил» общее количество ключей в памяти устройства, а некоторые функции завязаны на эту константу, при добавлении своего ключа следует менять также пределы, в которых находится переменная keyNumber, отвечающая за выбор ключа. Ну и не забывать свой ключ в меню добавлять. В общем, всё сыровато, но при желании, повторюсь, разобраться не трудно.

6. Что в приборе можно было бы доработать

  1. Добавить поддержку ключей iButton (хотя бы самых распространённых от Dallas).
  2. Добавить эмуляцию ключей, работающих на частоте 13,5 МГц (как я понял, либо через ношение перезаписываемой заготовки и модуль RC522, либо технически-сложно, через реальную эмуляцию).
  3. Добавить в прибор ридеры iButton, RDM6300 и RC522, чтобы сделать прибор ещё более универсальным.

7. История создания

Была на дворе осень 2017 года. Будучи студентом второго курса магистратуры, я томился неразрешёнными вопросами самоопределения. Проще говоря, маялся бездельем и искал, чем бы заняться. В итоге решил довести до конца свои старые инженерные проекты в ущерб посещению университета.

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

Днём попасть в подъезд любой многоэтажки труда не составляет никакого — социнженерия из серии «Здравствуйте, соцопрос о качестве работы управляющей компании для название_местной_газеты» отлично работает, да и вообще, в основном жильцы не против, чтобы кто-то заходил в подъезд вместе с ними. Ночью — другое дело. А я любил вылазить на крыши либо на закате, либо ночью… Назрела проблема, которую я и решил вышеописанным способом.

Как я помню, информация о подобных устройствах нашлась не сразу. Гуглёжка по ключевикам «взломщик домофонов» не давала почти ничего. Адекватное стало находиться, когда я чуть-чуть разобрался в технологии RFID, и стал задавать уже более осмысленные вопросы, типа «RFID emulator», «RFID multykey», «RFID spoofer».

В итоге получилось отыскать две приличные англоязычные статьи по теме. В одной автор описывал, как на основе Arduino делался довольно замороченный с аппаратной точки зрения ключик, а во второй — всё то же самое, но без исходников, зато с очень простой аппаратной частью. Справедливо рассудив, что раз и та, и другая схема соединяются с антенной одним пином Arduino, я решил скрестить простое аппаратное решение и открытые исходники. Удалось, пусть и не с первого раза).

На фото в начале данной статьи — далеко не первая версия прибора. Первая была на макетке, и работала через СОМ-порт. Помню, как прохожие всячески давали мне понять, что я выгляжу подозрительно, когда я с раскрытым ноутом стоял у двери многоэтажного дома, и что-то там пиликал в домофоне.

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

Кодовый замок на Arduino за 20 минут


Так уж произошло, что решили мы на работе установить кодовый замок на свою дверь, потому, как постоянно вбегаем – выбегаем из кабинета, дверь в который должна быть закрыта постоянно в отсутствие обитателей. Ключи частенько оказываются забытыми внутри. Вобщем, решили, что кодовый замок это отличный выход.

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

Комплектующие

Arduino UNO = $18
Arduino protoshield + breadboard = $6
L293D = $1
Пучок проводов 30шт для бредборда = $4
2 розетки RJ45 = $4
2 вилки RJ45 = $0.5
актуатор центрального замка = 250 руб.
Геркон = бесплатно оторван от старого окна.
Шпингалет металлический гигантских размеров = бесплатно
Корпус от старого хаба D-LINK из полуторамиллиметрового железа = бесплатно
Блок питания от того же хаба D-LINK на 12 и 5в = тоже бесплатно
Куча винтов и гаечек для крепления всего этого добра к корпусу = 100руб.
Пульт управления от охранной сигнализации = бесплатно.

Итого: $33,5 и 350руб.

Не так уж и мало, скажете вы, и будете, определенно правы, но ведь за удовольствие надо платить! А собрать, что-то своими руками всегда приятно. К тому-же конструкцию можно сильно удешевить, если использовать голый МК без Arduino.

Подготовка к сборке

Хочется несколько слов сказать о покупке ключевого элемента конструкции актуатора. В местном авто-магазине мне предложили актуаторы двух видов: «с двумя проводами и с пятью». Со слов продавщицы они были абсолютно одинаковыми и различие в количестве проводов не значило абсолютно ничего. Однако, как оказалось позже, это не так! Я выбрал девайс с двумя проводами, он питался от 12в. В конструкции с пятью проводами установлены концевые выключатели, что позволяет контролировать движение рычага. Понял, что купил не тот я только когда разобрал его и менять его было поздно. Ход рычага оказался слишком коротким, чтобы нормально задвинуть щеколду, поэтому, необходимо было немного его доработать, а именно удалить две резиновые шайбы укорачивающие ход рычага актуатора. Для этого корпус пришлось распилить вдоль обычной ножовкой, потому, что вторая шайба находилась внутри. Синяя изолента нам, как всегда помогла нам в дальнейшем при сборке его назад.
Для управления мотором актуатора был использован драйвер моторов L293D, который выдерживает пиковую нагрузку до 1200 мА, у нас при остановке двигателя актуатора пиковая нагрузка вырастала всего до 600 мА.
Из пульта управления от охранной сигнализации были выведены контакты с клавиатуры, динамика и двух светодиодов. Пульт и основное устройство предполагалось соединить с помощью витой пары и RJ45 разъемов

Программирование.

Так, как опыта программирования Arduino у меня не было до сих пор. Я воспользовался чужими наработками и статьями с сайта arduino.cc. Кому интересно, может поглядеть этот безобразный код :)

Фото и видео



Ардуино и актуатор



Блок питания



Клавиатурка



Шпингалет (соединен с актуатором металлической спицей и на которую надета термоусадка для красоты)

Делаем RFID-замок с использованием Arduino

Сегодня урок о том как использовать RFID-ридер с Arduino для создания простой системы блокировки, простыми словами - RFID-замок.

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

Замок закрыт


Замок открыт


Шаг 1: Детали, комплектующие


Детали, необходимые для создания этого проекта:

  • Аккумулятор (powerbank)

Общая стоимость комплектующих проекта составила примерно 15 долларов.

Шаг 2: RFID-считыватель RC522


Тот же чип существует и в тегах RFID-брелка.

Каждый тег RFID имеет уникальный номер, который идентифицирует его. Это UID, который показывается на OLED-дисплее. За исключением этого UID, каждый тег может хранить данные. В этом типе карт можно хранить до 1 тысячи данных. Впечатляет, не так ли? Эта функция не будет использована сегодня. Сегодня все, что интересует, - это идентификация конкретной карты по ее UID. Стоимость RFID-считывателя и этих двух карт RFID составляет около 4 долларов США.

Шаг 3: OLED-дисплей


В уроке используется OLED-монитор 0.96' 128x64 I2C.

Это очень хороший дисплей для использования с Arduino. Это дисплей OLED и это означает, что он имеет низкое энергопотребление. Потребляемая мощность этого дисплея составляет около 10-20 мА, и это зависит от количества пикселей.

Дисплей имеет разрешение 128 на 64 пикселя и имеет крошечный размер. Существует два варианта отображения. Один из них монохромный, а другой, как тот, который использован в уроке, может отображать два цвета: желтый и синий. Верхняя часть экрана может быть только желтой, а нижняя часть - синей.


Этот OLED-дисплей очень яркий и у него отличная и очень приятная библиотека, которую разработала компания Adafruit для этого дисплея. В дополнение к этому дисплей использует интерфейс I2C, поэтому соединение с Arduino невероятно простое.

Вам нужно только подключить два провода, за исключением Vcc и GND. Если вы новичок в Arduino и хотите использовать недорогой и простой дисплей в вашим проекте, начните с этого.

Шаг 4: Соединяем все детали





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

Будьте осторожны, считыватель RFID должен быть подключен к выходу 3,3 В от Arduino Uno или он будет испорчен.

Так как дисплей также может работать на 3,3 В, мы подключаем VCC от обоих модулей к положительной шине макета. Затем эта шина подключается к выходу 3,3 В от Arduino Uno. После чего соединяем обе земли (GND) с шиной заземления макета. Затем мы соединяем GND-шину макета с Arduino GND.

OLED-дисплей → Arduino

SCL → Аналоговый Pin 5

SDA → Аналоговый Pin 4

RFID-ридер → Arduino

RST → Цифровой Pin 9

IRQ → Не соединен

MISO → Цифровой Pin 12

MOSI → Цифровой Pin 11

SCK → Цифровой Pin 13

SDA → Цифровой Pin 10

Модуль RFID-считывателя использует интерфейс SPI для связи с Arduino. Поэтому мы собираемся использовать аппаратные штыри SPI от Arduino UNO.

Вывод RST поступает на цифровой контакт 9. Контакт IRQ остается несвязным. Контакт MISO подключается к цифровому выходу 12. Штырь MOSI идет на цифровой контакт 11. Контакт SCK переходит на цифровой контакт 13, и, наконец, вывод SDA идет на цифровой вывод 10. Вот и все.

Считыватель RFID подключен. Теперь нам нужно подключить OLED-дисплей к Arduino, используя интерфейс I2C. Таким образом, вывод SCL на дисплее переходит к аналоговому выводу Pin 5 и SDA на дисплее к аналоговому Pin 4. Если теперь мы включим проект и разместим RFID-карту рядом с ридером, мы увидим, что проект работает нормально.

Шаг 5: Код проекта

Чтобы код проекта был скомпилирован, нам нужно включить некоторые библиотеки. Прежде всего, нам нужна библиотека MFRC522 Rfid.

Чтобы установить её, перейдите в Sketch -> Include Libraries -> Manage libraries (Управление библиотеками). Найдите MFRC522 и установите её.

Нам также нужна библиотека Adafruit SSD1306 и библиотека Adafruit GFX для отображения.

Установите обе библиотеки. Библиотека Adafruit SSD1306 нуждается в небольшой модификации. Перейдите в папку Arduino -> Libraries, откройте папку Adafruit SSD1306 и отредактируйте библиотеку Adafruit_SSD1306.h. Закомментируйте строку 70 и раскомментируйте строку 69, т.к. дисплей имеет разрешение 128x64.

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

Затем мы инициализируем считыватель RFID и дисплей:

После этого в функции цикла мы проверяем тег на считывателе каждые 100 мс.

Конечно, вы можете изменить этот код, чтобы сохранить более 1 значения UID, чтобы проект распознал больше RFID-меток. Это просто пример.

Код проекта:

Шаг 6: Итоговый результат


Как видно из урока - за небольшие деньги можно добавить RFID-ридер в ваши проекты. Можно легко создать систему безопасности с помощью этого ридера или создать более интересные проекты, например, чтобы данные с USB-диска считывались только после разблокировки.

Электронный замок своими руками


Данный проект является модульным, т.е. можно подключать/отключать разные элементы и получить разную функциональность. На картинках выше показан вариант с полной функциональность, а именно:

  • Запирающий механизм. Служит для ОТКРЫТИЯ и ЗАКРЫТИЯ двери. В этом проекте рассмотрено использование трёх разных механизмов:
    • Сервопривод. Бывают большие, бывают маленькие. Очень компактный, и вкупе с тяжёлым засовом – отличный вариант
    • Электропривод замка дверей автомобиля. Большая и мощная штука, но жрёт просто безумные токи
    • Соленоидная щеколда. Хороший вариант, так как сама захлопывается

    В настройках прошивки можно выбрать любой из трёх типов (настройка lock_type)

    • Тактовая кнопка
    • Датчик холла + магнит на самой двери
    • Геркон + магнит на самой двери
    • Горит зелёный — замок ОТКРЫТ. Горит чтобы не забыть закрыть дверь
    • Горит жёлтый — система проснулась и ожидает ввод пароля
    • Мигает красный — сел аккумулятор

    Любой из этих элементов можно исключить из системы:

    • Убираем концевик. В прошивке в настройках тоже его отключаем (настройка tail_button). Теперь чтобы закрыть замок, нужно нажимать кнопку
    • Убираем наружную кнопку. В прошивке в настройках тоже её отключаем (настройка wake_button). Теперь систему не нужно будить, она просыпается сама (потребление энергии чуть больше). А также у нас теперь нет кнопки закрыть на передней части двери, и нужен концевик. Либо замок – щеколда
    • Убираем внутреннюю кнопку. Этот вариант годится для шкафов и сейфов. В настройках ничего менять не нужно
    • Убираем светодиод. В настройках ничего менять не нужно
    • Кнопку сброса доступа можно отпаять после первого использования, либо переписать код под себя

    Версия с кнопкой

    • Дверь закрыта, нажато СНАРУЖИ — проснуться, ждать ввод пароля/RFID метку/электронный ключ/отпечаток пальца
    • Дверь закрыта, система проснулась, ждёт ввод пароля. Время можно настроить (настройка sleep_time)
    • Дверь закрыта, введён пароль/метка/ключ и т.д. — открыть
    • Дверь закрыта, нажато ВНУТРИ — открыть
    • Дверь открыта, нажато СНАРУЖИ — закрыть
    • Дверь открыта, нажато ВНУТРИ — закрыть
    • Дверь открыта, нажат КОНЦЕВИК — закрыть

    В замке предусмотрена работа от аккумулятора в режиме пониженного энергосбережения (включить выключить: настройка sleep_enable), а именно:

    • Просыпаться каждые несколько секунд, следить за СОБЫТИЕМ (опциональный вариант, если снаружи нет кнопки. Включить можно в настройке wake_button)
    • Каждые несколько минут следить за напряжением акума (вкл/выкл настройка battery_monitor)
    • Если акум разряжен (напряжение устанавливается в настройке bat_low):
      • открыть дверь (опционально, можно настроить в прошивке open_bat_low)
      • запретить дальнейшее открытие и закрытие
      • при нажатии на кнопки мигать красным светодиодом
      • перестать следить за СОБЫТИЕМ (т.е. ввод пароля/метка и т.д.)

      Версия с клавиатурой

      Когда система не спит, нажать кнопку смены пароля (скрытая кнопка). Попадаем в режим смены пароля:
      Вводим пароль из цифр (МАКСИМУМ 10 ЦИФР. )

      Когда система не спит (проснулись по кнопки или сон отключен), нажать * для входа в режим ввода пароля
      Если система спит и периодически просыпается проверять СОБЫТИЕ, то нажимаем * и удерживаем, пока не загорится красный светодиод
      Режим ввода пароля:

      Электрический замок с RFID меткой


      Добрый день.
      Был куплен из Китая электрический замок на калитку с RFID метками 125 кГц. Прошло 2 месяца и метки перестали считываться. Электрически сам замок работает.

      Вопрос. Могу ли я сам с этим что то сделать, имея средние познания в электронике и умение держать паяльник, и имея тестер?

      Заранее спасибо за советы.

      Открыл, а внутри вода… Хотя промазывал силиконом…
      Сейчас вытру… А работать будет?

      Замок с электромагнитным управлением на основе Arduino и радиочастотной идентификации (RFID)

      Радиочастотная идентификация (RFID - Radio Frequency Identification) в настоящее время является недорогой технологией, удобной для применения во многих приложениях: контроля доступа, безопасности, определения местоположения людей и транспортных средств и т.д. Вы могли видеть дверные замки с системой радиочастотной идентификации (RFID) во многих отелях, офисах и других учреждениях. Для того чтобы открыть дверь, оборудованную подобной системой, достаточно прислонить карту с RFID меткой к считывателю подобных карт, и после этого дверь откроется. На нашем сайте вы также можете посмотреть и другие проекты, в которых была использована радиочастотная идентификация.

      Внешний вид замка с электромагнитным управлением на основе Arduino и RFID

      В этой статье мы рассмотрим дверной замок (Solenoid Door Lock), который будет открываться с помощью соленоида (электромагнитной катушки), а управляться с помощью платы Arduino и радиочастотной идентификации (RFID). Для обнаружения движений двери в нашем проекте будет использоваться датчик Холла и магнит. Датчик Холла будет размещен на раме двери, а магнит будет размещен на самой двери. Когда магнит и датчик Холла будут близко друг к другу, на выходе датчика Холла будет напряжение низкого уровня (low state) и дверь будет оставаться закрытой, а когда дверь будет открытой, то датчик Холла и магнит будут далеко друг от друга, и на выходе датчика Холла будет напряжение высокого уровня (high state). Мы будем использовать эффект Холла для открытия и закрытия двери автоматически. Более подробно о подключении датчика Холла к плате Arduino можно прочитать в этой статье.

      Необходимые компоненты

      1. Плата Arduino Uno (купить на AliExpress).
      2. RFID-RC522 Module (модуль радиочастотной идентификации) (купить на AliExpress).
      3. Замок с электромагнитным управлением, работающий от 12 В (12v Solenoid Lock) (купить на AliExpress).
      4. Модуль реле (купить на AliExpress).
      5. Датчик Холла (Hall Effect Sensor) (купить на AliExpress).
      6. Резистор 10 кОм (купить на AliExpress).
      7. Зуммер (Buzzer) (купить на AliExpress).

      Замок с электромагнитным управлением

      Замок с электромагнитным управлением (solenoid lock) использует электромеханический блокирующий механизм. Он содержит в своем составе личинку со скошенным концом и монтажный кронштейн. Когда на данный замок подается питание, электрический ток создает магнитное поле, под действием которого личинка втягивается внутрь замка и, таким образом, дверь открывается. Личинка будет оставаться внутри замка до тех пор, пока на замок будет подаваться питание. Когда питание на замок перестает подаваться, личинка выдвигается наружу замка и закрывает дверь. В закрытом состоянии замок не потребляет питания. Внешний вид замка с электромагнитным управлением показан на рисунке ниже. Для управления подобным замком необходим источник питания, который будет выдавать 12V @ 500mA.

      Внешний вид замка с электромагнитным управлением (solenoid lock)

      Схема проекта

      Схема замка с электромагнитным управлением на основе Arduino и радиочастотной идентификации представлена на следующем рисунке.

      Схема замка с электромагнитным управлением на основе Arduino и радиочастотной идентификации

      Соединения между платой Arduino и модулем RFID приведены в таблице ниже. Положительный контакт зуммера подключен к цифровому контакту 4 платы Arduino, а его контакт GND подключен к контакту земли (ground pin) платы Arduino. Резистор 10 кОм подключен между контактами VCC и OUT датчика Холла. Замок с электромагнитным управлением подключен к плате Arduino с помощью модуля реле.

      Модуль RFID Плата Arduino
      SDA Digital 10
      SCK Digital 13
      MOSI Digital 11
      MISO Digital 12
      IRQ не соединен
      GND GND
      RST Digital 9
      3.3V 3.3V
      Датчик Холла Плата Arduino
      5V 5V
      GND GND
      OUT 3

      После пайки компонентов проекта на перфорированной плате у нас получилась конструкция следующего вида:

      Внешний вид конструкции нашего проекта

      Объяснение программы для Arduino

      Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

      В начале программы нам будет необходимо подключить все используемые библиотеки, в нашем случае их всего две – одна для связи по интерфейсу SPI между платой Arduino и модулем RFID, и вторая – непосредственно для работы с модулем RFID. Обе эти библиотеки можно скачать по следующим ссылкам:

      Также в начальной части программы необходимо определить контакты, к которым подключаются зуммер, замок с электромагнитным управлением (Solenoid Lock) и модуль RFID.

      Электронный замок на основе радиочастотных меток (RFID) и Arduino

      Наверняка многие из вас в отелях или где-нибудь в других местах уже встречались с электронными замками, которые можно открыть с помощью карты с радиочастотной идентификацией (RFID), без использования привычного механического ключа. Чтобы открыть такую дверь надо просто приложить карту к специальному считывающему устройству на двери – если код на карте разрешенный, то дверь откроется, если нет – дверь останется закрытой. В большинстве случаев механизм электронных замков в таких системах работает от напряжения 12 В, поэтому вы легко можете сконструировать такой замок для своего дома – и эта статья имеет целью научить вас делать это.

      Внешний вид проекта электронного замка на основе радиочастотных меток (RFID) и Arduino

      В этой статье мы рассмотрим создание электронного замка на основе платы Arduino и модуля считывания радиочастотных меток, который будет открывать дверь только если к нему поднесена правильная карта. Если карта будет неправильная, то замок не откроется и прозвучит предупреждающий сигнал зуммера. Если до этого вы никогда не сталкивались с радиочастотной идентификацией, то советуем вам прочитать статью о подключении к Arduino модуля радиочастотных меток.

      Необходимые компоненты

      1. Плата Arduino Uno (купить на AliExpress).
      2. Модуль чтения радиочастотных меток EM-18 с картами (с метками) (купить на AliExpress).
      3. Реле 5v.
      4. Светодиод (купить на AliExpress).
      5. Зуммер (Buzzer) (купить на AliExpress).
      6. Соединительные провода.
      7. Резисторы (купить на AliExpress).

      Внешний вид электронного замка на основе радиочастотных меток

      Схема проекта

      Схема электронного замка на основе радиочастотных меток (RFID) и Arduino представлена на следующем рисунке.

      Схема электронного замка на основе радиочастотных меток (RFID) и Arduino
      Модуль чтения радиочастотных меток EM-18 (RFID Reader)

      На нашем сайте вы можете посмотреть следующие проекты, в которых использовалась радиочастотная идентификация:

      На выход модуль EM-18 выдает данные в формате ASCII, 12 цифр. Первые 10 из этих 12 цифр представляют собой номер карты, а последние две цифры – результат выполнения операции XOR с номером карты. Они используются для проверки на ошибки.

      Вид снаружи и внутри модуля чтения радиочастотных меток EM-18

      Внешний вид карт с радиочастотными метками

      К примеру, мы считали с карты число 0200107D0D62 . Оно расшифровывается следующим образом:
      02 – преамбула,
      00107D0D – 1080589 в десятичном формате,
      62 – результат выполнения операции XOR (02 XOR 00 XOR 10 XOR 7D XOR 0D).

      Следовательно, на карте будет написан номер 0001080589 .

      Объяснение кода программы для Arduino

      Полный код программы приведен в конце статьи, здесь же мы рассмотрим его наиболее важные фрагменты.

      Номер радиочастотной метки (RFID tag number) мы будем сохранять в переменной “char tag”. К примеру, мы в нашем проекте использовали карту с номером метки "180088F889E1". Длина метки – 12 символов, поэтому нам необходимо объявить массив длиной 12 символов - “char input [12]”.

      Самодельный дверной замок с доступом по брелку RFID


      Электромагнитные замки все чаще используются в различных помещениях. В сочетании с клавиатурой или считывателем RFID-карт они представляют собой удобное решение, которое позволяет предоставить доступ к определенным комнатам выбранным людям. Давайте соберём такую схему сами и проверим ее работоспособность.

      Требования к проекту электрозамка

      1. Блокировка доступа в помещение для посторонних лиц,
      2. Возможность назначить доступ нескольким людям сразу,
      3. Быстрая реакция на RFID-метку,
      4. Сигнал состояния замка с помощью светодиодов.

      В основе проекта будет миниатюрная отладочная плата Arduino Pro Mini. Плата из-за небольших размеров поместится в компактный корпус, но прототип будет выполнен на Arduino Uno. Для того чтобы закрыть комнату, будем использовать готовый модуль электромагнита, который легко прикручивается к любой поверхности, что значительно облегчит работу. Электромагнит будет управляться реле, которое получит сигнал от Arduino, но для того чтобы авторизация была возможна, нужно прочитать идентификатор RFID-метки. Читаем с помощью модуля RC522. Вот список компонентов для сборки:

      • Arduino Uno R3
      • Arduino Pro Mini 5 В / 16 МГц
      • Блок питания 12 В для питания всей схемы
      • Разъём для подключения схемы к источнику питания 12 В
      • Электромагнит 12 В для закрывания двери
      • Модуль реле для управления магнитом
      • Модуль RC522 с дополнительными метками
      • Светодиод RGB с общим катодом
      • Резисторы 220 Ом 3 шт.

      Сборка прототипа замка на макетке

      Вначале не используем реле и электромагнит; поставим светодиод для индикации состояний. Подключение должно выглядеть как на рисунке ниже:

      Самодельный дверной замок с доступом по брелку RFID

      • SDA -> Контакт 10
      • SCK -> Контакт 13
      • MOSI -> Контакт 11
      • MISO -> Контакт 12
      • IRQ -> Не подключать
      • GND -> GND
      • RST -> Контакт 9
      • 3,3 В -> 3,3 В Arduino.

      Чтобы предоставить доступ к определенным RFID-меткам, необходимо знать их ID. Он индивидуален для каждой карты. Вероятность встретить один и тот же идентификатор близка к нулю. Идентификатор можно прочитать с помощью только что собранной схемы.

      В коде есть два места для ввода идентификатора. Если хотим добавить еще несколько меток, нужно скопировать весь условный оператор и изменить только идентификатор, который подставляем для сравнения.

      digitalWrite (8, HIGH); // Включаем реле

      digitalWrite (7, LOW); // Устанавливаем на вывод 7 низкий уровень, светодиод перестает светить красным

      digitalWrite (6, HIGH); // Подать напряжение на контакт 6, светодиод загорится зеленым

      delay (10000); // Замок разблокирован на 10 секунд

      digitalWrite (8, LOW); // Отключаем реле

      digitalWrite (6, LOW); // Установить вывод 6 на низкий уровень, светодиод перестанет светиться зеленым

      digitalWrite (7, HIGH); // Подаем напряжение на вывод 7, светодиод становится красным

      >

      Полезное: Электронный резистор для вентилятора автомобиля

      Самодельный дверной замок с доступом по брелку RFID

      Просто нужно помнить, что реле работает с другим напряжением чем модуль RFID, поэтому не можем подключить оба модуля к одному разъему питания. Реле понадобится соедиинять следующим образом:

      1. VCC —-> 5 В
      2. SIG —-> Контакт 8
      3. GND —-> GND

      Подключение электромагнита к замку

      Самодельный дверной замок с доступом по брелку RFID

      Теперь можем переходить к подключению. Надо подсоединить все это, как показано на рисунке, помня что электромагнит должен быть запитан от +12 В.

      Сборка компонентов на печатной плате

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

      • Печатная плата
      • Arduino Pro Mini
      • Блок питания 12 В
      • Разъем постоянного тока
      • Электромагнит 12 В
      • Модуль RC522
      • Реле HLS8L-DC5V-SC
      • Резистор 4,7 кОм 2 шт.
      • 1N5819 диоды
      • Конденсатор 100 нФ
      • Стабилизатор напряжения 5 В
      • 2-контактные разъемы ARK 2 шт.
      • BC557C транзистор
      • RGB-диоды с общим катодом

      Элементы крепятся к плате как показано на картинке и припаиваются. В дополнение к припаянным элементам устанавливаем Pro Mini и RC522 с помощью разъемов. Вся плата должна выглядеть так:

      Самодельный дверной замок с доступом по брелку RFID

      Расположение электроники в корпусе

      Самодельный дверной замок с доступом по брелку RFID

      Урок 10. Контроль доступа. RFID-rc522 + Servo + Arduino

      В данном уроке мы научимся делать простую систему, которая будет отпирать замок по электронному ключу (Метке).


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

      В этом уроке нам понадобится:

      Для реализации проекта нам необходимо установить библиотеки:

      Сборка:

      1) RFID-модуль RC522 подключается к arduino проводами Папа-Мама в следующей последовательности:

      MFRC522 Arduino Uno Arduino Mega Arduino Nano v3 Arduino Leonardo/Micro Arduino Pro Micro
      RST 9 5 D9 RESET/ICSP-5 RST
      SDA(SS) 10 53 D10 10 10
      MOSI 11 (ICSP-4) 51 D11 ICSP-4 16
      MISO 12 (ICSP-1 ) 50 D12 ICSP-1 14
      SCK 13 (ICSP-3) 52 D13 ICSP-3 15
      3.3V 3.3V 3.3V Стабилизатор 3,3В Стабилизатор 3,3В Стабилизатор 3,3В
      GND GND GND GND GND GND

      2) Теперь нужно подключить Зуммер, который будет подавать сигнал, если ключ сработал и замок открывается, а второй сигнал, когда замок закрывается.

      Зуммер подключаем в следующей последовательности:

      Arduino Зуммер
      5V VCC
      GND GND
      pin 5 IO

      3) В роли отпирающего механизма будет использоваться сервопривод. Сервопривод может быть выбран любой, в зависимости от требуемых вам размеров и усилий, который создает сервопривод. У сервопривода имеется 3 контакта:

      Arduino Сервопривод
      5V * Красный (Центральный)
      GND Черный или Коричневый (Левый)
      pin 6 Белый или Оранжевый (Правый)

      *Сервопривод рекомендуется питать от внешнего источника питания, если запитать сервопривод от ардуины, то могут возникнуть помехи и перебои в работе arduino. Организовать это можно с помощью источника питания 9V и комбинированного стабилизатора 5V ,3.3V.

      Более наглядно Вы можете посмотреть, как мы подключили все модули на картинке ниже:

      Контроль доступа. RFID-rc522 Servo Arduino

      Теперь, если все подключено, то можно переходить к программированию.

      Скетч:

      Разберем скетч более детально:

      Для того, что бы узнать UID карточки(Метки), необходимо записать данный скетч в arduino, собрать схему, изложенную выше, и открыть Консоль (Мониторинг последовательного порта). Когда вы поднесете метку к RFID, в консоли выведется номер


      Полученный UID необходимо ввести в следующую строчку:

      У каждой карточки данный идентификатор уникальный и не повторяется. Таком образом, когда вы поднесете карточку, идентификатор которой вы задали в программе, система откроет доступ с помощью сервопривода.

      Читайте также: