التحكم في كهرباء المنزل بواسطة البطاقة .How to control home electricity using a RFID

Поделиться
HTML-код
  • Опубликовано: 8 сен 2024
  • ----------------------------------------------------------------------------------
    رابط قناة التلغرام للانضمام الى المهتمين بمجال البرمجة:
    t.me/+h93CaMzQ...

Комментарии • 2

  • @pro-creativity4471
    @pro-creativity4471  6 месяцев назад +1

    كود معرفة رقم البطاقة
    #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);
    }
    }
    }

  • @salimsamir5605
    @salimsamir5605 6 месяцев назад

    ليس ابتكار بل اعادة