Help me to find out the coding of this project


Can you guys help me to find out the coding of this project?

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


I have tried it but RFID Reade can't read RFID cards (:slight_smile:

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

1 Like

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

now it is accessible,
Just fix the door lock selenoid code. can you help me from the start?

It's no good. I can't see if you have things connected right from those photos.