В данном уроке мы научимся делать простую систему, которая будет отпирать замок по электронному ключу (Метке).
В дальнейшем Вы можете доработать и расширить функционал. Например, добавить функцию "добавление новых ключей и удаления их из памяти". В базовом случае рассмотрим простой пример, когда уникальный идентификатор ключа предварительно задается в коде программы.
В этом уроке нам понадобится:
- Arduino
- RFID-модуль RC522
- Сервопривод
- Провода Папа-Мама
- Провода Папа-Папа или Набор проводов для макетирования 65 шт.
- Зуммер пьезоэлектрический
- Breadboard
Для реализации проекта нам необходимо установить библиотеки:
Сборка:
1) RFID-модуль RC522 подключается к arduino проводами Папа-Мама в следующей последовательности:
| MFRC522 | Arduino Uno | Arduino Mega | Arduino Nano v3 | Arduino Leonardo/Micro | Arduino Pro Micro |
| RST | 9 | 5 | D9 | RESET/ICSP-5 | RST |
| SDA(SS) | 10 | 53 | D10 | 10 | 10 |
| MOSI | 11 (ICSP-4) | 51 | D11 | ICSP-4 | 16 |
| MISO | 12 (ICSP-1) | 50 | D12 | ICSP-1 | 14 |
| SCK | 13 (ICSP-3) | 52 | D13 | ICSP-3 | 15 |
| 3.3V | 3.3V | 3.3V | Стабилизатор 3,3В | Стабилизатор 3,3В | Стабилизатор 3,3В |
| GND | GND | GND | GND | GND | GND |
Более подробно о подключении Rfid модуля.
2) Теперь нужно подключить Зуммер, который будет подавать сигнал, если ключ сработал и замок открывается, а второй сигнал, когда замок закрывается.
Зуммер подключаем в следующей последовательности:
| Arduino | Зуммер |
|---|---|
| 5V | VCC |
| GND | GND |
| pin 5 | IO |
3) В роли отпирающего механизма будет использоваться сервопривод. Сервопривод может быть выбран любой, в зависимости от требуемых вам размеров и усилий, который создает сервопривод. У сервопривода имеется 3 контакта:
| Arduino | Сервопривод |
|---|---|
| 5V * | Красный (Центральный) |
| GND | Черный или Коричневый (Левый) |
| pin 6 | Белый или Оранжевый (Правый) |
*Сервопривод рекомендуется питать от внешнего источника питания, если запитать сервопривод от ардуины, то могут возникнуть помехи и перебои в работе arduino. Организовать это можно с помощью источника питания 9V и комбинированного стабилизатора 5V ,3.3V.
Более наглядно Вы можете посмотреть, как мы подключили все модули на картинке ниже:
Теперь, если все подключено, то можно переходить к программированию.
Скетч:
#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 метки, если он равен заданному то сервопривод открывает задвижку.
У каждой карточки данный идентификатор уникальный и не повторяется. Таком образом, когда вы поднесете карточку, идентификатор которой вы задали в программе, система откроет доступ с помощью сервопривода.
Видео:


Обсуждение