Надёжный RFID-замок на Arduino с RC522 (MIFARE 13.56 МГц) и сервоприводом
Компоненты и материалы
- Arduino UNO — 1 шт.
- RFID-модуль RC522 (MIFARE 13.56 МГц) — 1 шт.
- Сервопривод TG9e — 1 шт.
- Адресуемый RGB-светодиод WS2812 (NeoPixel) — 1 шт. (индикация)
- RFID-метки (карта/брелок) — 2 шт.
О проекте
Простой RFID-замок: при приложении авторизованной метки сервопривод поворачивается на 90° (открывает), зелёный светодиод горит 1 сек, затем запирается. Неавторизованная метка — красная вспышка 0.5 сек. Логи в Serial Monitor (115200 бод).
Схема подключения
- RC522: SDA(SS) → D10, SCK → D13, MOSI → D11, MISO → D12, RQ → не подключён, GND → GND, RST → D9, 3.3V → 3.3V.
- Серво: сигнал → D3, питание → 5V/GND Arduino.
- WS2812: DIN → A0, питание → 5V/GND.
Код (полный)
#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>
#include <Adafruit_NeoPixel.h>
#define LED_PIN A0
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(1, LED_PIN, NEO_GRB + NEO_KHZ800);
#define SERVO_PIN 3
Servo myservo;
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);
void setup() {
Serial.begin(115200);
SPI.begin();
mfrc522.PCD_Init();
Serial.println("For more: https://geek.adachsoft.com");
Serial.println("Arduino RFID lock");
Serial.println("");
myservo.attach(SERVO_PIN);
myservo.write(0);
pixels.begin();
pixels.setPixelColor(0, 32, 32, 32); pixels.show(); delay(500);
pixels.setPixelColor(0, 0, 0, 0); pixels.show();
}
void loop() {
if (!mfrc522.PICC_IsNewCardPresent()) return;
if (!mfrc522.PICC_ReadCardSerial()) return;
String content = "";
for (byte i = 0; i < mfrc522.uid.size; i++) {
content.concat(String(mfrc522.uid.uidByte[i], HEX));
if (i < mfrc522.uid.size - 1) content += "-";
}
content.toUpperCase();
Serial.println();
Serial.println("UID tag: '" + content + "'");
// ЗДЕСЬ ПОДСТАВЬТЕ UID ВАШЕЙ АВТОРИЗОВАННОЙ МЕТКИ
if (content == "77-39-50-39") {
Serial.println("Authorized access");
myservo.write(90);
pixels.setPixelColor(0, 0, 32, 0); pixels.show();
delay(1000);
myservo.write(0);
pixels.setPixelColor(0, 0, 0, 0); pixels.show();
} else {
Serial.println("Access denied");
pixels.setPixelColor(0, 32, 0, 0); pixels.show();
delay(500);
pixels.setPixelColor(0, 0, 0, 0); pixels.show();
}
delay(1000);
}
Настройка
- Установите библиотеки:
MFRC522,Adafruit_NeoPixel(через менеджер библиотек). - Загрузите скетч, откройте Serial Monitor (115200).
- Приложите свою метку — в мониторе появится её UID (например,
77-39-50-39). - Замените в коде строку
if (content == "77-39-50-39")на свой UID. - Перезагрузите Arduino.
Расширения
- Добавьте несколько авторизованных UID (массив строк).
- Используйте реле вместо сервы для управления замком/электромагнитом.
- Добавьте логирование на SD-карту или отправку в MQTT/Telegram.
Производственный процесс
- Создание надежного RFID-замка на Arduino — пошаговое руководство
- Надежная система учета рабочего времени на Arduino с RFID и Python
- Датчик CO2 K30: мониторинг качества воздуха в реальном времени на Arduino
- Устройство для общения глухосліпых людей с помощью 1Sheeld и Arduino
- Умная копилка: управление монетоприёмником на Arduino Nano
- Управление светодиодом по Bluetooth с Arduino: простой DIY-гид
- Интеграция ёмкостного сканера отпечатков DFRobot с Arduino или ESP8266
- Интерактивный HMI-проект на Nextion с Arduino Mega и датчиками
- Роботизированная рука 6 степеней свободы на Arduino Mega с управлением через Nunchuk
- Умная электронная система регистрации посещений для хакерспейсов