Please don't hijack threads @dimas130926 . I have split your post out to its own topic.
Hijacking is against the Arduino forum rules. The reason is that it may sidetrack the discussion, even preventing the creator of the topic from getting the assistance they need. It also reduces your own chances of getting assistance.
This is basic forum etiquette, as explained in the "How to get the best out of this forum" guide. It contains a lot of other useful information. Please read it.
Thanks in advance for your cooperation.
Where did you get the circuit you posted?
A very quick search and I found this in this.https://www.viralsciencecreativity.com/post/arduino-rfid-door-lock-system-with-lcd-display
ok, Thank You
In the Arduino IDE, click on Edit, then Copy for Forum, that will copy your code.
Then come here and just do a paste. Then we can analyse your code.
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 rfid(SS_PIN, RST_PIN); // Instance of the class
int relayPin = 7; // Pin yang terhubung ke relay
// Daftar ID kartu yang diizinkan
String allowedIDs[] = {
"YOUR_RFID_ID_1", // Ganti dengan ID kartu RFID yang valid
"YOUR_RFID_ID_2" // Ganti dengan ID kartu RFID yang valid
};
void setup() {
Serial.begin(9600); // Initialize serial communications
SPI.begin(); // Initialize SPI bus
rfid.PCD_Init(); // Initialize RFID reader
pinMode(relayPin, OUTPUT); // Set pin relay sebagai output
digitalWrite(relayPin, LOW); // Pastikan relay mati
Serial.println("Scan your RFID card...");
}
void loop() {
// Jika ada kartu yang terdeteksi
if (rfid.PICC_IsNewCardPresent() && rfid.PICC_ReadCardSerial()) {
String id = "";
for (byte i = 0; i < rfid.uid.size; i++) {
id += String(rfid.uid.uidByte[i], HEX);
}
id.toUpperCase(); // Ubah ID menjadi huruf besar
Serial.print("ID Kartu: ");
Serial.println(id); // Tampilkan ID di Serial Monitor
// Cek apakah ID ada dalam daftar yang diizinkan
bool accessGranted = false;
for (int i = 0; i < sizeof(allowedIDs) / sizeof(allowedIDs[0]); i++) {
if (id == allowedIDs[i]) {
accessGranted = true;
break;
}
}
if (accessGranted) {
Serial.println("Access Granted");
digitalWrite(relayPin, HIGH); // Nyalakan relay
delay(5000); // Biarkan solenoid aktif selama 5 detik
digitalWrite(relayPin, LOW); // Matikan relay
} else {
Serial.println("Access Denied");
}
delay(2000); // Tunggu 2 detik sebelum membaca kartu lagi
rfid.PICC_HaltA(); // Hentikan kartu
}
}
2nd coding
#include <Wire.h>
#include <SPI.h>
#include <MFRC522.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 16, 2);
#define SS_PIN 10
#define RST_PIN 9
#define LED_G 4 //define green LED pin
#define LED_R 5 //define red LED
#define BUZZER 2 //buzzer pin
#define lock 3
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.
int Btn = 6;
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(BUZZER, OUTPUT);
noTone(BUZZER);
pinMode(Btn,INPUT);
pinMode(lock,OUTPUT);
Serial.println("Place your card on reader...");
Serial.println();
lcd.backlight();
lcd.clear();
lcd.setCursor(0,0); // column, row
lcd.print(" Scan Your RFID ");
lcd.setCursor(0,1); // column, row
lcd.print(" Door Locked ");
}
void loop()
{
if(digitalRead(Btn) == HIGH){
Serial.println("Access Granted");
Serial.println();
delay(500);
digitalWrite(LED_G, HIGH);
lcd.setCursor(0,1); // column, row
lcd.print(" Door Un-Locked ");
tone(BUZZER, 2000);
delay(100);
noTone(BUZZER);
delay(50);
tone(BUZZER, 2000);
delay(100);
noTone(BUZZER);
digitalWrite(lock,HIGH);
delay(3000);
digitalWrite(lock,LOW);
delay(100);
digitalWrite(LED_G, LOW);
lcd.setCursor(0,1); // column, row
lcd.print(" Door Locked ");
tone(BUZZER, 2000);
delay(100);
noTone(BUZZER);
delay(50);
}
// 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();
if (content.substring(1) == "83 23 38 BB") //change here the UID of card/cards or tag/tags that you want to give access
{
Serial.println("Access Granted");
Serial.println();
delay(500);
digitalWrite(LED_G, HIGH);
lcd.setCursor(0,1); // column, row
lcd.print(" Door Un-Locked ");
tone(BUZZER, 2000);
delay(100);
noTone(BUZZER);
delay(50);
tone(BUZZER, 2000);
delay(100);
noTone(BUZZER);
digitalWrite(lock,HIGH);
delay(3000);
digitalWrite(lock,LOW);
delay(100);
digitalWrite(LED_G, LOW);
lcd.setCursor(0,1); // column, row
lcd.print(" Door Locked ");
tone(BUZZER, 2000);
delay(100);
noTone(BUZZER);
delay(50);
}
else
{
lcd.setCursor(0,1); // column, row
lcd.print("Invalid RFID Tag");
Serial.println(" Access denied");
digitalWrite(LED_R, HIGH);
tone(BUZZER, 1500);
delay(500);
digitalWrite(LED_R, LOW);
noTone(BUZZER);
delay(100);
digitalWrite(LED_R, HIGH);
tone(BUZZER, 1500);
delay(500);
digitalWrite(LED_R, LOW);
noTone(BUZZER);
delay(100);
digitalWrite(LED_R, HIGH);
tone(BUZZER, 1500);
delay(500);
digitalWrite(LED_R, LOW);
noTone(BUZZER);
lcd.setCursor(0,1); // column, row
lcd.print(" Door Locked ");
}
}
You did not follow my instructions.
I'm sorry, wait
#include <Wire.h>
#include <SPI.h>
#include <MFRC522.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 16, 2);
#define SS_PIN 10
#define RST_PIN 9
#define LED_G 4 //define green LED pin
#define LED_R 5 //define red LED
#define BUZZER 2 //buzzer pin
#define lock 3
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.
int Btn = 6;
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(BUZZER, OUTPUT);
noTone(BUZZER);
pinMode(Btn,INPUT);
pinMode(lock,OUTPUT);
Serial.println("Place your card on reader...");
Serial.println();
lcd.backlight();
lcd.clear();
lcd.setCursor(0,0); // column, row
lcd.print(" Scan Your RFID ");
lcd.setCursor(0,1); // column, row
lcd.print(" Door Locked ");
}
void loop()
{
if(digitalRead(Btn) == HIGH){
Serial.println("Access Granted");
Serial.println();
delay(500);
digitalWrite(LED_G, HIGH);
lcd.setCursor(0,1); // column, row
lcd.print(" Door Un-Locked ");
tone(BUZZER, 2000);
delay(100);
noTone(BUZZER);
delay(50);
tone(BUZZER, 2000);
delay(100);
noTone(BUZZER);
digitalWrite(lock,HIGH);
delay(3000);
digitalWrite(lock,LOW);
delay(100);
digitalWrite(LED_G, LOW);
lcd.setCursor(0,1); // column, row
lcd.print(" Door Locked ");
tone(BUZZER, 2000);
delay(100);
noTone(BUZZER);
delay(50);
}
// 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();
if (content.substring(1) == "83 23 38 BB") //change here the UID of card/cards or tag/tags that you want to give access
{
Serial.println("Access Granted");
Serial.println();
delay(500);
digitalWrite(LED_G, HIGH);
lcd.setCursor(0,1); // column, row
lcd.print(" Door Un-Locked ");
tone(BUZZER, 2000);
delay(100);
noTone(BUZZER);
delay(50);
tone(BUZZER, 2000);
delay(100);
noTone(BUZZER);
digitalWrite(lock,HIGH);
delay(3000);
digitalWrite(lock,LOW);
delay(100);
digitalWrite(LED_G, LOW);
lcd.setCursor(0,1); // column, row
lcd.print(" Door Locked ");
tone(BUZZER, 2000);
delay(100);
noTone(BUZZER);
delay(50);
}
else
{
lcd.setCursor(0,1); // column, row
lcd.print("Invalid RFID Tag");
Serial.println(" Access denied");
digitalWrite(LED_R, HIGH);
tone(BUZZER, 1500);
delay(500);
digitalWrite(LED_R, LOW);
noTone(BUZZER);
delay(100);
digitalWrite(LED_R, HIGH);
tone(BUZZER, 1500);
delay(500);
digitalWrite(LED_R, LOW);
noTone(BUZZER);
delay(100);
digitalWrite(LED_R, HIGH);
tone(BUZZER, 1500);
delay(500);
digitalWrite(LED_R, LOW);
noTone(BUZZER);
lcd.setCursor(0,1); // column, row
lcd.print(" Door Locked ");
}
}
Much bettor
I don't see an LCD, LEDs, a buzzer or a button in your photo?
So how do you know it is not reading the RFID
Initially I used an LCD but it wasn't detected, so I simplified without an LCD and looked at it on the serial monitor
This is coding without LCD and LED
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 rfid(SS_PIN, RST_PIN); // Instance of the class
int relayPin = 7; // Pin yang terhubung ke relay
// Daftar ID kartu yang diizinkan
String allowedIDs[] = {
"YOUR_RFID_ID_1", // Ganti dengan ID kartu RFID yang valid
"YOUR_RFID_ID_2" // Ganti dengan ID kartu RFID yang valid
};
void setup() {
Serial.begin(9600); // Initialize serial communications
SPI.begin(); // Initialize SPI bus
rfid.PCD_Init(); // Initialize RFID reader
pinMode(relayPin, OUTPUT); // Set pin relay sebagai output
digitalWrite(relayPin, LOW); // Pastikan relay mati
Serial.println("Scan your RFID card...");
}
void loop() {
// Jika ada kartu yang terdeteksi
if (rfid.PICC_IsNewCardPresent() && rfid.PICC_ReadCardSerial()) {
String id = "";
for (byte i = 0; i < rfid.uid.size; i++) {
id += String(rfid.uid.uidByte[i], HEX);
}
id.toUpperCase(); // Ubah ID menjadi huruf besar
Serial.print("ID Kartu: ");
Serial.println(id); // Tampilkan ID di Serial Monitor
// Cek apakah ID ada dalam daftar yang diizinkan
bool accessGranted = false;
for (int i = 0; i < sizeof(allowedIDs) / sizeof(allowedIDs[0]); i++) {
if (id == allowedIDs[i]) {
accessGranted = true;
break;
}
}
if (accessGranted) {
Serial.println("Access Granted");
digitalWrite(relayPin, HIGH); // Nyalakan relay
delay(5000); // Biarkan solenoid aktif selama 5 detik
digitalWrite(relayPin, LOW); // Matikan relay
} else {
Serial.println("Access Denied");
}
delay(2000); // Tunggu 2 detik sebelum membaca kartu lagi
rfid.PICC_HaltA(); // Hentikan kartu
}
}
I need to see the code you are actually using, not something from a website.
I also need to see a wiring diagram of your actual connections, not something from a website
Wait. I'll show you a more detailed photo of my diagram
Do you understand how difficult it is to help if you ask questions about one combination of hardware and code but your posts contain completely different hardware and code? I would think most people would find that quite obvious.
Sorry, sorry, I just realized that the GND pin of the RFID reader is on the wrong pin
It's no good. I can't see if you have things connected right from those photos.









