
Для реализации данного примера нам понадобится:
Arduino leonardo: http://ali.pub/27l76l
Или Arduino pro micro: http://ali.pub/27l7fj
Контактные провода : http://ali.pub/1th4xf
Rc522: http://ali.pub/26gq1k
Прежде чем приступить к материалу, я Вас попрошу, если нравится то, что я делаю и хотите следить за моей деятельностью, то рекомендую подписаться на мой телеграмм канал: https://t.me/ypavla
Там я публикую новости о вышедших видео, статьях и разные устройства для умного дома и не только показываю.
Спасибо за внимание, теперь продолжим.
Для начала давайте разберемся что за модуль RC522. Это модуль считывания авторизационных карт (пропусков) Данный модуль можно использовать в Системах контроля доступом, собственно для этого мы его и используем.
Характеристики (от продавца):
— Напряжение: 3.3В
— Потребляемый ток в активном состоянии:13-26 мА
— Потребляемый ток в состоянии ожидания: 10-13 мА
— Ток в режиме сна: менее 80 мкА
— Пиковое потребление: менее 30 мА
— Рабочая частота: 13.56 МГц
— Поддержвиаемые типы карт: MIFARE S50, MIFARE S70, MIFARE UltraLight, MIFARE Pro, MIFARE DESfire
— Интерфейс: SPI
— Размеры: 40х60 мм
Данный модуль подключается по шине SPI. Для подключения требуется 7 проводов.
Ну вроде бы все, с модулем разобрались. Давайте теперь перейдем к нашему проекту.
В данной статье мы заставим Arduino leonardo блокировать и разблокировать windows с помощью RFID метки и модуля RC522. Leonardo это будет делать путем имитации клавиатуры и нажатий кнопок и ввода пароля с клавиатуры.
Для начала нам нужно к Arduino leonardo подключить RFID RC522 модуль. Для этого привожу схему из стандартной библиотеки под модуль RC522

Итак из схемы видно как данный модуль RC522 подключать к разным моделям Arduino. Нам же нужно только как подключить к Arduino leonardo. Пины RST и SDA понятно куда подключать к 9 и 10 пинам Arduino, но что же такое ICSP? это специальная гребенка из 8 пинов на ардуино форм фактора “Arduino uno” Давайте посмотрим на них на схеме:

Вот в самом низу платы мы какраз наблюдаем данные пины. Отсчет у этих пинов начинается с правой стороны где точка.

С подключением вроде разобрались, давайте теперь перейдем к самому скетчу.
/*
Material
1pcs Arduino Leonaldo/Micro/Pro Micro
1pcs LED
1pcs Buzzer
1pcs RFID(RC522)
2pcs RFID Card
RFID(RC522)Aruino Library Download Link → https://github.com/miguelbalboa/rfid
============================================================================================
= MFRC522 Arduino Arduino Arduino Arduino Arduino =
= Reader/PCD Uno/101 Mega Nano v3 Leonardo/Micro Pro Micro =
= Signal Pin Pin Pin Pin Pin Pin =
============================================================================================
= RST/Reset RST 9 5 D9 9 RST =
= SPI SS SDA(SS) 10 53 D10 10 10 =
= SPI MOSI MOSI 11 / ICSP-4 51 D11 ICSP-4 16 =
= SPI MISO MISO 12 / ICSP-1 50 D12 ICSP-1 14 =
= SPI SCK SCK 13 / ICSP-3 52 D13 ICSP-3 15 =
= 3.3v 3.3v 3.3v 3.3v 3.3v 3.3v vcc =
= GND GND GND GND GND GND GND =
=============================================================================================
*/
#include "Keyboard.h"
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);
int led = 5;
char st[20];
void setup()
{
pinMode(led, OUTPUT);
Serial.begin(9600);
SPI.begin();
mfrc522.PCD_Init();
Serial.println("...");
Serial.println();
}
void loop()
{
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
Serial.print("UID :");
String conteudo = "";
byte letra;
for (byte i = 0; i < mfrc522.uid.size; i++)
{
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidByte[i], HEX);
conteudo.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
conteudo.concat(String(mfrc522.uid.uidByte[i], HEX));
}
Serial.println();
Serial.print("Check card : ");
conteudo.toUpperCase();
// Проверяет прочитана ли карта
if (conteudo.substring(1) == "57 78 3A D5")
//)Запустите последовательный порт для того чоб узнать UID карты
{
digitalWrite(led, HIGH);
tone(7, 2500, 150);
Keyboard.press(KEY_LEFT_CTRL);
Keyboard.press(KEY_LEFT_ALT);
Keyboard.press(KEY_DELETE);
delay(100);
Keyboard.releaseAll();
delay(200);
digitalWrite(led, LOW);
Keyboard.write(KEY_RETURN);
delay(2000);
//Keyboard.write(KEY_RETURN);
}
// операция с второй картой
if (conteudo.substring(1) == "A6 4B C4 3B")
//)Запустите последовательный порт для того чоб узнать UID карты
{ digitalWrite(led, HIGH);
tone(7, 2500, 150);
Keyboard.write(KEY_RETURN);
delay(1500);
Keyboard.print("password");//Ваш пароль от компьютера
Keyboard.write(KEY_RETURN);
digitalWrite(led, LOW);
}
delay(1000);
}
Главное для редактирования нас интересуют строчки:
if (conteudo.substring(1) == "A6 4B C4 3B")
где в формате HEX вписан UID нашей карты. Его можно узнать просто открыв монитор порта и прислонив карту к модулю RC522.
Ссылочка на файл со скетчем для скачивания:https://yadi.sk/d/Z81IeCHk3Rg7g2
Для тех у кого есть 3d принтер Оставлю еще ссылку на STL файл для распечатывания корпуса под это все дело: https://yadi.sk/d/iV1U59RD3Rg7ux
Ну а для наглядной работы смотрите видео :