التحكم في كهرباء المنزل بواسطة البطاقة .How to control home electricity using a RFID
HTML-код
- Опубликовано: 8 сен 2024
- ----------------------------------------------------------------------------------
رابط قناة التلغرام للانضمام الى المهتمين بمجال البرمجة:
t.me/+h93CaMzQ...
كود معرفة رقم البطاقة
#include
#include
// INPUT
#define SS_PIN 10
#define RST_PIN 9
MFRC522 rfid(SS_PIN, RST_PIN);
// Init array that will store new NUID
byte nuidPICC[4];
void setup() {
Serial.begin(9600);
SPI.begin(); // Init SPI bus
rfid.PCD_Init(); // Init MFRC522
Serial.println(F("Scan RFID NUID..."));
}
void loop() {
readRFID();
delay(200);
}
//
void readRFID()
{
// Look for new card
if ( ! rfid.PICC_IsNewCardPresent())
return;
// Verify if the NUID has been readed
if ( !rfid.PICC_ReadCardSerial())
return;
if (rfid.uid.uidByte[0] != nuidPICC[0] ||
rfid.uid.uidByte[1] != nuidPICC[1] ||
rfid.uid.uidByte[2] != nuidPICC[2] ||
rfid.uid.uidByte[3] != nuidPICC[3] ) {
Serial.println(F("A new card has been detected."));
// Store NUID into nuidPICC array
for (byte i = 0; i < 4; i++) {
nuidPICC[i] = rfid.uid.uidByte[i];
}
Serial.print(F("RFID tag in dec: "));
printDec(rfid.uid.uidByte, rfid.uid.size);
Serial.println();
}
// Halt PICC
rfid.PICC_HaltA();
// Stop encryption on PCD
rfid.PCD_StopCrypto1();
}
/**
* Helper routine to dump a byte array as dec values to Serial.
*/
void printDec(byte *buffer, byte bufferSize) {
for (byte i = 0; i < bufferSize; i++) {
Serial.print(buffer[i] < 0x10 ? " 0" : " ");
Serial.print(buffer[i], DEC);
}
}
كود المشروع
#include
#include
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);
byte card_ID[4];
byte First_card_ID[4] = {140, 89, 64, 245};
boolean State = false;
boolean cardPresent = false; // متغير لتتبع حالة البطاقة الحالية
int RedLed = 6;
int GreenLed = 5;
int Buzzer = 7;
unsigned long cardRemovedTime = 0; // متغير لتتبع وقت إزالة البطاقة
void setup() {
Serial.begin(9600);
SPI.begin();
mfrc522.PCD_Init();
Serial.println("Ready to Read a Card ");
for (int def = 5; def < 8; def++) {
pinMode(def, OUTPUT);
}
}
void cmp_id() {
for (byte i = 0; i < mfrc522.uid.size; i++) {
if (card_ID[i] != First_card_ID[i]) {
State = false;
return;
}
}
State = true;
}
void loop() {
// تحقق مما إذا كانت هناك بطاقة جديدة مقروءة
if (mfrc522.PICC_IsNewCardPresent()) {
cardPresent = true; // تحديث حالة البطاقة
if (!mfrc522.PICC_ReadCardSerial()) {
return;
}
Serial.print("Card Number UID:");
for (byte i = 0; i < mfrc522.uid.size; i++) {
card_ID[i] = mfrc522.uid.uidByte[i];
Serial.print(" - ");
Serial.print(card_ID[i], HEX);
Serial.print(" - ");
}
Serial.println();
cmp_id();
if (State == true) {
Serial.println("Accepted OK, Valid card");
digitalWrite(GreenLed, HIGH);
digitalWrite(RedLed, LOW);
} else {
Serial.println("Error ! Invalid card");
digitalWrite(RedLed, HIGH);
digitalWrite(GreenLed, LOW);
}
} else {
// إذا كانت البطاقة موجودة سابقًا وتمت إزالتها
if (cardPresent) {
// تحديث وقت إزالة البطاقة
cardRemovedTime = millis();
cardPresent = false; // تحديث حالة البطاقة
}
// إطفاء المصباح الأخضر بعد مرور 3 ثوانٍ من إزالة البطاقة
if (millis() - cardRemovedTime >= 2000) {
digitalWrite(GreenLed, LOW);
}
}
}
ليس ابتكار بل اعادة