一、实验简介
1. rc522 刷卡模块是应用于13.56mhz 非接触式通信中高集成度读写卡系列芯片中的一员,是nxp 公司针对“三表”应用推出的一款低电压、低成本、体积小的非接触式读写卡芯片。
非接触式ic卡又称射频卡,由ic芯片、感应天线组成,常被用于智能仪表和便携式手持设备中,如“三表”(水表、电表、燃气表)应用。其射频卡技术,将射频识别技术和ic卡技术结合,结束了无源(卡中无电源)和免接触这一难题,为电子器件领域带来突破。卡片在一定距离范围(通常为5—10cm)靠近读写器表面,通过无线电波的传递来完成数据的读写操作。
二、实验器材
本实验使用到了cw32-48f大学计划开发板、tts语音播报模块、rc522刷卡模块、ic钥匙扣卡及keil5开发环境。
cw32-48f大学计划板
tts语音播报模块
rc522刷卡模块
ic钥匙扣卡
实物图
【rc522刷卡模块与单片机接线】:
3.3v -- 3.3v
rst -- pb15
gnd -- gnd
irq 悬空
miso -- pb14
mosi -- pb13
sck -- pb12
sda -- pa6
(注:采用spi通信方式)
【tts语音播报模块与单片机接线】:
黑线 -- gnd
红线 -- 3.3v
黄线 -- pa9
白线 -- pa10
三、原理简介
rc522模块(射频读写器)向ic卡发一组固定频率的电磁波,卡片内有一个lc串联谐振电路,其频率与读写器发射的频率相同,这样在电磁波激励下,lc谐振电路产生共振,从而使电容内有了电荷;在这个电荷的另一端,接有一个单向导通的电子泵,将电容内的电荷送到另一个电容内存储,当所积累的电荷达到2v时,此电容可作为电源为其它电路提供工作电压,将卡内数据发射出去或接受读写器的数据。
非接触性ic卡与读卡器之间通过无线电波来完成读写操作。二者之间的通讯频率为13.56mhz。非接触性ic卡本身是无源卡,当读写器对卡进行读写操作时,读写器发出的信号由两部分叠加组成:一部分是电源信号,该信号由卡接收后,与本身的l/c产生一个瞬间能量来供给芯片工作。另一部分则是指令和数据信号,指挥芯片完成数据的读取、修改、储存等,并返回信号给读写器,完成一次读写操作。
四、核心代码
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唯一序列号uint8_t read[16]={0}; //存放读出的数据uint8_t write[16]={0}; //存放写入的数据uint8_t defaultkey[6]={0xff,0xff,0xff,0xff,0xff,0xff};//密钥(出厂默认)void card_refresh(void) //刷新卡的余额,仅在第一次使用ic卡或者ic金额刷光后使用{ write[0]=monry; //将初始金额存进要写入ic卡的数组中 rc522_pcdwrite(0x01,write);//将数据写入块1}int main(){ char str[16]=; //存放显示在屏幕上的字符串 lcd_init(); //tft屏幕初始化 uart3_init(); //串口3初始化,通过串口进行语音播报 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) //寻卡,有卡就认 { gpio_writepin(cw_gpiob,gpio_pin_3,gpio_pin_set); //寻卡成功则蜂鸣器发出“滴”的一声 delay_ms(100); gpio_writepin(cw_gpiob,gpio_pin_3,gpio_pin_reset); if(rc522_pcdanticoll(uid)==mi_ok)//防冲突,应对同时有多张卡的情况,将被选中卡片的序列号保存到uid中 { if(rc522_pcdselect(uid)==mi_ok) //选定序列号为uid的卡片 { if(rc522_pcdauthstate(picc_authent1a,0x01,defaultkey,uid)==mi_ok)//验证该卡片第一扇区a密钥 { // card_refresh(); //刷新卡的余额 if(rc522_pcdread(0x01,read)==mi_ok) //1.读取块1(16字节)数据 { write[0]=read[0]-1; //2.读出数据的第一字节减去(车)票价,存到写入数据的第一字节中 if(rc522_pcdwrite(0x01,write)==mi_ok) //3.写入数据到块1 { if(rc522_pcdread(0x01,read)==mi_ok) //4.读出刷卡后块1的数据,进行播报和显示 { printf(刷卡成功);//语音播报刷卡成功 tftshowstring(4,0,brushing card...); sprintf(str, balance:%d,read[0]); tftshowstring(6,0,str);//显示卡中余额 } } } } } } } delay_s(1); //刷卡间隔 tftshowstring(6,0, ); //覆盖余额显示 }}
五、效果演示
等待刷卡
正在刷卡
真会玩!1916个电子元器件组成的电子钟
特斯拉让丰田汽车急眼了?
人工智能持续创新,助力人脸识别技术产业发展
2008沙特摩托车展
光电传感器在无人车上有什么运用
RC522刷卡模块原理简介
PND价格走势:大品牌挑起价格战
健身房中的智能镜子可帮助我们进行更好的智能健身
电阻的单位
2018最美旗舰华为P20渐变结构色不是每个品牌都能做的
码相机感光器件
大联大友尚基于ST推出最新STSPIN低电压电机控制单芯片
企业对公有链有哪三点误解?公有链、私有链和联盟链之间有什么区别?
澳大利亚将推出区块链EZToken的忠诚度奖励计划
从美国五大互联网科技公司的产品技术发展路径和方向看未来科技7大趋势
英国Pickering公司推出新型灵活的PXI/PXIe微波开关系列, 提供出色性能、优化测试系统
基于UBA2211的高效CFL驱动器设计
贴片电阻阻值降低失效分析
运算放大器LTC6268-10做跨阻放大时波形设计问题
低功耗蓝牙为什么需要功率控制?