Hi...this is the automation project
Part of it is to make automatic door lock system using arduino uno , relay 1 channel , solenoid lock, rfid reader ( rc522), lcd 16*2 with i2c
Currently I have completed the circuit...but the rfid reader could not read the tag...In serial monitor it is showing "Firmware is unknown.Scan PICC to see UID"....the uno is working properly ....Any solution pls
Code:
#include <SPI.h>
#include <MFRC522.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define SS_PIN 10
#define RST_PIN 9
#define LED_G 5 //define green LED pin
#define LED_R 4 //define red LED
#define RELAY 3 //relay pin
#define BUZZER 2 //buzzer pin
#define ACCESS_DELAY 2000
#define DENIED_DELAY 1000
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.
void setup()
{
Serial.begin(9600); // Initiate a serial communication
SPI.begin(); // Initiate SPI bus
mfrc522.PCD_Init(); // Initiate MFRC522
pinMode(LED_G, OUTPUT);
pinMode(LED_R, OUTPUT);
pinMode(RELAY, OUTPUT);
pinMode(BUZZER, OUTPUT);
noTone(BUZZER);
digitalWrite(RELAY, HIGH); // Keep relay off initially
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("Put card on rdr");
Serial.println("Put your card to the reader...");
Serial.println();
}
void loop()
{
// Look for new cards
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
// Show UID on serial monitor
Serial.print("UID tag :");
String content= "";
byte letter;
for (byte i = 0; i < mfrc522.uid.size; i++)
{
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidByte[i], HEX);
content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
content.concat(String(mfrc522.uid.uidByte[i], HEX));
}
Serial.println();
Serial.print("Message : ");
content.toUpperCase();
// Corrected UID comparison
if (content == " 14 26 84 7B")
{
Serial.println("Authorized access");
lcd.setCursor(0, 1);
lcd.print("Access Granted");
digitalWrite(RELAY, LOW);
digitalWrite(LED_G, HIGH);
delay(ACCESS_DELAY);
digitalWrite(RELAY, HIGH);
digitalWrite(LED_G, LOW);
}
else
{
Serial.println("Access denied");
lcd.setCursor(0, 1);
lcd.print("Access denied.");
digitalWrite(LED_R, HIGH);
tone(BUZZER, 300);
delay(DENIED_DELAY);
digitalWrite(LED_R, LOW);
noTone(BUZZER);
}
// Clear the second line for the next reading
lcd.setCursor(0, 1);
lcd.print(" ");
// Halt PICC and stop encryption to allow new reads
mfrc522.PICC_HaltA();
mfrc522.PCD_StopCrypto1();
}