Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Дорогие друзья, добро пожаловать в очередной учебник. Это Ник из education8s.tv, и сегодня мы собираемся узнать, как использовать этот считыватель RFID с Arduino, чтобы построить простую систему блокировки.
Впервые мы собираемся использовать RFID-метки с Arduino. Я создал простой проект, который считывает уникальный идентификатор (UID) каждой метки RFID, которую мы помещаем рядом с устройством чтения, и отображает его на этом OLED-дисплее. Если UID тега равен предопределенному значению, которое хранится в памяти Arduino, то на дисплее мы увидим сообщение «Разблокировано». Если уникальный идентификатор карты не равен предварительно заданному значению, сообщение о разблокировке не появится. Круто, не правда ли?
Есть много чего рассказать, так что приступим!
Шаг 1. Получите все детали
Детали, необходимые для создания этого проекта, следующие:
- Arduino Uno ▶
- Считыватель RFID ▶
- OLED-дисплей ▶
- Маленькая макетная плата ▶
- Некоторые провода ▶
Дополнительные детали:
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 Arduino.
OLED-дисплей - Arduino
Vcc ▶ 3,3 В
ЗЕМЛЯ ▶ ЗЕМЛЯ
SCL ▶ Аналоговый вывод 5
SDA ▶ Аналоговый вывод 4
Считыватель 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-тегов.
Это всего лишь пример. Как всегда, вы можете найти код проекта в приложении к этой инструкции.
Шаг 6: Заключительные мысли и улучшения
Как видите, при очень низкой стоимости мы можем добавить в наши проекты считыватель RFID. Мы можем легко построить систему безопасности с помощью такого ридера или построить больше интересных проектов.
Мое главное намерение - создать несколько интерактивных игр для детей, используя этот считыватель RFID и множество меток RFID. В следующем видео мы также попытаемся записывать и считывать данные с RFID-метки. На этом этапе я хотел бы услышать ваше мнение об этом считывателе RFID-карт. Планируете ли вы использовать его в каком-либо из ваших проектов? Пожалуйста, размещайте любые комментарии или идеи в этом разделе комментариев ниже, спасибо!