What's new

PHC-WHITEHAT

Forum Guru
Elite
Joined
May 19, 2020
Posts
2,657
Solutions
10
Reaction
5,713
Points
1,509
Mga boss baka pwede patulong sa code namin sa Arduino about locked system using RFID
Ito yung code namin
#include <Servo.h>
#include <SPI.h>
#include <MFRC522.h>

#define SS_PIN 10
#define RST_PIN 9
String UID = "";
byte lock = 0;

Servo servo;
MFRC522 rfid(SS_PIN, RST_PIN);

void setup() {
Serial.begin(9600);
servo.write(70);
servo.attach(3);
SPI.begin();
rfid.PCD_Init();
}

void loop() {
if (!rfid.PICC_IsNewCardPresent())
return;
if (!rfid.PICC_ReadCardSerial())
return;

Serial.print("NUID tag is: ");
String ID = "";
for (byte i = 0; i < rfid.uid.size; i++) {
ID.concat(String(rfid.uid.uidByte < 0x10 ? "0" : ""));
ID.concat(String(rfid.uid.uidByte, HEX));
delay(300);
}
ID.toUpperCase();

if (ID.substring(1) == UID && lock == 0 ) {
servo.write(70);
delay(1500);
lock = 1;
} else if (ID.substring(1) == UID && lock == 1 ) {
servo.write(160);
delay(1500);
lock = 0;
}
}
Ang problema namin is wrong card yung readings sa RFID kahit na register na namin yung unique code ng card
 
Magandang araw! Maaari ko bang malaman kung ano ang mga kinakailangang gawin sa sistema ng pagkakalock gamit ang RFID? Kailangan bang mag-register ng mga authorized na card? At kung oo, paano ito ginagawa?

Sa code naman, may nakita akong ilang bagay na maaaring nakakaapekto sa pagbasa ng RFID. Una, maaaring kailangan ng delay sa pagbasa ng UID upang magbigay ng sapat na oras para sa pagbasa ng card:

delay(300);

Maaring itaas ang halagang ito kung kinakailangan.

Pangalawa, mayroong ginagamit na substring sa paghahanap ng UID:

if (ID.substring(1) == UID && lock == 0 ) {

Siguraduhin na tama ang index ng substring na ginagamit upang makuha ang tamang UID. Maaaring magamit ang Serial.println(ID); upang makita ang buong UID at matukoy kung saan nagsisimula ang kinakailangang character.

Para sa pag-register ng mga authorized na card, maaari itong isama sa code sa pamamagitan ng paggamit ng String UID = "<UID ng card>";. Ilagay ang UID ng card na kailangang magamit para sa pagbukas ng lock. Maari ding magdagdag ng maraming UID para sa iba pang mga card.

Kung may iba pang mga detalye ukol sa inyong sistema, pakipost lamang ulit dito.
 
This code will convert the RFID card's unique ID (a hexadecimal number) to a string, which can then be compared to the UID variable.
Code:
#include <Servo.h>
#include <SPI.h>
#include <MFRC522.h>

#define SS_PIN 10
#define RST_PIN 9
String UID = "";
byte lock = 0;

Servo servo;
MFRC522 rfid(SS_PIN, RST_PIN);

void setup() {
  Serial.begin(9600);
  servo.write(70);
  servo.attach(3);
  SPI.begin();
  rfid.PCD_Init();
}

void loop() {
  if (!rfid.PICC_IsNewCardPresent())
    return;
  if (!rfid.PICC_ReadCardSerial())
    return;

  Serial.print("NUID tag is: ");
  String ID = "";
  for (byte i = 0; i < rfid.uid.size; i++) {
    ID += String(rfid.uid.uidByte, HEX);
  }
  ID.toUpperCase();

  if (ID == UID && lock == 0) {
    servo.write(70);
    delay(1500);
    lock = 1;
  } else if (ID == UID && lock == 1) {
    servo.write(160);
    delay(1500);
    lock = 0;
  }
}
 

Similar threads

Back
Top