Материалы:
* Arduino Uno
* Модуль RFID RC522
* Ключи RFID (125 кГц или 13,56 МГц)
* Светодиод
* Резистор 220 Ом
Схема подключения:
* VCC модуля RC522 к 5В Arduino
* RST модуля RC522 к пину 9 Arduino
* GND модуля RC522 к GND Arduino
* SDA модуля RC522 к пину A4 Arduino
* SCL модуля RC522 к пину A5 Arduino
* Антенна модуля RC522 к антенне (входит в комплект)
* Светодиод (анод) к пину 13 Arduino через резистор 220 Ом
* Светодиод (катод) к GND Arduino
Код программы:
«`c++
#include
#include
MFRC522 rfid(9, A4, A5);
int ledPin = 13;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
SPI.begin();
rfid.PCD_Init();
}
void loop() {
// Считывание карты RFID
if (rfid.PICC_IsNewCardPresent()) {
if (rfid.PICC_ReadCardSerial()) {
// Печать UID карты
Serial.print(«UID карты: «);
for (byte i = 0; i < rfid.uid.size; i++) {
Serial.print(rfid.uid.uidByte[i] < 0x10 ? "0" : "");
Serial.print(rfid.uid.uidByte[i], HEX);
}
Serial.println();
// Запись ключа
byte key[] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };
byte sector = 1;
byte block = 0;
if (rfid.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, sector, key, &rfid.uid)) {
if (rfid.PCD_WriteBlock(sector, block, key)) {
Serial.println("Ключ записан!");
} else {
Serial.println("Ошибка записи ключа!");
}
} else {
Serial.println("Ошибка аутентификации!");
}
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
}
}
}
```
Описание программы:
* Программа инициализирует модуль RC522 и светодиод.
* В цикле `loop()`:
* Считывается карта RFID.
* Если карта прочитана, печатается ее UID.
* Записывается ключ в первый блок первого сектора карты.
* Если запись выполнена успешно, загорается светодиод на 1 секунду.