Главная chevron_right Наши уроки chevron_right Arduino chevron_right Урок 10. Контроль доступа. RFID-rc522 + Servo + Arduino

Урок 10. Контроль доступа. RFID-rc522 + Servo + Arduino

Собираем простую систему контроля доступа на Arduino: RFID-модуль RC522 считывает метку, сервопривод отпирает замок, а зуммер подаёт звуковой сигнал. Разбираем подключение и скетч

Видео-обложка запускается при наведении

В данном уроке мы научимся делать простую систему, которая будет отпирать замок по электронному ключу (Метке).

В дальнейшем Вы можете доработать и расширить функционал. Например, добавить функцию "добавление новых ключей и удаления их из памяти". В базовом случае рассмотрим простой пример, когда уникальный идентификатор ключа предварительно задается в коде программы.

В этом уроке нам понадобится:

Для реализации проекта нам необходимо установить библиотеки:

Сборка:

1) RFID-модуль RC522 подключается к arduino проводами Папа-Мама в следующей последовательности:

MFRC522Arduino UnoArduino MegaArduino Nano v3Arduino Leonardo/MicroArduino Pro Micro
RST95D9RESET/ICSP-5RST
SDA(SS)1053D101010
MOSI11 (ICSP-4)51D11ICSP-416
MISO12 (ICSP-1)50D12ICSP-114
SCK13 (ICSP-3)52D13ICSP-315
3.3V3.3V3.3VСтабилизатор 3,3ВСтабилизатор 3,3ВСтабилизатор 3,3В
GNDGNDGNDGNDGNDGND

Более подробно о подключении Rfid модуля.

2) Теперь нужно подключить Зуммер, который будет подавать сигнал, если ключ сработал и замок открывается, а второй сигнал, когда замок закрывается.

Зуммер подключаем в следующей последовательности:

ArduinoЗуммер
5VVCC
GNDGND
pin 5IO

3) В роли отпирающего механизма будет использоваться сервопривод. Сервопривод может быть выбран любой, в зависимости от требуемых вам размеров и усилий, который создает сервопривод. У сервопривода имеется 3 контакта:

ArduinoСервопривод
5V *Красный (Центральный)
GNDЧерный или Коричневый (Левый)
pin 6Белый или Оранжевый (Правый)

*Сервопривод рекомендуется питать от внешнего источника питания, если запитать сервопривод от ардуины, то могут возникнуть помехи и перебои в работе arduino. Организовать это можно с помощью источника питания 9V и комбинированного стабилизатора 5V ,3.3V.

Более наглядно Вы можете посмотреть, как мы подключили все модули на картинке ниже:

Контроль доступа. RFID-rc522 Servo 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 == 3763966293) // Сравниваем Uid метки, если он равен заданому то серва открывает.
  {
    tone(5, 200, 500); // Делаем звуковой сигнал, Открытие
    servo.write(90); // Поворациваем серву на угол 90 градусов(Отпираем какой либо механизм: задвижку, поворациваем ключ и т.д.)
    delay(3000); // пауза 3 сек и механизм запирается.
    tone(5, 500, 500); // Делаем звуковой сигнал,  Закрытие
  }
  servo.write(0);  // устанавливаем серву в закрытое сосотояние
}

Разберем скетч более детально:

Для того, что бы узнать UID карточки(Метки), необходимо записать данный скетч в arduino, собрать схему, изложенную выше, и открыть Консоль (Мониторинг последовательного порта). Когда вы поднесете метку к RFID, в консоли выведется номер

Полученный UID необходимо ввести в следующую строчку:

if (uidDec == 3763966293) // Сравниваем Uid метки, если он равен заданному то сервопривод открывает задвижку.

У каждой карточки данный идентификатор уникальный и не повторяется. Таком образом, когда вы поднесете карточку, идентификатор которой вы задали в программе, система откроет доступ с помощью сервопривода.

Видео:

Комплект для повторения проекта

Что понадобится

Это быстрый ориентир по основным модулям и деталям. Полный список для повторения проекта смотрите в самой статье.

10 позиций
RFID-модуль RC522 (13,56 МГц) RFID-модуль RC522 Открыть в iArduino Соединительные провода «папа-мама» (40 шт. / 20 см) Шлейф из 40 проводов «папа-мама» длиной 20 см для прототипирования электронных устройств Открыть в iArduino Соединительные провода «папа-папа» (40 шт. / 20 см) Шлейф из 40 проводов «папа-папа» длиной 20 см для прототипирования электронных устройств Открыть в iArduino Соединительные провода «папа-папа» (65 шт.) Пучок из 65 проводов «папа-папа» разной длины для прототипирования электронных устройств Открыть в iArduino Arduino Uno R3 (USB ATmega16U2) Платформа c микроконтроллером ATmega328P на ядре AVR с чипом USB ATmega16U2 для разработки электронных устройств на языке C++ Открыть в iArduino Arduino Mega 2560 R3 (USB ATmega16U2) Платформа c микроконтроллером ATmega2560 на ядре AVR с чипом USB ATmega16U2 для разработки электронных устройств на языке C++ Открыть в iArduino Arduino Nano (USB FT232 / С ногами) Платформа c микроконтроллером ATmega328 на ядре AVR с чипом USB FT232 для разработки электронных устройств на языке C++ Открыть в iArduino Arduino Leonardo Платформа c микроконтроллером ATmega32U4 на ядре AVR для разработки электронных устройств на языке C++ Открыть в iArduino Стабилизатор питания 3.3V AMS1117 Стабилизатор 3,3В Открыть в iArduino Источник питания на 9В. 1А. Источник питания 9 вольт, 1 ампер, центр положительный, DC jack 5,5*2,5 мм Открыть в iArduino
Все уроки Arduino