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