Управление сервоприводом с помощью RFID-карты на Arduino

1. Введение

Современные системы безопасности часто используют RFID-технологии для контроля доступа. В этом проекте мы рассмотрим создание системы на базе Arduino, которая управляет сервоприводом при помощи RFID-карты. Эта система позволяет управлять доступом, например, к двери или замку, с помощью уникального идентификатора карты.

2. Необходимые компоненты

Для реализации проекта потребуются следующие компоненты:

  • Arduino Uno

  • RFID-модуль (RC522)

  • Сервопривод

  • Зуммер

  • Соединительные провода

3. Подключение компонентов

RFID-модуль:

  • SDA подключаем к пину 10 на Arduino.

  • SCK подключаем к пину 13 на Arduino.

  • MOSI подключаем к пину 11 на Arduino.

  • MISO подключаем к пину 12 на Arduino.

  • IRQ не используется.

  • GND подключаем к GND на Arduino.

  • RST подключаем к пину 9 на Arduino.

  • 3.3V подключаем к 3.3V на Arduino.

Сервопривод:

  • Сигнальный провод сервопривода подключаем к цифровому пину 6 на Arduino.

  • Питание (VCC) подключаем к 5V на Arduino.

  • GND сервопривода подключаем к GND на Arduino.

Зуммер:

  • Плюсовой вывод зуммера подключаем к пину 5 на Arduino.

  • Минусовой вывод зуммера подключаем к GND на Arduino.

4. Установка библиотек

Для работы с RFID-модулем и сервоприводом нам понадобятся следующие библиотеки:

  • MFRC522: библиотека для работы с RFID-модулем MFRC522.

  • Servo: библиотека для управления сервоприводами.

Установить их можно через Arduino IDE:

  1. Откройте Arduino IDE.

  2. Перейдите в Скетч -> Подключить библиотеку -> Управление библиотеками.

  3. Найдите и установите библиотеки MFRC522 и Servo.

5. Код программы

Ниже приведен код, который нужно загрузить в Arduino для работы системы:

#include <Servo.h>
#include <SPI.h>
#include <MFRC522.h> // библиотека "RFID".
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);
unsigned long uidDec, uidDecTemp;  // для храниения номера метки в десятичном формате
Servo servo;
void setup() {
  Serial.begin(9600);
  Serial.println("Waiting for card...");
  SPI.begin();  //  инициализация SPI / Init SPI bus.
  mfrc522.PCD_Init();     // инициализация MFRC522 / Init MFRC522 card.
  servo.attach(6);
  servo.write(0);  // устанавливаем серву в закрытое сосотояние
}
void loop() {
  // Поиск новой метки
  if ( !mfrc522.PICC_IsNewCardPresent()) {
    return;
  }
  // Выбор метки
  if ( !mfrc522.PICC_ReadCardSerial()) {
    return;
  }
  uidDec = 0;
  // Выдача серийного номера метки.
  for (byte i = 0; i < mfrc522.uid.size; i++)
  {
    uidDecTemp = mfrc522.uid.uidByte[i];
    uidDec = uidDec * 256 + uidDecTemp;
  }
  Serial.println("Card UID: ");
  Serial.println(uidDec); // Выводим UID метки в консоль.
  if (uidDec == 1765925400) // Сравниваем Uid метки, если он равен заданому то серва открывает.
  {
    tone(5, 200, 500); // Делаем звуковой сигнал, Открытие
    servo.write(90); // Поворациваем серву на угол 90 градусов(Отпираем какой либо механизм: задвижку, поворациваем ключ и т.д.)
    delay(3000); // пауза 3 сек и механизм запирается.
    tone(5, 500, 500); // Делаем звуковой сигнал,  Закрытие
  }
  servo.write(0);  // устанавливаем серву в закрытое сосотояние
}

6. Объяснение кода

  • Инициализация переменных и настроек:

    • #define SS_PIN 10 и #define RST_PIN 9 задают пины для подключения RFID-модуля.

    • MFRC522 mfrc522(SS_PIN, RST_PIN); создает объект для работы с RFID-модулем.

    • unsigned long uidDec, uidDecTemp; переменные для хранения UID метки.

  • Функция setup():

    • Serial.begin(9600); инициализирует сериализацию для вывода данных в монитор порта.

    • SPI.begin(); инициализирует шину SPI.

    • mfrc522.PCD_Init(); инициализирует RFID-модуль.

    • servo.attach(6); подключает сервопривод к пину 6.

    • servo.write(0); устанавливает сервопривод в закрытое состояние.

  • Функция loop():

    • Проверяет наличие новой RFID-карты с помощью mfrc522.PICC_IsNewCardPresent().

    • Считывает UID карты с помощью mfrc522.PICC_ReadCardSerial().

    • Конвертирует UID карты в десятичный формат и выводит его в консоль.

    • Если UID совпадает с заданным (1765925400), сервопривод открывается на 90 градусов и через 3 секунды возвращается в закрытое состояние, сопровождаемое звуковыми сигналами зуммера.

7. Заключение

Этот проект демонстрирует, как использовать RFID-технологии для управления сервоприводом с помощью Arduino. Такая система может быть использована для различных целей, включая контроль доступа, автоматизацию замков и другие задачи, требующие аутентификации и выполнения механических действий. Создание подобных проектов помогает лучше понять работу с микроконтроллерами и развивает навыки программирования и электроники.