chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ESP32驅(qū)動(dòng)MFRC522 RFID模塊讀寫IC卡數(shù)據(jù)

jf_88434166 ? 來(lái)源:jf_88434166 ? 作者:jf_88434166 ? 2025-05-28 15:52 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

RFID是Radio-Fequency Identification射頻識(shí)別的縮寫。RFID使用電磁場(chǎng)在短距離內(nèi)傳輸數(shù)據(jù),它可用于人員識(shí)別、刷卡交易,商品的電子標(biāo)簽等。工作原理為,ID磁卡進(jìn)入到磁場(chǎng)后,接受讀寫器發(fā)出的射頻信號(hào),憑借感應(yīng)電流所獲得的能量發(fā)送出存儲(chǔ)在芯片中的產(chǎn)品信息,讀寫器讀取到信息并解碼后,送至處理單元進(jìn)行數(shù)據(jù)處理。

MFRC522是高度集成的非接觸式( 13.56MHz)讀寫卡芯片。此發(fā)送模塊利用調(diào)制和解調(diào)的原理,并將它們完全集成到各種非接觸式通信方法和協(xié)議中(13.56MHz)。

MFRC522的內(nèi)部發(fā)送器部分可驅(qū)動(dòng)讀寫器天線與ISO 14443A/MIFARE卡和應(yīng)答機(jī)的通信,無(wú)需其它的電路。接收器部分提供一個(gè)功能強(qiáng)大和高效的解調(diào)和譯碼電路,用來(lái)處理兼容ISO 14443A/MIFARE的卡和應(yīng)答機(jī)的信號(hào)。通信距離可達(dá)50mm,取決于天線的長(zhǎng)度和調(diào)諧。數(shù)字電路部分處理完整的ISO 14443A幀和錯(cuò)誤檢測(cè)(奇偶&CRC)。

  • 支持MIFARE標(biāo)準(zhǔn)器件,如S50、S70,UID卡,
  • 支持MIFARE Classic加密。
  • 支持MIFARE更高速的非接觸式通信,雙向數(shù)據(jù)傳輸速率高達(dá)424kbit/s。
  • 內(nèi)部64字節(jié)的發(fā)送和接收FIFO緩沖區(qū)。
  • 10Mbit/s的SPI接口
  • I2C接口,快速模式的速率為400kbit/s,高速模式的速率為3400kbit/s
  • 串行UART,傳輸速率高達(dá)1228.8kbit/s, 幀取決于RS232接口,電壓電平取決于提供的管腳電壓

本文將介紹ESP32開發(fā)板驅(qū)動(dòng)MFRC522 RFID模塊,讀取RFID卡原始數(shù)據(jù)、獲取RFID卡的UID,并將個(gè)人數(shù)據(jù)添加到RFID卡中。

ESP32開發(fā)板與MFRC522模塊接線

下圖為SPI通信接線圖
在這里插入圖片描述

ESP32MFRC522
GPIO5SDA引腳作為SPI通信時(shí)的CS片選
GPIO18SCK
GPIO23MOSI
GPIO19MISO
不接IRQ
GNDGND
GPIO21RST
3V33.3V

讀取S50 IC白卡與S50 IC鑰匙卡扣原始數(shù)據(jù)

Arduino IDE中安裝RFID_MFRCC522驅(qū)動(dòng)庫(kù)
在這里插入圖片描述

#include < MFRC522v2.h >
#include < MFRC522DriverSPI.h >
//#include < MFRC522DriverI2C.h >
#include < MFRC522DriverPinSimple.h >
#include < MFRC522Debug.h >

// Learn more about using SPI/I2C or check the pin assigment for your board: https://github.com/OSSLibraries/Arduino_MFRC522v2#pin-layout
MFRC522DriverPinSimple ss_pin(5);

MFRC522DriverSPI driver{ss_pin}; // Create SPI driver
//MFRC522DriverI2C driver{};     // Create I2C driver
MFRC522 mfrc522{driver};         // Create MFRC522 instance

void setup() {
  Serial.begin(115200);  // Initialize serial communication
  while (!Serial);       // Do nothing if no serial port is opened (added for Arduinos based on ATMEGA32U4).
  
  mfrc522.PCD_Init();    // Init MFRC522 board.
  MFRC522Debug::PCD_DumpVersionToSerial(mfrc522, Serial);	// Show details of PCD - MFRC522 Card Reader details.
  Serial.println(F("Scan PICC to see UID, SAK, type, and data blocks..."));
}

void loop() {
  // Reset the loop if no new card present on the sensor/reader. This saves the entire process when idle.
  if (!mfrc522.PICC_IsNewCardPresent()) {
    return;
  }

  // Select one of the cards.
  if (!mfrc522.PICC_ReadCardSerial()) {
    return;
  }

  // Dump debug info about the card; PICC_HaltA() is automatically called.
  MFRC522Debug::PICC_DumpToSerial(mfrc522, Serial, &(mfrc522.uid));

  delay(2000);
}

程序中PICC表示IC卡(proximity integrated circuit cards)
PCD表示讀寫模塊MFRC522(proximity coupling device)
編譯上傳程序到ESP32開發(fā)板 ,打開串口打印,把IC卡靠近MFRC522讀寫模塊,可在串口上打印出IC內(nèi)存儲(chǔ)的數(shù)據(jù)
在這里插入圖片描述
在這里插入圖片描述
從串口打印出的信息可知道
IC卡的存儲(chǔ)分布結(jié)構(gòu)劃分為16個(gè)(0-15)扇區(qū),每個(gè)扇區(qū)包含4個(gè)(0-3)存儲(chǔ)塊,每個(gè)存儲(chǔ)塊包含16個(gè)字節(jié)的存儲(chǔ)(0-15)

扇區(qū)0上的存儲(chǔ)塊0存儲(chǔ)著IC卡的出廠信息,第0-4字節(jié)為UUID(如43 17 EE 05),一個(gè)校驗(yàn)字節(jié),剩余的為出廠寫入的數(shù)據(jù)。存儲(chǔ)塊0為只讀模式,一般不可更改(部分克隆卡可修改)。

每個(gè)扇區(qū)的前3個(gè)存儲(chǔ)塊可用于存儲(chǔ)數(shù)據(jù),每個(gè)扇區(qū)的最后一個(gè)存儲(chǔ)塊為扇區(qū)尾塊Sector Trailer。
每個(gè)扇區(qū)尾塊固定為 16字節(jié),其數(shù)據(jù)結(jié)構(gòu)如下:

0~5 Key A(6字節(jié)),扇區(qū)的第一個(gè)訪問(wèn)密鑰(默認(rèn)通常為 FF FF FF FF FF FF 或廠商預(yù)設(shè)值)。

6~8 Access Bits(4字節(jié)),存儲(chǔ)該扇區(qū)的訪問(wèn)權(quán)限控制位(實(shí)際只用了3字節(jié),第9字節(jié)為備用)。

10~15 Key B(6字節(jié)),扇區(qū)的第二個(gè)訪問(wèn)密鑰(可選,部分應(yīng)用可能不用或與Key A相同)。

每個(gè)扇區(qū)的最后一個(gè)塊是安全核心,決定了該扇區(qū)的訪問(wèn)規(guī)則。操作時(shí)務(wù)必謹(jǐn)慎,建議先讀取并備份原始數(shù)據(jù)(需密鑰驗(yàn)證),再嘗試修改。

IC卡的類型為MIFARE 1KB 用戶可用的凈存儲(chǔ)容量為:
16扇區(qū) X 3存儲(chǔ)塊 X 16字節(jié) - 16字節(jié)=752字節(jié)

UID為 43 17 EE 05 不同的卡的UID會(huì)不一樣

讀寫用戶數(shù)據(jù)到指定的存儲(chǔ)塊

#include < MFRC522v2.h >
#include < MFRC522DriverSPI.h >
//#include < MFRC522DriverI2C.h >
#include < MFRC522DriverPinSimple.h >
#include < MFRC522Debug.h >

// Learn more about using SPI/I2C or check the pin assigment for your board: https://github.com/OSSLibraries/Arduino_MFRC522v2#pin-layout
MFRC522DriverPinSimple ss_pin(5);

MFRC522DriverSPI driver{ss_pin}; // Create SPI driver
//MFRC522DriverI2C driver{};     // Create I2C driver
MFRC522 mfrc522{driver};         // Create MFRC522 instance

MFRC522::MIFARE_Key key;

byte blockAddress = 2;
byte newBlockData[17] = {"www.yourcee.com"};
//byte newBlockData[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};   // CLEAR DATA
byte bufferblocksize = 18;
byte blockDataRead[18];

void setup() {
  Serial.begin(115200);  // Initialize serial communication
  while (!Serial);       // Do nothing if no serial port is opened (added for Arduinos based on ATMEGA32U4).
  
  mfrc522.PCD_Init();    // Init MFRC522 board.
  Serial.println(F("Warning: this example overwrites a block in your card, use with care!"));
 
  // Prepare key - all keys are set to FFFFFFFFFFFF at chip delivery from the factory.
  for (byte i = 0; i < 6; i++) {
    key.keyByte[i] = 0xFF;
  }
}

void loop() {
  // Check if a new card is present
  if (!mfrc522.PICC_IsNewCardPresent() || !mfrc522.PICC_ReadCardSerial()) {
    delay(500);
    return;
  }

  // Display card UID
  Serial.print("----------------nCard UID: ");
  MFRC522Debug::PrintUID(Serial, (mfrc522.uid));
  Serial.println();

  // Authenticate the specified block using KEY_A = 0x60
  if (mfrc522.PCD_Authenticate(0x60, blockAddress, &key, &(mfrc522.uid)) != 0) {
    Serial.println("Authentication failed.");
    return;
  }
  
  // Write data to the specified block
  if (mfrc522.MIFARE_Write(blockAddress, newBlockData, 16) != 0) {
    Serial.println("Write failed.");
  } else {
    Serial.print("Data written successfully in block: ");
    Serial.println(blockAddress);
  }

  // Authenticate the specified block using KEY_A = 0x60
  if (mfrc522.PCD_Authenticate(0x60, blockAddress, &key, &(mfrc522.uid)) != 0) {
    Serial.println("Authentication failed.");
    return;
  }

  // Read data from the specified block
  if (mfrc522.MIFARE_Read(blockAddress, blockDataRead, &bufferblocksize) != 0) {
    Serial.println("Read failed.");
  } else {
    Serial.println("Read successfully!");
    Serial.print("Data in block ");
    Serial.print(blockAddress);
    Serial.print(": ");
    for (byte i = 0; i < 16; i++) {
      Serial.print((char)blockDataRead[i]);  // Print as character
    }
    Serial.println();
  }
  
  // Halt communication with the card
  mfrc522.PICC_HaltA();
  mfrc522.PCD_StopCrypto1();

  delay(2000);  // Delay for readability
}

byte blockAddress = 2;
定義了一個(gè)名為blockAddress的變量。這個(gè)變量指定了IC卡內(nèi)將要寫入或讀取數(shù)據(jù)的塊。blockAddress被設(shè)置為2,將與卡片內(nèi)存的第2個(gè)塊進(jìn)行交互。如果你想寫入不同的塊,你可以更改這個(gè)值。

byte newBlockData[17] = {"www.yourcee.com"};
保存您想要寫入卡中的數(shù)據(jù),不超過(guò)16個(gè)字節(jié)

byte newBlockData[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
如果您想清除塊數(shù)據(jù),取消注釋這行代碼

for (byte i = 0; i < 6; i++) {
key.keyByte[i] = 0xFF;
}
IC卡的默認(rèn)密鑰也在以上行中設(shè)置。默認(rèn)情況下,工廠密鑰的所有字節(jié)都是0xFF。這個(gè)密鑰允許訪問(wèn)卡的數(shù)據(jù)塊。

if (mfrc522.PCD_Authenticate(0x60, blockAddress, &key, &(mfrc522.uid)) != 0) {
Serial.println("Authentication failed.");
return;
}
代碼嘗試使用默認(rèn)密鑰(在本例中為塊2)對(duì)卡片上的特定塊進(jìn)行認(rèn)證。0x60是一個(gè)指定使用KEY_A進(jìn)行認(rèn)證的命令。KEY_A是RFID卡上可用的兩個(gè)密鑰(KEY_A和KEY_B)之一,每個(gè)密鑰提供不同的權(quán)限。使用0x60意味著代碼正在嘗試用KEY_A進(jìn)行認(rèn)證,而默認(rèn)情況下,在MIFARE RFID卡上KEY_A是0xFF 0xFF 0xFF 0xFF 0xFF。

編譯上傳程序到ESP32開發(fā)板 ,打開串口監(jiān)視器,并把IC卡 靠近MFRC522讀寫模塊,串口顯示出寫入并讀取到指定存儲(chǔ)塊的數(shù)據(jù)
在這里插入圖片描述

總結(jié)

本實(shí)驗(yàn)只是對(duì)空白的MIFARE Classic IC卡進(jìn)行簡(jiǎn)單的讀寫驗(yàn)證,由于IC卡大都有秘鑰,至于破解IC卡,復(fù)制C卡需要大家進(jìn)一步探索研究了。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • RFID
    +關(guān)注

    關(guān)注

    392

    文章

    7000

    瀏覽量

    248965
  • MFRC522
    +關(guān)注

    關(guān)注

    2

    文章

    32

    瀏覽量

    18052
  • ESP32
    +關(guān)注

    關(guān)注

    26

    文章

    1222

    瀏覽量

    22307
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    ESP32/ESP8266開發(fā)板單向一對(duì)多ESP-NOW無(wú)線通信

    通過(guò)ESP-NOW無(wú)線通信協(xié)議實(shí)現(xiàn)ESP32開發(fā)板向多個(gè)ESP32/ESP 8266開發(fā)板發(fā)送數(shù)據(jù)。
    的頭像 發(fā)表于 03-13 09:23 ?268次閱讀
    <b class='flag-5'>ESP32</b>/<b class='flag-5'>ESP</b>8266開發(fā)板單向一對(duì)多<b class='flag-5'>ESP</b>-NOW無(wú)線通信

    ESP32驅(qū)動(dòng)TFmini-S紅外激光測(cè)距ToF模塊進(jìn)行測(cè)距

    本文介紹了TFmini-S紅外激光測(cè)距ToF模塊的基本特性,然后用ESP32開發(fā)板驅(qū)動(dòng)TFmini-S模塊進(jìn)行測(cè)距,并在串口助手上顯示出測(cè)距數(shù)據(jù)
    的頭像 發(fā)表于 03-06 14:43 ?308次閱讀
    <b class='flag-5'>ESP32</b><b class='flag-5'>驅(qū)動(dòng)</b>TFmini-S紅外激光測(cè)距ToF<b class='flag-5'>模塊</b>進(jìn)行測(cè)距

    極速入門:AirRC522_1000方案實(shí)現(xiàn)RFID讀卡功能的一鍵集成

    還在為復(fù)雜的SPI通信協(xié)議和繁瑣的寄存器配置而頭疼嗎?AirRC522_1000方案旨在徹底簡(jiǎn)化嵌入式RFID開發(fā)流程。該方案提供全開源的底層驅(qū)動(dòng)與高層應(yīng)用接口,開發(fā)者無(wú)需深究MFRC522
    的頭像 發(fā)表于 02-28 17:30 ?628次閱讀
    極速入門:AirRC<b class='flag-5'>522</b>_1000方案實(shí)現(xiàn)<b class='flag-5'>RFID</b>讀卡功能的一鍵集成

    恩智浦MFRC522與SI522的性能功耗對(duì)比

    接觸式讀寫器芯片,閱讀器支持ISO/IEC 14443 A/MIFARE。無(wú)需外圍其他電路,Si522 的內(nèi)部發(fā)送器可驅(qū)動(dòng)讀寫器天線與ISO/IEC 14443A/MIFARE
    發(fā)表于 02-28 16:43

    電動(dòng)車NFC一鍵啟動(dòng)(儀表總成、電源鎖)_Ci522

    于智能門鎖、手機(jī)模擬(NFC)解鎖等應(yīng)用。它為一些需要低成本和小PCB尺寸的產(chǎn)品提供了可靠的選擇。Ci522不同于si522/mfrc522封裝(si
    發(fā)表于 02-28 15:11

    ESP32 驅(qū)動(dòng)瀚海微SD NAND 完整方案 + FAT/FAT32 驅(qū)動(dòng)核心區(qū)別

    ESP32?驅(qū)動(dòng) SD NAND?的核心是基于SDIO?接口(SD NAND?主流通信方式,兼容 SPI?但速率更高),借助樂(lè)鑫官方esp-idf框架的SDMMC?驅(qū)動(dòng)庫(kù)實(shí)現(xiàn),無(wú)需額外
    的頭像 發(fā)表于 02-02 11:38 ?733次閱讀
    <b class='flag-5'>ESP32</b> <b class='flag-5'>驅(qū)動(dòng)</b>瀚海微SD NAND 完整方案 + FAT/FAT32 <b class='flag-5'>驅(qū)動(dòng)</b>核心區(qū)別

    NXP MFRC520/522/523 鍵合線直徑變更通知解讀

    為201405006A,這里跟各位電子工程師分享下關(guān)于Digi - Key從NXP購(gòu)買的產(chǎn)品相關(guān)的重要信息。 文件下載: MFRC52302HN1,157.pdf 變更內(nèi)容 NXP計(jì)劃將MFRC520、MFRC522
    的頭像 發(fā)表于 01-29 16:35 ?539次閱讀

    探秘MFRC522:高效非接觸式讀寫IC的全方位解析

    探秘MFRC522:高效非接觸式讀寫IC的全方位解析 在當(dāng)今的電子設(shè)備領(lǐng)域,非接觸式通信技術(shù)正發(fā)揮著越來(lái)越重要的作用。作為一名電子工程師,我最近深入研究了NXP Semiconductors推出
    的頭像 發(fā)表于 01-19 16:55 ?793次閱讀

    深度解析MFRC522:高性能非接觸式讀寫IC的設(shè)計(jì)與應(yīng)用

    深度解析MFRC522:高性能非接觸式讀寫IC的設(shè)計(jì)與應(yīng)用 在電子工程師的設(shè)計(jì)世界里,非接觸式通信技術(shù)一直是備受關(guān)注的領(lǐng)域。NXP的MFRC522作為一款標(biāo)準(zhǔn)性能的MIFARE和NT
    的頭像 發(fā)表于 12-29 16:55 ?1122次閱讀

    ESP32藍(lán)牙驅(qū)動(dòng)MAX98357對(duì)音頻音樂(lè)播放

    本文介紹了MAX98357音頻模塊的基本特性,并利用ESP32的藍(lán)牙功能程序驅(qū)動(dòng)模塊,最后用手機(jī)藍(lán)牙連接ESP32播放手機(jī)音樂(lè)
    的頭像 發(fā)表于 12-19 19:55 ?3136次閱讀
    <b class='flag-5'>ESP32</b>藍(lán)牙<b class='flag-5'>驅(qū)動(dòng)</b>MAX98357對(duì)音頻音樂(lè)播放

    SI522與恩智浦 RC522 13.56MHZ的刷卡問(wèn)題

    13.56MHz 的非接觸式讀寫器芯片,閱讀器支持ISO/IEC 14443 A/MIFARE。無(wú)需外圍其他電路,Si522 的內(nèi)部發(fā)送器可驅(qū)動(dòng)讀寫器天線與ISO/IEC 14443A
    發(fā)表于 12-01 10:16

    NXP MFRC520/522/523 芯片鍵合線直徑變更通知解讀

    MFRC520、MFRC522MFRC523 芯片鍵合線直徑變更的通知。 文件下載: MFRC52302HN1,157.pdf 變更內(nèi)容概述 NXP 計(jì)劃將
    的頭像 發(fā)表于 11-26 15:12 ?746次閱讀

    SI522A芯片選型指南:低功耗RFID讀寫器解決方案

    部發(fā)送器可直接驅(qū)動(dòng)讀寫器天線與ISO/IEC 14443 A/MIFARE和應(yīng)答機(jī)進(jìn)行通信。接收器模塊提供強(qiáng)大而可靠的解調(diào)解碼電路,數(shù)字模塊
    的頭像 發(fā)表于 09-16 17:42 ?1021次閱讀

    MFRC522非接觸式讀卡器IC中文手冊(cè)

    電子發(fā)燒友網(wǎng)站提供《MFRC522非接觸式讀卡器IC中文手冊(cè).pdf》資料免費(fèi)下載
    發(fā)表于 05-12 18:11 ?12次下載

    別再用鑰匙啦!樹莓派Pico教你用RFID“刷”門禁~

    獲得讀卡器,再搭配4美元的樹莓派Pico,即可讀取卡片/標(biāo)簽的ID信息。在本教程中,我們將學(xué)習(xí)如何使用MFRC522讀卡器和樹莓派Pico讀取RFID標(biāo)簽和卡片。
    的頭像 發(fā)表于 04-23 16:03 ?2051次閱讀
    別再用鑰匙啦!樹莓派Pico教你用<b class='flag-5'>RFID</b>“刷”門禁~