基于Arduino的RFID门禁

it2023-10-16  87

实验材料:Arduino Uno,RFID-RC522,SG90 软件:Mixly 1.1.5

Uno-RC522接线:

10SDA11MOSI12MISO13SCK

Uno-SG90接线:

5V红色线GND棕色线7黄色线

实验效果图: 实验视频:

mixly 图形化rfid门禁

图形化代码: C语言代码:

//4字节卡序列号,第5字节为校验字节 unsigned char serNum[5]; //写卡数据 //原扇区A密码,16个扇区,每个扇区密码6Byte unsigned char sectorKeyA[16][16] = { {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},}; //新扇区A密码,16个扇区,每个扇区密码6Byte unsigned char sectorNewKeyA[16][16] = { {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xff,0x07,0x80,0x69, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xff,0x07,0x80,0x69, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},}; #include <SPI.h> #include <RFID.h> #include <Servo.h> RFID rfid(10,5); unsigned char i,tmp; unsigned char status; unsigned char str[MAX_LEN]; unsigned char RC_size; unsigned char blockAddr; //选择操作的块地址0~63 Servo servo_7; String RFID_readcardnum(){ rfid.readCardSerial(); String stringserNum = String(rfid.serNum[0], HEX)+String(rfid.serNum[1], HEX)+String(rfid.serNum[2], HEX)+String(rfid.serNum[3], HEX)+String(rfid.serNum[4], HEX); //选卡,返回卡容量(锁定卡片,防止多次读写) rfid.selectTag(rfid.serNum); return stringserNum; } void setup(){ Serial.begin(9600); SPI.begin(); rfid.init(); servo_7.attach(7); } void loop(){ if(rfid.isCard()){ Serial.println(""); } if(rfid.isCard()){ if (RFID_readcardnum() == "208e36aa1") { servo_7.write(180); delay(1000); servo_7.write(0); delay(10); } } }

Ps:可能会出现无法读取卡号问题,可以断电重连试试或者换一个RC522.

最新回复(0)