一、實(shí)驗(yàn)簡(jiǎn)介
1. RC522 刷卡模塊是應(yīng)用于13.56MHz 非接觸式通信中高集成度讀寫卡系列芯片中的一員,是NXP 公司針對(duì)“三表”應(yīng)用推出的一款低電壓、低成本、體積小的非接觸式讀寫卡芯片。
非接觸式IC卡又稱射頻卡,由IC芯片、感應(yīng)天線組成,常被用于智能儀表和便攜式手持設(shè)備中,如“三表”(水表、電表、燃?xì)獗恚?yīng)用。其射頻卡技術(shù),將射頻識(shí)別技術(shù)和IC卡技術(shù)結(jié)合,結(jié)束了無(wú)源(卡中無(wú)電源)和免接觸這一難題,為電子器件領(lǐng)域帶來(lái)突破。卡片在一定距離范圍(通常為5—10cm)靠近讀寫器表面,通過(guò)無(wú)線電波的傳遞來(lái)完成數(shù)據(jù)的讀寫操作。
二、實(shí)驗(yàn)器材
本實(shí)驗(yàn)使用到了CW32-48F大學(xué)計(jì)劃開發(fā)板、TTS語(yǔ)音播報(bào)模塊、RC522刷卡模塊、IC鑰匙扣卡及Keil5開發(fā)環(huán)境。
![]() CW32-48F大學(xué)計(jì)劃板 |
TTS語(yǔ)音播報(bào)模塊 |
![]() RC522刷卡模塊 |
IC鑰匙扣卡 |
![]() 實(shí)物圖 |
【RC522刷卡模塊與單片機(jī)接線】:
3.3V -- 3.3V
RST -- PB15
GND -- GND
IRQ 懸空
MISO -- PB14
MOSI -- PB13
SCK -- PB12
SDA -- PA6
(注:采用SPI通信方式)
【TTS語(yǔ)音播報(bào)模塊與單片機(jī)接線】:
黑線 -- GND
紅線 -- 3.3V
黃線 -- PA9
白線 -- PA10
三、原理簡(jiǎn)介
RC522模塊(射頻讀寫器)向IC卡發(fā)一組固定頻率的電磁波,卡片內(nèi)有一個(gè)LC串聯(lián)諧振電路,其頻率與讀寫器發(fā)射的頻率相同,這樣在電磁波激勵(lì)下,LC諧振電路產(chǎn)生共振,從而使電容內(nèi)有了電荷;在這個(gè)電荷的另一端,接有一個(gè)單向?qū)ǖ碾娮颖茫瑢㈦娙輧?nèi)的電荷送到另一個(gè)電容內(nèi)存儲(chǔ),當(dāng)所積累的電荷達(dá)到2V時(shí),此電容可作為電源為其它電路提供工作電壓,將卡內(nèi)數(shù)據(jù)發(fā)射出去或接受讀寫器的數(shù)據(jù)。
非接觸性IC卡與讀卡器之間通過(guò)無(wú)線電波來(lái)完成讀寫操作。二者之間的通訊頻率為13.56MHZ。非接觸性IC卡本身是無(wú)源卡,當(dāng)讀寫器對(duì)卡進(jìn)行讀寫操作時(shí),讀寫器發(fā)出的信號(hào)由兩部分疊加組成:一部分是電源信號(hào),該信號(hào)由卡接收后,與本身的L/C產(chǎn)生一個(gè)瞬間能量來(lái)供給芯片工作。另一部分則是指令和數(shù)據(jù)信號(hào),指揮芯片完成數(shù)據(jù)的讀取、修改、儲(chǔ)存等,并返回信號(hào)給讀寫器,完成一次讀寫操作。
四、核心代碼
main.c: #include "main.h" #include "Uart.h" #include "stdio.h" #include "Delay.h" #include "RC522.h" #include "Buzzer.h" #include "Lcd_Driver.h" #include "LCD_calculate.h" #define MONRY 100 //IC卡初始金額 uint8_t RecPcd[2]={0}; //存放IC卡類型 uint8_t uid[4]={0}; //存放IC唯一序列號(hào) uint8_t read[16]={0}; //存放讀出的數(shù)據(jù) uint8_t write[16]={0}; //存放寫入的數(shù)據(jù) uint8_t DefaultKey[6]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};//密鑰(出廠默認(rèn)) void Card_Refresh(void) //刷新卡的余額,僅在第一次使用IC卡或者IC金額刷光后使用 { write[0]=MONRY; //將初始金額存進(jìn)要寫入IC卡的數(shù)組中 RC522_PcdWrite(0x01,write);//將數(shù)據(jù)寫入塊1 } int main() { char str[16]=""; //存放顯示在屏幕上的字符串 Lcd_Init(); //TFT屏幕初始化 UART3_Init(); //串口3初始化,通過(guò)串口進(jìn)行語(yǔ)音播報(bào) Buzzer_Init(); //初始化板載蜂鳴器 RC522_Init(); //初始化RC522刷卡模塊 Gui_DrawFont_GBK16(0,0,BLUE,WHITE," BUS "); //顯示界面 TFTShowString(2,0,"price: 1 RMB "); //單次刷卡金額 while(1) { TFTShowString(4,0,"Waiting card..."); if(RC522_PcdRequest(PICC_REQALL,RecPcd)==MI_OK) //尋卡,有卡就認(rèn) { GPIO_WritePin(CW_GPIOB,GPIO_PIN_3,GPIO_Pin_SET); //尋卡成功則蜂鳴器發(fā)出“滴”的一聲 Delay_ms(100); GPIO_WritePin(CW_GPIOB,GPIO_PIN_3,GPIO_Pin_RESET); if(RC522_PcdAnticoll(uid)==MI_OK)//防沖突,應(yīng)對(duì)同時(shí)有多張卡的情況,將被選中卡片的序列號(hào)保存到uid中 { if(RC522_PcdSelect(uid)==MI_OK) //選定序列號(hào)為uid的卡片 { if(RC522_PcdAuthState(PICC_AUTHENT1A,0x01,DefaultKey,uid)==MI_OK)//驗(yàn)證該卡片第一扇區(qū)A密鑰 { // Card_Refresh(); //刷新卡的余額 if(RC522_PcdRead(0x01,read)==MI_OK) //1.讀取塊1(16字節(jié))數(shù)據(jù) { write[0]=read[0]-1; //2.讀出數(shù)據(jù)的第一字節(jié)減去(車)票價(jià),存到寫入數(shù)據(jù)的第一字節(jié)中 if(RC522_PcdWrite(0x01,write)==MI_OK) //3.寫入數(shù)據(jù)到塊1 { if(RC522_PcdRead(0x01,read)==MI_OK) //4.讀出刷卡后塊1的數(shù)據(jù),進(jìn)行播報(bào)和顯示 { printf("刷卡成功");//語(yǔ)音播報(bào)刷卡成功 TFTShowString(4,0,"Brushing card..."); sprintf(str," balance:%d",read[0]); TFTShowString(6,0,str);//顯示卡中余額 } } } } } } } Delay_s(1); //刷卡間隔 TFTShowString(6,0," "); //覆蓋余額顯示 } }
五、效果演示
![]() 等待刷卡 |
![]() 正在刷卡 |
審核編輯:湯梓紅
-
模塊
+關(guān)注
關(guān)注
7文章
2788瀏覽量
50430 -
射頻
+關(guān)注
關(guān)注
106文章
5758瀏覽量
170462 -
天線
+關(guān)注
關(guān)注
71文章
3282瀏覽量
142373 -
智能儀表
+關(guān)注
關(guān)注
1文章
165瀏覽量
24367 -
CW32
+關(guān)注
關(guān)注
1文章
255瀏覽量
1256
原文標(biāo)題:基于CW32的RC522 刷卡模塊的應(yīng)用
文章出處:【微信號(hào):武漢芯源半導(dǎo)體,微信公眾號(hào):武漢芯源半導(dǎo)體】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
紅外遙控RC522芯片RFID公交卡、飯卡刷卡系統(tǒng)應(yīng)用(附源碼)
求大神幫忙通過(guò)SPI總線和RC522模塊進(jìn)行通信,實(shí)現(xiàn)RFID刷卡
請(qǐng)問(wèn)怎么用Arduino控制RC522刷卡生成坐標(biāo)?
RC522刷卡如果實(shí)現(xiàn)貼一次刷一次?
如何通過(guò)Arduino對(duì)RC522刷卡控制舵機(jī)轉(zhuǎn)動(dòng)開門?
RFID模塊RC522的程序和電路圖等詳細(xì)資料合集免費(fèi)下載

RC522 RFID 射頻模塊原廠代碼免費(fèi)下載

Arduino使用RFID模塊來(lái)儲(chǔ)存卡信息實(shí)現(xiàn)智能門鎖(MF RC522)

評(píng)論