از کار افتادن Esp8266 بعد از چند ساعت.

1 سال قبل
169 بازدید

0

سلام 

کد زیر رو روی برد Esp8266 آپلود می کنم که ازش برای خواندن تگ های RFID با ماژول RC522 استفاده می‌کنم اما بعد از چند ساعت دیگه چیزی نمی خونه و باید برد ریست بشه.

کسی می دونه مشکل از کجاست؟

#include <SPI.h>
#include <MFRC522.h>


#define SS_PIN D4
#define RST_PIN D3
#define LED_B D2 //define green LED pin
#define LED_R D0 //define red LED
#define RELAY1 D1 //relay pin
#define RELAY2 D8 //buzzer pin
#define ACCESS_DELAY 700
#define DENIED_DELAY 1000

MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.

void setup()
{
    Serial.begin(115200); // Initiate a serial communication
    SPI.begin(); // Initiate SPI bus
    mfrc522.PCD_Init(); // Initiate MFRC522
    pinMode(LED_B, OUTPUT);
    pinMode(LED_R, OUTPUT);
    pinMode(RELAY1, OUTPUT);
    pinMode(RELAY2, OUTPUT);
    digitalWrite(RELAY1, HIGH);
    digitalWrite(RELAY2, HIGH);
    Serial.println("Put your card to the reader...");
    Serial.println();
}

void loop()
{
    // 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("User : ");
    content.toUpperCase();
    if (content.substring(1) == "9C 96 59 A9" || content.substring(1) == "EC 74 51 9C" || content.substring(1) == "01 02 03 04" || content.substring(1) == "04 43 F4 35") //change here the UID of the card/cards that you want to give access
        {
        Serial.println("Authorized access");
        Serial.println();
        delay(500);
        digitalWrite(RELAY1, LOW);
        digitalWrite(RELAY2, LOW);
        digitalWrite(LED_B, HIGH);
        delay(ACCESS_DELAY);
        digitalWrite(RELAY1, HIGH);
        digitalWrite(RELAY2, HIGH);
        delay(500);
        digitalWrite(LED_B, LOW);
        delay(50);
        digitalWrite(LED_R, HIGH);
        delay(100);
        digitalWrite(LED_R, LOW);
        digitalWrite(LED_B, HIGH);
        delay(100);
        digitalWrite(LED_B, LOW);
        digitalWrite(LED_R, HIGH);
        delay(100);
        digitalWrite(LED_R, LOW);
        digitalWrite(LED_B, HIGH);
        delay(100);
        digitalWrite(LED_B, LOW);
            digitalWrite(LED_R, HIGH);
        delay(800);

        digitalWrite(LED_R, LOW);

     
  }
   else {
        Serial.println(" Access denied");
        digitalWrite(LED_R, HIGH);
        delay(DENIED_DELAY);
        digitalWrite(LED_R, LOW);

  }

}
17 خرداد 02 در 04:48
حمیدرضا روانبخشیان
4

افزودن دیدگاه

1 پاسخ ثبت شده است
0

با سلام

پس از این مدت که میگذرد میکرو شما قفل میکند یا میکرو شما کار میکند اما مقدار های rfid را نمیخواند؟؟؟

برای تست این موضوع میتوانید در لوپ خود دستور چشمک زن را نیز قرار بدهید در صورتی که چشمک زن برد به کار خودش ادامه میدهد یعنی میکرو اجرا میکند اما rfid نمیخواند. و در صورتی که چشمک زدن برد گیر کرد یعنی میکرو شما قفل کرده اید و باید میکرو را مورد بررسی قرار بدهید.

 

ویرایش اول:

بسیار خوب در صورتی که ماژول به کار خودش ادامه میده یعنی ماژول سالم هست و امکان داره مشکل از rfid باشه، اگر ماژول rfid دیگه ای هم داری اونو هم تست کن.

یه موضوع دیگه که توجه ام رو جلب کرده وقتی اطلاعات کارت رو میخونی ماژول رو ریبوت نمیکنی.

از این دستور ها برای این کار باید استفاده کنی

  // Halt PICC
  rfid.PICC_HaltA();

  // Stop encryption on PCD
  rfid.PCD_StopCrypto1();

در واقع این 2 تا دستور باید توی لوپ همیشه تکرار بشه. این موضوع رو هم تست کن.

17 خرداد 02 در 11:34
محمد دمیرچی
3670

سلام کاری که گفتی رو انجام دادم . LED چشمک زن به کار خودش ادامه می داد اما بازم rfid بعد از چند ساعت از کار می افتاد و مقداری نمی خوند.  – حمیدرضا روانبخشیان 02-03-21 در 09:50

پاسخ ویرایش شد  – محمد دمیرچی 02-03-22 در 07:14

سلام خیلی ممنون . میشه بگید چطور دستور ریست رو توی کد قرار بدم چون آخر لوپ که گذاشتمش با این اخطار مواجه شدم . rfid was not declared in this scope  – حمیدرضا روانبخشیان 02-03-24 در 05:10

کد نمونه MFRC522 که در آردوینو می باشد را استفاده کنید (ReadNUID) در آن به صورت کامل نوشته است.  – محمد دمیرچی 02-03-27 در 09:26

افزودن دیدگاه


انجمن کافه‌ربات © 1400