
Для реализации данного примера нам понадобится:
Arduino nano: http://ali.pub/1x1jri
Контактные провода : http://ali.pub/1th4xf
Rc522: http://ali.pub/26gq1k
Buzzer: http://ali.pub/1hzdau
Прежде чем приступить к материалу, я Вас попрошу, если нравится то, что я делаю и хотите следить за моей деятельностью, то рекомендую подписаться на мой телеграмм канал: 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 проводов.
Ну вроде бы все, с модулем разобрались. Давайте теперь перейдем к нашему проекту.
Проект работает таким образом:
Для начала подключим все по схеме приведенной ниже.

Buzzer здесь используется не активный, но можно использовать и трех пиновый, просто больше проводов займет.
Далее загружаем готовый скетч который приведен ниже, и считываем с помощью RC522 карту, которую будем использовать для авторизации.
/**
* ----------------------------------------------------------------------------
* This is a MFRC522 library example; see https://github.com/miguelbalboa/rfid
* for further details and other examples.
*
* NOTE: The library file MFRC522.h has a lot of useful info. Please read it.
*
* Released into the public domain.
* ----------------------------------------------------------------------------
* This sample shows how to read and write data blocks on a MIFARE Classic PICC
* (= card/tag).
*
* BEWARE: Data will be written to the PICC, in sector #1 (blocks #4 to #7).
*
*
* Typical pin layout used:
* -----------------------------------------------------------------------------------------
* 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 RESET/ICSP-5 RST
* SPI SS 1 SDA(SS) ** custom, take a unused pin, only HIGH/LOW required **
* SPI SS 2 SDA(SS) ** custom, take a unused pin, only HIGH/LOW required **
* 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
*
*/
#include <SPI.h>
#include <MFRC522.h>
#define RST_PIN 9 // Configurable, see typical pin layout above
#define SS_1_PIN 10 // Configurable, take a unused pin, only HIGH/LOW required, must be diffrent to SS 2
#define SS_2_PIN 8 // Configurable, take a unused pin, only HIGH/LOW required, must be diffrent to SS 1
#define OUT_PIN_GREEN 4 // green LED - card OK
#define OUT_PIN_RED 5 // red LED - another card
#define NR_OF_READERS 2
#define BUZZER 3 // buzzer
byte ssPins[] = {SS_1_PIN, SS_2_PIN};
MFRC522 mfrc522[NR_OF_READERS]; // Create MFRC522 instance.
/**
* Initialize.
*/
void setup() {
Serial.begin(9600); // Initialize serial communications with the PC
while (!Serial); // Do nothing if no serial port is opened (added for Arduinos based on ATMEGA32U4)
pinMode (OUT_PIN_GREEN, OUTPUT);
pinMode (OUT_PIN_RED, OUTPUT);
pinMode(BUZZER, OUTPUT);
noTone(BUZZER);
SPI.begin(); // Init SPI bus
for (uint8_t reader = 0; reader < NR_OF_READERS; reader++) {
mfrc522[reader].PCD_Init(ssPins[reader], RST_PIN); // Init each MFRC522 card
}
}
/**
* Main loop.
*/
void loop() {
uint32_t id;
for (uint8_t reader = 0; reader < NR_OF_READERS; reader++) { // Look for new cards if (mfrc522[reader].PICC_IsNewCardPresent() && mfrc522[reader].PICC_ReadCardSerial()) { Serial.print(F(">ID:"));
dump_byte_array(mfrc522[reader].uid.uidByte, mfrc522[reader].uid.size);
Serial.println();
//Serial.print(F("PICC type: "));
MFRC522::PICC_Type piccType = mfrc522[reader].PICC_GetType(mfrc522[reader].uid.sak);
/// Serial.println(mfrc522[reader].PICC_GetTypeName(piccType));
Serial. println (id);
// LED configure
byte uidCard[4] = {0xA6, 0x4B, 0xC4, 0x3B};
for (byte i = 0; i < 4; i++) {
if (uidCard[i] == mfrc522[reader].uid.uidByte[i]) {
digitalWrite (OUT_PIN_GREEN, HIGH);
tone(BUZZER, 2000); // 2KHz sound signal...
delay (400);
noTone(BUZZER); // Stop sound...
digitalWrite (OUT_PIN_GREEN, LOW);
return;
}
else
{
digitalWrite (OUT_PIN_RED, HIGH);
tone(BUZZER, 2000); // 2KHz sound signal...
delay (1500);
noTone(BUZZER); // Stop sound...
digitalWrite (OUT_PIN_RED, LOW);
return;
}
}
}
// Halt PICC
mfrc522[reader].PICC_HaltA();
// Stop encryption on PCD
mfrc522[reader].PCD_StopCrypto1();
} //if (mfrc522[reader].PICC_IsNewC
} //for(uint8_t reader
/**
* Helper routine to dump a byte array as hex values to Serial.
*/
void dump_byte_array(byte *buffer, byte bufferSize) {
for (byte i = 0; i < bufferSize; i++) {
Serial.print(buffer[i] < 0x10 ? " 0" : " ");
Serial.print(buffer[i], HEX);
}
}
В этом скетче нас интересует для изменения только одна строчка:
byte uidCard[4] = {0xA6, 0x4B, 0xC4, 0x3B};
Здесь Нужно прописать свой id карточки, которую можно будет отсканировать этим же скетчем открыв монитор com порта.
id карты высветится в HEX формате. и нужно его записать по группам в этой строчке, при этом оставив в каждой группе “0x”.
После этих манипуляций. загрузим скетч в ардуино и перейдем уже к непосредственной настройке ПК.
Для настройки ПК скачаем Архив: https://yadi.sk/d/dP7POaM23RN7W3
И зайдем в папку RC522WindowsLogon > Setting-PC здесь выберем папку 32 или 64 в зависимости от рязрядности вашей ОС в моем случае 64.
В этой Папке находятся три файла один с расширением .dll и два .txt
Вот файлы с расширением .txt нам и нужно отредактировать.
Сначала откроем первый файл под названием RFIDCredentials.txt Там будет написана строчка ” A6 4B C4 3B|psenyukov|123″
Где ” id карты|логин|пароль” и Важно, что перед id карты стоит пробел, иначе у Вас логиниться не будет. Вообщем исправьте этот файл под свои нужды, а именно введите свой id логин и пароль.
В следующем файле “RFIDCredSettings.txt” нужно только указать правильный номер Com порта к которому у Вас будет подключена Ардуино. Важно понимать, что каждый ЮСБ имеет свой номер СОМ порта при подключенной к нему Ардуино, это нужно выйснить и вписать в Файл.
После всех манипуляций с редактированием файлов, нужно эти три файла .dll и два .txt перенести в C:\Windows\System32
После этого в Папке “RC522WindowsLogon > Setting-PC” есть файлик “Register.reg” его нужно запустить и согласиться со всеми полями предупреждения которые выскочат в последствии.
После этого перезагружаем ПК и у Нас появится еще одна учетная завись “rfid” и мы теперь приложив карточку можем залогинится без ввода пароля.
Ну а для тех кто не внимательно читал и для Визуальной демонстрации Видео :
https://www.youtube.com/watch?v=TTfs9KfgqIc