一、前几天在某宝上刚买了个RFID-RC522 ,目标是复制我的门禁卡(看样子没多大希望了)。
二、各种百度各种谷歌都没找到与Arduino的连接方式。
so,分享下我的连接方式,与大家共同进步。。。。
材料:
1、Arduino Uno R3
2、RFID-RC522
3、连接线7根
最下面一根红色为3.3v的电源。
最上面的为SDA,其它照图连接就可以了。
下面是测试代码:
1 #include <SPI.h> 2 3 #define uchar unsigned char 4 #define uint unsigned int 5 6 //数据数组的最大长度 7 #define MAX_LEN 16 8 9 / 10 //set the pin设置引脚 11 / 12 const int chipSelectPin = 10; //SDA引脚片选引脚 13 const int NRSTPD = 5; //RST引脚 14 15 //MF522 命令位 16 #define PCD_IDLE 0x00 //取消当前命令不行动 17 #define PCD_AUTHENT 0x0E //验证密码的钥匙 18 #define PCD_RECEIVE 0x08 //接收数据 19 #define PCD_TRANSMIT 0x04 //发送数据 20 #define PCD_TRANSCEIVE 0x0C //发送和接收数据 21 #define PCD_RESETPHASE 0x0F //重置 22 #define PCD_CALCCRC 0x03 //CRC校验和的计算 23 24 //Mifare_One卡的命令位 25 #define PICC_REQIDL 0x26 //在天线区域搜索不进入睡眠模式的卡 26 #define PICC_REQALL 0x52 //搜索天线区域中的所有卡 27 #define PICC_ANTICOLL 0x93 //防止冲突 28 #define PICC_SElECTTAG 0x93 //选择卡 29 #define PICC_AUTHENT1A 0x60 //验证A密码密钥 30 #define PICC_AUTHENT1B 0x61 //验证B密码密钥 31 #define PICC_READ 0x30 //读 32 #define PICC_WRITE 0xA0 //写 33 #define PICC_DECREMENT 0xC0 //扣除值 34 #define PICC_INCREMENT 0xC1 //装载值 35 #define PICC_RESTORE 0xC2 //还原数据到缓冲区 36 #define PICC_TRANSFER 0xB0 //保存数据到缓冲区 37 #define PICC_HALT 0x50 //睡眠模式 38 39 40 //通信时MF522的返回值 41 #define MI_OK 0 42 #define MI_NOTAGERR 1 43 #define MI_ERR 2 44 45 //------------------MFRC522 注册 --------------- 46 //Page 0:命令和状态 47 #define Reserved00 0x00 //保留将来之用 48 #define CommandReg 0x01 //启动和停止命令的执行 49 #define CommIEnReg 0x02 //中断请求传递的使能和禁能控制位。 50 #define DivlEnReg 0x03 //中断请求传递的使能和禁能控制位。 51 #define CommIrqReg 0x04 //包含中断请求标志 52 #define DivIrqReg 0x05 //包含中断请求标志 53 #define ErrorReg 0x06 //错误标志,指示执行行的上个命令的错误状态 54 #define Status1Reg 0x07 //包含通信的状态标志 55 #define Status2Reg 0x08 //包含接收器和发射器的状态标志 56 #define FIFODataReg 0x09 //64字节FIFO缓冲器的输入输出 57 #define FIFOLevelReg 0x0A //指示FIFO中存储的字节数 58 #define WaterLevelReg 0x0B //定义FIFO下溢和上溢报警的FIFO深度。 59 #define ControlReg 0x0C //不同的控制寄存器 60 #define BitFramingReg 0x0D //面向位的帧调节 61 #define CollReg 0x0E //RF接口上检测到的第一个位冲突的位的位置 62 #define Reserved01 0x0F //保留将来之用 63 //Page 1:控制 64 #define Reserved10 0x10 //保留将来之用 65 #define ModeReg 0x11 //定义发射和接收的常用模式 66 #define TxModeReg 0x12 //定义发射过程的数据传输速率 67 #define RxModeReg 0x13 //定义接收过程中的数据传输速率 68 #define TxControlReg 0x14 //控制天线驱动管脚TX1和TX2的逻辑特征 69 #define TxAutoReg 0x15 //控制天线驱动的设置 70 #define TxSelReg 0x16 //选择天线驱动器的内部源 71 #define RxSelReg 0x17 //选着内部的接收器设置 72 #define RxThresholdReg 0x18 //选择位译码器的阀值 73 #define DemodReg 0x19 //定义解调器的设置 74 #define Reserved11 0x1A //保留将来之用 75 #define Reserved12 0x1B //保留将来之用 76 #define MifareReg 0x1C //控制ISO 14443/MIFARE 模式106kbit/s的通信 77 #define Reserved13 0x1D //保留将来之用 78 #define Reserved14 0x1E //保留将来之用 79 #define SerialSpeedReg 0x1F //选择串行UART接口的速率 80 //Page 2:发生器 81 #define Reserved20 0x20 //保留将来之用 82 #define CRCResultRegM 0x21 //显示CRC计算的实际MSB和LSB值(MSB) 83 #define CRCResultRegL 0x22 //显示CRC计算的实际MSB和LSB值(LSB) 84 #define Reserved21 0x23 //保留将来之用 85 #define ModWidthReg 0x24 //控制ModWidth的设置 86 #define Reserved22 0x25 //保留将来之用 87 #define RFCfgReg 0x26 //配置接受器增益 88 #define GsNReg 0x27 //选择天线驱动器管脚TX1和TX2的调制电导 89 #define CWGsPReg 0x28 //选择天线驱动器管脚TX1和TX2的调制电导 90 #define ModGsPReg 0x29 //选择天线驱动器管脚TX1和TX2的调制电导 91 #define TModeReg 0x2A //定义内部定时器的设置A 92 #define TPrescalerReg 0x2B //定义内部定时器的设置B 93