Модулът RC522 RFID е едно от най-универсалните и популярни устройства за електронни проекти и системи за контрол на достъп. Заедно с платка Arduino позволява четене и запис на информация върху RFID карти и ключодържатели чрез безжична комуникация. Този тип технология е много полезна при проекти за автоматизация, сигурност и мониторинг, като автоматично отваряне на врати или използване на персонализирани системи за идентификация.
В тази статия ще разгледаме подробно как работи модулът RC522, как да го свържете към микроконтролер като Arduino и някои практически примери, които ще ви позволят да извлечете максимума от него. Ако започвате с проекти за RFID, тази статия ще бъде от голяма полза за разбиране на принципите и как да осъществите просто и ефективно внедряване.
Какво е RFID?
RFID (радиочестотна идентификация) е технология, която позволява на четене на етикети или етикети безжично, без необходимост от физически контакт. Тези етикети се предлагат в множество формати, като напр картички, ключодържатели и дори стикери. В зависимост от вида на RFID, те се използват в голямо разнообразие от приложения: от контрол на достъпа до сгради до управление на инвентара.
RFID четецът действа като a изпращач-получател на радиочестотни сигнали. Когато RFID таг е близо до четеца, той реагира, като изпраща информацията, съхранена в паметта му. Когато работите с модул като RC522, можете да използвате тази информация, за да извършвате различни действия във вашия проект, като разрешаване на достъп до врата или регистриране на влизане на хора.
Модулът RC522
RC522 модул Той е един от най-популярните RFID четци поради своята простота и гъвкавост. Работи в 13.56 MHz честота и позволява четене и писане на информация в етикети, съвместими с този стандарт.
RC522 комуникира с микроконтролера чрез протокола SPI, което означава, че е съвместим не само с Arduino, но и с други системи като PIC и Raspberry Pi. Освен това има a диапазон на четене около 5 до 7 см, което е повече от достатъчно за повечето проекти за контрол на достъпа.
Свързване на RC522 RFID модул с Arduino
Едно от големите предимства на RC522 е колко лесно е да го свържете към Arduino. Първото нещо, което трябва да направим, е да се уверим, че всички щифтове на модула са правилно свързани към съответните щифтове на Arduino. Ето таблица с връзките:
RC522 модул | Arduino Uno/По-големият брат | Мега Ардуино |
---|---|---|
SDA (SS) | 10 | 53 |
SCK | 13 | 52 |
МОСИ | 11 | 51 |
Мишо | 12 | 50 |
IRQ | Не е свързан | Не е свързан |
GND | GND | GND |
RST | 9 | 9 |
3.3V | 3.3V | 3.3V |
Не забравяйте, че модулът RC522 работи с напрежение 3.3V, затова препоръчваме да използвате преобразувател на ниво на напрежение, ако планирате да използвате разширено системата, въпреки че при бързи тестове тя може да работи правилно, свързана директно към Arduino.
Програмиране на RC522 с Arduino
За да работи правилно RC522 с Arduino, трябва да изтеглим и инсталираме съответния RFID книжарница. Един от най-използваните е този, разработен от Мигел Балбоа, който можете да намерите в мениджъра на библиотеката Arduino IDE.
След като библиотеката е инсталирана, ето прост пример за код за четене на UID (уникален идентификатор) на RFID карта:
#включи #включи #define RST_PIN 522 #define SS_PIN 9 MFRC10 mfrc522(SS_PIN, RST_PIN); void setup() { Serial.begin(522); SPI.begin(); mfrc9600.PCD_Init(); Serial.println("Прочетете UID"); } void loop() { if ( mfrc522.PICC_IsNewCardPresent()) { if ( mfrc522.PICC_ReadCardSerial()) { Serial.print("UID на картата:"); за (байт i = 522; i < mfrc0.uid.size; i++) { Serial.print(mfrc522.uid.uidByte[i] < 522x0 ? " 10" : " "); Serial.print(mfrc0.uid.uidByte[i], HEX); } Serial.println(); mfrc522.PICC_HaltA(); }} }
Този код чете UID на всяка карта, която носите на четеца, и го отпечатва на серийния монитор.
Използване на RC522 в система за контрол на достъпа
Едно от най-полезните приложения на RFID модула RC522 е в контрол на достъпа. Можете да използвате RFID карти или ключодържатели, за да дадете разрешение за влизане на лице или да активирате/деактивирате системи като аларми или електрически ключалки.
По-долу ви показваме примерен код, модифициращ предишната програма, за да позволи достъп само до предварително оторизирани карти:
байт Потребител1[4] = {0x4B, 0x6D, 0xC8, 0x3A}; байт Потребител2[4] = {0xF2, 0x8A, 0x9D, 0x17}; void loop() { if (mfrc522.PICC_IsNewCardPresent() && mfrc522.PICC_ReadCardSerial()) { if (compareArray(mfrc522.uid.uidByte, User1, 4) || compareArray(mfrc522.uid.uidByte, User2, 4)) { Serial.println("Достъпът е разрешен"); } else { Serial.println("Достъпът е отказан"); } mfrc522.PICC_HaltA(); }}
В този код, ако бъде открита карта с UID, който съвпада с един от съхранените, достъпът се разрешава чрез отпечатване на съобщение. В противен случай достъпът се отказва. Можете да замените тези съобщения, като отпечатате код, който активира цифров изход за отваряне на врата, наред с други функции.