Делаем RFID-замок с использованием Arduino
Содержание
- Шаг 1: Детали, комплектующие
- Шаг 2: RFID-считыватель RC522
- Шаг 3: OLED-дисплей
- Шаг 4: Соединяем все детали
- Шаг 5: Код проекта
- Шаг 6: Итоговый результат
Сегодня урок о том как использовать RFID-ридер с Arduino для создания простой системы блокировки, простыми словами — RFID-замок.
В уроке будет использоваться RFID-метка с Arduino. Устройство читает уникальный идентификатор (UID) каждого тега RFID, который мы размещается рядом со считывателем, и отображает его на OLED-дисплее. Если UID тега равен предопределенному значению, которое хранится в памяти Arduino, тогда на дисплее мы увидим сообщение «Unlocked» (англ., разблокировано). Если уникальный идентификатор не равен предопределенному значению, сообщение "Unlocked" не появится — см. фото ниже.
Замок закрыт
Замок открыт
Шаг 1: Детали, комплектующие
Детали, необходимые для создания этого проекта:
Общая стоимость комплектующих проекта составила примерно 15 долларов.
Шаг 2: RFID-считыватель RC522
В каждой метке RFID есть небольшой чип (на фото белая карточка). Если направить фонарик на эту RFID-карту, можно увидеть маленький чип и катушку, которая его окружает. У этого чипа нет батареи для получения мощности. Он получает питание от считывателя беспроводным образом используя эту большую катушку. Можно прочитать RFID-карту, подобную этой, с расстояния до 20 мм.
Тот же чип существует и в тегах RFID-брелка.
Каждый тег RFID имеет уникальный номер, который идентифицирует его. Это UID, который показывается на OLED-дисплее. За исключением этого UID, каждый тег может хранить данные. В этом типе карт можно хранить до 1 тысячи данных. Впечатляет, не так ли? Эта функция не будет использована сегодня. Сегодня все, что интересует, — это идентификация конкретной карты по ее UID. Стоимость RFID-считывателя и этих двух карт RFID составляет около 4 долларов США.
Шаг 3: OLED-дисплей
В уроке используется OLED-монитор 0.96′ 128×64 I2C.
Это очень хороший дисплей для использования с Arduino. Это дисплей OLED и это означает, что он имеет низкое энергопотребление. Потребляемая мощность этого дисплея составляет около 10-20 мА, и это зависит от количества пикселей.
Дисплей имеет разрешение 128 на 64 пикселя и имеет крошечный размер. Существует два варианта отображения. Один из них монохромный, а другой, как тот, который использован в уроке, может отображать два цвета: желтый и синий. Верхняя часть экрана может быть только желтой, а нижняя часть — синей.
Этот OLED-дисплей очень яркий и у него отличная и очень приятная библиотека, которую разработала компания Adafruit для этого дисплея. В дополнение к этому дисплей использует интерфейс I2C, поэтому соединение с Arduino невероятно простое.
Вам нужно только подключить два провода, за исключением Vcc и GND. Если вы новичок в Arduino и хотите использовать недорогой и простой дисплей в вашим проекте, начните с этого.
Шаг 4: Соединяем все детали
Связь с платой 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, т.к. дисплей имеет разрешение 128×64.
Сначала мы объявляем значение метки RFID, которую должен распознать Arduino. Это массив целых чисел:
Затем мы инициализируем считыватель RFID и дисплей:
После этого в функции цикла мы проверяем тег на считывателе каждые 100 мс.
Если на считывателе есть тег, мы читаем его UID и печатаем его на дисплее. Затем мы сравниваем UID тега, который мы только что прочитали, со значением, которое хранится в кодовой переменной. Если значения одинаковы, мы выводим сообщение UNLOCK, иначе мы не будем отображать это сообщение.
Конечно, вы можете изменить этот код, чтобы сохранить более 1 значения UID, чтобы проект распознал больше RFID-меток. Это просто пример.
Код проекта:
Шаг 6: Итоговый результат
Как видно из урока — за небольшие деньги можно добавить RFID-ридер в ваши проекты. Можно легко создать систему безопасности с помощью этого ридера или создать более интересные проекты, например, чтобы данные с USB-диска считывались только после разблокировки.
Источник: