Для реализации данного примера нам понадобится:
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
Ну а для наглядной работы смотрите видео :