zoukankan      html  css  js  c++  java
  • arduino使用rfid

    rc522

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

     

     切记 3.3V

    /*
     * -----------------------------------------------------------------------------------------
     *             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);
    }
    

      

  • 相关阅读:
    coder的脚印
    Mysql
    MSDos
    Windows Develop
    Eclipse 使用总结
    DBA常用SQL
    SSH总结
    Unity3D协程
    yield的作用
    UGUI优化
  • 原文地址:https://www.cnblogs.com/kekeoutlook/p/12664185.html
Copyright © 2011-2022 走看看