Учебное пособие по блокировке RFID для Arduino
Компоненты и расходные материалы
| × | 1 | ||||
| × | 1 |
Приложения и онлайн-сервисы
|
Об этом проекте
Дорогие друзья, добро пожаловать на очередной урок. Это Ник из education8s.tv, и сегодня мы узнаем, как использовать этот RFID-считыватель с Arduino, чтобы построить простую систему блокировки.
Впервые мы собираемся использовать RFID-метки с Arduino. Я создал простой проект, который считывает уникальный идентификатор (UID) каждой метки RFID, которую мы помещаем рядом с устройством чтения, и отображает его на этом OLED-дисплее. Если UID тега равен предопределенному значению, которое хранится в памяти Arduino, то на дисплее мы увидим сообщение «Разблокировано». Если уникальный идентификатор карты не равен предварительно заданному значению, сообщение о разблокировке не появится. Круто, не правда ли?
Так что давайте начнем!
Шаг 1. Получите все детали
Детали, необходимые для создания этого проекта, следующие:
- Arduino Uno ▶ https://store.arduino.cc/arduino-uno-rev3
- Считыватель RFID ▶ http://educ8s.tv/part/RFID
- OLED-дисплей ▶ http://educ8s.tv/part/OLED096
- Маленькая макетная плата ▶ http://educ8s.tv/part/SmallBreadboard
- Некоторые провода ▶ http://educ8s.tv/part/Wires
Дополнительные детали:
- Powerbank ▶ http://educ8s.tv/part/Powerbank
Общая стоимость проекта составляет около 15 долларов.
Шаг 2. RFID-считыватель RC522
Внутри каждой RFID-метки есть небольшой чип. Если я помещу фонарик под эту RFID-карту, вы увидите небольшой чип и катушку, которая его окружает. В этом чипе нет батареи для получения питания. Он получает питание от считывающего устройства, этого устройства, по беспроводной сети с помощью этой большой катушки. Считыватель может считывать такую RFID карту с расстояния до 20 мм!
Такой же чип присутствует и в RFID-метках цепочки для ключей.
Каждая метка RFID имеет уникальный номер, который ее идентифицирует. Это UID, который мы отображаем на OLED-дисплее. За исключением этого UID, каждый тег может хранить данные. В этом типе карт мы можем хранить до 1К данных! Впечатляет, не правда ли? Сегодня мы не будем использовать эту функцию, но сделаем это в будущем руководстве. Сегодня все, что нас интересует, - это идентифицировать конкретную карту по ее UID. Стоимость считывателя RFID и этих двух карт RFID составляет около 4 долларов.
Шаг 3. OLED-дисплей
Это очень хороший дисплей для использования с Arduino. Это OLED-дисплей, а это значит, что он имеет низкое энергопотребление. Потребляемая мощность этого дисплея составляет около 10-20 мА и зависит от количества освещенных пикселей.
Дисплей имеет разрешение 128х64 точки и имеет крошечные размеры. Есть два варианта отображения. Один из них монохромный, а другой, как тот, который я использую, может отображать два цвета, желтый и синий. Верхняя часть экрана может отображаться только желтым цветом, нижняя часть - только синим.
Этот OLED-дисплей очень яркий и имеет отличную библиотечную поддержку. Adafruit разработала очень хорошую библиотеку для этого дисплея. В дополнение к этому дисплей использует интерфейс I2C, поэтому соединение с Arduino невероятно простое. Вам нужно только подключить два провода, кроме Vcc и GND. Если вы новичок в Arduino и хотите недорогой и простой в использовании дисплей для использования в вашем проекте, начните с дисплея. Это самый простой способ добавить дисплей в ваш проект Arduino. Я подготовил подробное руководство по использованию этого дисплея, которое я приложил к этому руководству.
Шаг 4. Соедините все части
Подключение к плате Arduino Uno очень простое. Для начала подключим питание и ридера, и дисплея.
Будьте осторожны, считыватель RFID должен быть подключен к выходу 3,3 В Arduino Uno, иначе он будет поврежден. Поскольку дисплей также может работать при напряжении 3,3 В, мы подключаем Vcc от обоих модулей к положительной шине макетной платы. Затем эта шина подключается к выходу 3,3 В Arduino Uno. Затем мы подключаем оба GND к шине GND макетной платы. Затем мы подключаем шину GND макета к GND Arduino.
OLED-дисплей - Arduino
Vcc ▶ 3,3 В
ЗЕМЛЯ ▶ ЗЕМЛЯ
SCL ▶ Аналоговый вывод 5
SDA ▶ Аналоговый вывод
Считыватель RFID - Arduino
RST ▶ Цифровой вывод 9
IRQ ▶ Не подключен
MISO ▶ Цифровой контакт 12
MOSI ▶ Цифровой вывод 11
SCK ▶ Цифровой вывод 13
SDA ▶ Цифровой вывод 10
Модуль считывания RFID использует интерфейс SPI для связи с Arduino. Итак, мы собираемся использовать аппаратные выводы SPI Arduino UNO. Вывод RST переходит в цифровой вывод 9. Вывод IRQ остается неподключенным. Вывод MISO переходит к цифровому выводу 12. Вывод MOSI переходит к цифровому выводу 11. Вывод SCK переходит к цифровому выводу 13 и, наконец, вывод SDA переходит к цифровому выводу 10. Вот и все. Считыватель RFID подключен. Теперь нам нужно подключить OLED-дисплей к Arduino с помощью интерфейса I2C. Итак, контакт SCL дисплея переходит к аналоговому выводу 5, а вывод SDA дисплея - к аналоговому выводу 4. Если мы теперь включим проект и поместим RFID-карту рядом с считывателем, мы увидим, что проект работает нормально! Пришло время взглянуть на код проекта.
Шаг 5:Код проекта
Чтобы код проекта скомпилировался, нам нужно включить некоторые библиотеки. В первую очередь нам понадобится библиотека MFRC522 Rfid. Чтобы установить его, перейдите в Скетч -> Включить библиотеки -> Управление библиотеками. Найдите MFRC522 и установите его. Также нам понадобятся библиотека Adafruit SSD1306 и библиотека Adafruit GFX для дисплея. Установите обе библиотеки, выполнив одинаковую процедуру. Библиотека Adafruit SSD1306 нуждается в небольшой модификации. Перейдите в папку Arduino -> Libraries, откройте папку Adafruit SSD1306 и отредактируйте библиотеку Adafruit_SSD1306.h. Строка комментария 70 и строка раскомментирования 69. Наш дисплей имеет разрешение 128x64, это то, что мы здесь определяем. Теперь мы готовы взглянуть на код.
Сначала мы объявляем значение RFID-метки, которое мы хотим, чтобы Arduino распознала. Это массив целых чисел.
int code [] ={69,141,8,136}; // Это сохраненный UID
Затем мы инициализируем считыватель RFID и дисплей.
rfid.PCD_Init (); display.begin (SSD1306_SWITCHCAPVCC, 0x3C);
После этого в функции цикла мы проверяем наличие тега на считывателе каждые 100 мс.
Если на считывателе есть тег, мы читаем его UID и выводим его на дисплей. Затем мы сравниваем UID тега, который мы только что прочитали, со значением, которое хранится в переменной кода. Если значения совпадают, мы отображаем сообщение РАЗБЛОКИРОВАТЬ, иначе мы не отображаем это сообщение.
if (match) {Serial.println ("\ nЯ знаю эту карту!"); printUnlockMessage (); } else {Serial.println ("\ nНеизвестная карта"); }
Конечно, вы можете изменить этот код, чтобы хранить более одного значения UID, чтобы проект мог распознавать больше тегов RFID.
Это всего лишь пример. Как всегда, вы можете найти код проекта в приложении к этому руководству.
RFID.ino
Шаг 6:Заключительные мысли и улучшения
Как видите, при очень низкой стоимости мы можем добавить в наши проекты считыватель RFID. Мы можем легко построить систему безопасности с помощью такого ридера или создать больше интересных проектов.
Мое главное намерение - создать несколько интерактивных игр для детей, используя этот считыватель RFID и множество меток RFID. В следующем видео мы также попытаемся записывать и считывать данные с RFID-метки. На этом этапе я хотел бы услышать ваше мнение об этом считывателе RFID-карт. Планируете ли вы использовать его в каком-либо из ваших проектов? Пожалуйста, размещайте любые комментарии или идеи в разделе комментариев ниже, спасибо!
Код
- RFID.ino
- Фрагмент кода №3
RFID.ino Arduino
Нет предварительного просмотра (только загрузка).
Фрагмент кода № 3 Обычный текст
if (match) {Serial.println ("\ nЯ знаю эту карту!"); printUnlockMessage (); } else {Serial.println ("\ nНеизвестная карта"); }
Производственный процесс
- RFID-замок Arduino с RC522 - протокол MIFARE 13,56 МГц
- Учебное пособие по датчику отпечатков пальцев Arduino
- Учебное пособие по Arduino:мини-пианино
- Идея DIY с RFID
- RFID + реле + RFID код дверного замка =RFID-переключатель ПК!
- HID Prox RFID для Arduino
- Считыватель карт Arduino Ethernet Rfid
- Блокировка / разблокировка ПК с Windows с помощью RFID
- Как многопоточно на Arduino (Учебное пособие по протопоточности)
- Учебник по Arduino 01:Начало работы