Создание надежного RFID-замка на Arduino — пошаговое руководство
Компоненты и материалы
- Arduino UNO — 1 шт.
- RFID-считыватель RC522 — 1 шт.
- OLED-дисплей 0.96" (128×64, I2C) — 1 шт.
- Макетная плата (breadboard) — 1 шт.
- Провода перемычки — комплект
- Опционально: Powerbank для автономного питания
Примерная стоимость проекта — около $15.
Приложения и онлайн-сервисы
- Arduino IDE — для написания и загрузки кода
О проекте
В этом руководстве мы создадим простую систему электронного замка, использующую RFID-метки. Arduino считывает уникальный идентификатор (UID) метки, приближенной к считывателю RC522, и отображает его на OLED-дисплее. Если UID совпадает с заранее заданным значением в памяти Arduino, на экране появляется сообщение «Unlocked» (Открыто). В противном случае доступ запрещен.
Шаг 1: Подготовка компонентов
Вам понадобятся перечисленные выше детали. RFID-считыватель RC522 поставляется обычно с двумя метками: картой и брелоком. Обе содержат чип с уникальным UID и памятью на 1 Кбайт (в этом проекте память не используется).
Шаг 2: Принцип работы RFID-считывателя RC522
В каждой RFID-метке находится миниатюрный чип и антенная катушка. Чип не имеет собственного питания — он получает энергию от считывателя по индукции через катушку. Расстояние считывания составляет до 20 мм. Каждая метка имеет уникальный 4-байтовый UID, который мы и будем использовать для идентификации.
Шаг 3: OLED-дисплей 128×64 (I2C)
Этот дисплей на контроллере SSD1306 потребляет всего 10–20 мА, имеет высокий контраст и подключается всего по двум сигнальным проводам (SDA, SCL) благодаря интерфейсу I2C. Существует двухцветная версия (желтый/синий) и монохромная. Для работы используется библиотека Adafruit_SSD1306 и Adafruit_GFX.
Шаг 4: Подключение всех модулей
Важно: RFID-модуль RC522 работает от 3.3 В. Подача 5 В приведет к его выходу из строя. OLED-дисплей также совместим с 3.3 В, поэтому оба модуля запитываем от вывода 3.3V Arduino.
Схема подключения:
| Модуль | Вывод | Arduino UNO |
|---|---|---|
| OLED (I2C) | VCC | 3.3V |
| GND | GND | |
| SCL | A5 (Analog Pin 5) | |
| SDA | A4 (Analog Pin 4) | |
| RC522 (SPI) | RST | D9 |
| IRQ | Не подключен | |
| MISO | D12 | |
| MOSI | D11 | |
| SCK | D13 | |
| SDA (SS) | D10 | |
| VCC | 3.3V | |
| GND | GND |
Шаг 5: Программный код
Для компиляции требуются библиотеки:
- MFRC522 (устанавливается через менеджер библиотек)
- Adafruit_SSD1306 и Adafruit_GFX
В библиотеке Adafruit_SSD1306 нужно отредактировать файл Adafruit_SSD1306.h: закомментировать строку 70 и раскомментировать строку 69 (определение разрешения 128×64).
Основные фрагменты кода:
// Заданный UID разрешенной метки (пример)
int code[] = {69, 141, 8, 136};
// Инициализация в setup()
rfid.PCD_Init();
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
// В loop() каждые 100 мс проверяем наличие метки
if (rfid.PICC_IsNewCardPresent() && rfid.PICC_ReadCardSerial()) {
// Сравниваем UID с эталоном
bool match = true;
for (byte i = 0; i < 4; i++) {
if (rfid.uid.uidByte[i] != code[i]) { match = false; break; }
}
if (match) {
Serial.println("I know this card!");
printUnlockMessage(); // Вывод "Unlocked" на дисплей
} else {
Serial.println("Unknown Card");
}
}
Полный скетч (RFID.ino) доступен в разделе «Code» проекта. Вы можете расширить массив code для хранения нескольких разрешенных UID.
Шаг 6: Заключение и идеи для улучшения
Проект демонстрирует низкобюджетное внедрение RFID в DIY-системы безопасности. На этой базе можно построить:
- Контроллер доступа с логированием событий на SD-карту
- Интерактивные игры для детей с множеством RFID-меток
- Систему учета рабочего времени (см. проект ID 1010016367)
- Чтение/запись пользовательских данных в память метки (1 КБ)
Стоимость компонентов минимальна, а возможности — огромны. Экспериментируйте!
Производственный процесс
- Надёжный RFID-замок на Arduino с RC522 (MIFARE 13.56 МГц) и сервоприводом
- Проект датчика отпечатков пальцев на Arduino Nano – Пошаговое руководство
- Создание мини-пианино на Arduino UNO — пошаговое руководство
- Создание портативного RFID-замка на Arduino — пошаговое руководство
- Защита ПК RFID-замком на реле: Arduino-проект
- Интеграция HID Prox RFID (Wiegand) с Arduino UNO — пошаговое руководство
- Сетевой RFID-считыватель на Arduino, ENC28J60 Ethernet и MFRC522
- RFID-замок для Windows: мгновенная блокировка/разблокировка ПК
- Мастер-класс по многопоточности Arduino с протопотоками: пошаговое руководство
- Урок Arduino для начинающих 01: Начало работы с первым проектом