arduino使用rfid

rc522python

https://randomnerdtutorials.com/security-access-using-mfrc522-rfid-reader-with-arduino/dom

 

 

 

 

 

 切記 3.3Voop

 

 

 

 

 

/*
 * -----------------------------------------------------------------------------------------
 *             MFRC522      Arduino       Arduino   Arduino    Arduino          Arduino
 *             Reader/PCD   Uno/101       Mega      Nano v3    Leonardo/Micro   Pro Micro
 * Signal      Pin          Pin           Pin       Pin        Pin              Pin
 * -----------------------------------------------------------------------------------------
 * RST/Reset   RST          9             5         D9         RESET/ICSP-5     RST
 * SPI SS      SDA(SS)      10            53        D10        10               10
 * SPI MOSI    MOSI         11 / ICSP-4   51        D11        ICSP-4           16
 * SPI MISO    MISO         12 / ICSP-1   50        D12        ICSP-1           14
 * SPI SCK     SCK          13 / ICSP-3   52        D13        ICSP-3           15
 * 
 */

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

#define SS_PIN 10
#define RST_PIN 9
 
MFRC522 rfid(SS_PIN, RST_PIN); // Instance of the class
MFRC522::MIFARE_Key key; 

//保存卡的信息
String namerfid;

// 初始化卡的id
byte nuidPICC[4];

//初始化讀卡器
void Rfid_int()
{
  
    SPI.begin(); // Init SPI bus
  rfid.PCD_Init(); // Init MFRC522 

  for (byte i = 0; i < 6; i++) {
    key.keyByte[i] = 0xFF;
  }
}


//實時獲取新卡的信息
void Get_rfid()
{
  
  // Reset the loop if no new card present on the sensor/reader. This saves the entire process when idle.
  if ( ! rfid.PICC_IsNewCardPresent())
     {
     return;
     }
   
  // Verify if the NUID has been readed
  if ( ! rfid.PICC_ReadCardSerial())
  {      
   return;
  }
 

  //Serial.print(F("PICC type: "));
  MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
 // Serial.println(rfid.PICC_GetTypeName(piccType));
   String rfig_type=String(rfid.PICC_GetTypeName(piccType));
  // Check is the PICC of Classic MIFARE type
  if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&  
    piccType != MFRC522::PICC_TYPE_MIFARE_1K &&
    piccType != MFRC522::PICC_TYPE_MIFARE_4K) {
    //Serial.println(F("Your tag is not of type MIFARE Classic."));
    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] ) {
   
    // Store NUID into nuidPICC array 保存上個 卡信息
    for (byte i = 0; i < 4; i++) {
      nuidPICC[i] = rfid.uid.uidByte[i];

      namerfid=namerfid+String(rfid.uid.uidByte[i]);//新卡-和上一張不同
    }
       namerfid=namerfid+"-new-1-type-"+rfig_type+"-";//新卡-和上一張不同
  
 
  }
  else
  {      
        // Store NUID into nuidPICC array 保存上個 卡信息
        for (byte i = 0; i < 4; i++) {
          nuidPICC[i] = rfid.uid.uidByte[i];  
          namerfid=namerfid+String(rfid.uid.uidByte[i]);//舊卡-和上一張同樣
          }
       namerfid=namerfid+"-new-0-type-"+rfig_type+"-";///舊卡-和上一張同樣
      
  }

   Serial.println(namerfid);
   namerfid="";
  // Halt PICC
  rfid.PICC_HaltA();

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


void setup() { 
  Serial.begin(9600);
  Rfid_int();

}



void loop() {
  //獲取卡的信息
  Get_rfid();
  //delay(1);
}
相關文章
相關標籤/搜索