Advertisement
Double_G

MFRC522 freezing

Apr 30th, 2022
966
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.17 KB | None | 0 0
  1. /*
  2.  * This ESP32 code is created by esp32io.com
  3.  *
  4.  * This ESP32 code is released in the public domain
  5.  *
  6.  * For more detail (instruction and wiring diagram), visit https://esp32io.com/tutorials/esp32-rfid-nfc-door-lock-system
  7.  */
  8.  
  9. #include <SPI.h>
  10. #include <MFRC522.h>
  11.  
  12. #define SS_PIN    21  
  13. #define RST_PIN   22
  14. #define RELAY_PIN 2
  15.  
  16. MFRC522 rfid(SS_PIN, RST_PIN);
  17.  
  18. byte keyTagUID1[4] = {0xff, 0xff, 0xff, 0xff};
  19. byte keyTagUID2[4] = {0xff, 0xff, 0xff, 0xff};
  20.  
  21. void setup() {
  22.   Serial.begin(115200);
  23.   SPI.begin(); // init SPI bus
  24.   rfid.PCD_Init(); // init MFRC522
  25.   pinMode(RELAY_PIN, OUTPUT); // initialize pin as an output.
  26.   digitalWrite(RELAY_PIN, HIGH); // lock the door
  27.  
  28.   Serial.println("Tap an RFID/NFC tag on the RFID-RC522 reader");
  29. }
  30.  
  31. void loop() {
  32.   if (rfid.PICC_IsNewCardPresent()) { // new tag is available
  33.     if (rfid.PICC_ReadCardSerial()) { // NUID has been readed
  34.       MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
  35.  
  36.       if (rfid.uid.uidByte[0] == keyTagUID1[0] &&
  37.           rfid.uid.uidByte[1] == keyTagUID1[1] &&
  38.           rfid.uid.uidByte[2] == keyTagUID1[2] &&
  39.           rfid.uid.uidByte[3] == keyTagUID1[3] ) {
  40.         Serial.println("Access is granted");
  41.         digitalWrite(RELAY_PIN, LOW);  // unlock the door for 2 seconds
  42.         delay(2000);
  43.         digitalWrite(RELAY_PIN, HIGH); // lock the door
  44.       }
  45.       else
  46.       if (rfid.uid.uidByte[0] == keyTagUID2[0] &&
  47.           rfid.uid.uidByte[1] == keyTagUID2[1] &&
  48.           rfid.uid.uidByte[2] == keyTagUID2[2] &&
  49.           rfid.uid.uidByte[3] == keyTagUID2[3] ) {
  50.         Serial.println("Access is granted");
  51.         digitalWrite(RELAY_PIN, LOW);  // unlock the door for 2 seconds
  52.         delay(2000);
  53.         digitalWrite(RELAY_PIN, HIGH); // lock the door
  54.       }
  55.       else
  56.       {
  57.         Serial.print("Access denied, UID:");
  58.         for (int i = 0; i < rfid.uid.size; i++) {
  59.           Serial.print(rfid.uid.uidByte[i] < 0x10 ? " 0" : " ");
  60.           Serial.print(rfid.uid.uidByte[i], HEX);
  61.         }
  62.         Serial.println();
  63.       }
  64.  
  65.       rfid.PICC_HaltA(); // halt PICC
  66.       rfid.PCD_StopCrypto1(); // stop encryption on PCD
  67.     }
  68.   }
  69. }
  70.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement