RFID-модуль RC522 — электронный замок (Arduino)

На основе RFID-модуля RC522 можно сделать простой электронный замок который будет управлять работой модуля реле. Принцип работы электронного замка очень прост, RFID-модуль будет считывать серийный номер (UID) RFID-метки которые выполнены в виде карты и брелока. В скетч в виде массива заносятся серийные номера которым разрешен доступ, номера RFID-меток не внесенных в массив будут игнорироваться. Если номер метки имеется в массиве, то сработает реле, время работы реле 5 секунд, после чего электронный замок переходит в режим ожидания.

RFID-модуль 13.56 МГц с SPI-интерфейсом, основные характеристики:

  • Основан на микросхеме MFRC522;
  • Напряжение питания: 3.3V;
  • Потребляемый ток :13-26mA
  • Рабочая частота: 13.56MHz
  • Дальность считывания: 0 ~ 60 мм
  • Интерфейс: SPI, максимальная скорость передачи 10 МБит/с
  • Размер: 40 мм х 60 мм
  • Чтение и запись RFID-меток.

#include <SPI.h>
#include <MFRC522.h>
 
int x;
int uid[4];
int kart[3][4]{ // массив для трех меток
  {
    129, 71, 80,131    }  
  ,
  { 
    16,180,178,181    }
  , 
  {
    162, 91,142, 96    } 
};
 
MFRC522 mfrc522(10,9); //(SS_PIN, RST_PIN)   
 
void setup() {
  Serial.begin(9600);        
  while (!Serial);          
  SPI.begin();              
  mfrc522.PCD_Init();      
  pinMode(3,OUTPUT);
}
 
void loop() {
  if ( ! mfrc522.PICC_IsNewCardPresent() || ! mfrc522.PICC_ReadCardSerial() ) {
    delay(50);
    return;
  }
  Serial.print("UID: ");
  for (byte y = 0; y < (sizeof(kart)/sizeof(int)/4); y++) {
    for (byte i = 0; i < 4; i++) {
      uid[i] = mfrc522.uid.uidByte[i];
      if(uid[i]==kart[y][i]){
        x++;
      }
    } 
    if(x<4){
      x=0;
    }
  }
 
  for (byte i = 0; i < 4; i++) {
    Serial.print(uid[i]);
    Serial.print(" ");
  }
  Serial.println(x);
  Serial.println();
 
  if(x>=4){
    digitalWrite(3,HIGH); 
    tone(4,700,500);
    Serial.println(" ON ");
    Serial.println(" pause 5 sek ");
    delay(5000);
    tone(4,300,100);
    digitalWrite(3,LOW);
    Serial.println(" OFF ");
  }
  else{
    tone(4,300,300);
    Serial.println(" OFF ");
    delay(1000);
  }
  x=0;   
}

int kart[3][4]{ { 129, 71, 80,131 } , { 16,180,178,181 } , { 162, 91,142, 96 } }; — для добавления новых серийных номеров RFID меток используйте массив.

Добавить комментарий

Войти с помощью: