为了解决房东每天在宿舍忘记钥匙的问题,羊城通和手机不会忘记,所以他加入了宿舍门rfid开锁功能。
基本功能:使用本项目rc522读取rfid卡的id之后,与提前写入程序的程序Id比较号码,if比较成功,开门else不开门,后期可以增加屏幕显示,记录开门日志tf卡等功能现在很穷,但是这样做会导致功耗增加。usb充电器供电。现在一个8000毫安充电宝可以稳定使用一周。
原件需要准备arduino uno
rc522模块
足以打开你家门力气的舵机
各种平时用m1卡(羊城通,小区门禁,带nfc手机、饭卡等……)
(以上原始图片来自互联网)
生产的基本过程
1.硬件接线图及原理图
#include 《SPI.h》
#include 《RFID.h》
#include 《Servo.h》
Servo myservo;
extern uint8_t SmallFont[];
RFID rfid(10,8); //D10--接上SDA、D8--接RST D13--接上SCK D11--接上MOSI D12--接上MISO RQ不接
unsigned char serNum[5];
void setup()
{
Serial.begin(9600);/串口用于读取需要添加的卡号,然后手动写入程序
myservo.attach(9)//舵机针脚位9
myservo.write(0); //舵机初始化0度
SPI.begin();
rfid.init();
}
void loop()
{
long randNumber = random(0, 20);
unsigned char i,tmp;
unsigned char status;
unsigned char str[MAX_LEN];
unsigned char RC_size;
//找卡
rfid.isCard();
//读卡号
if (rfid.readCardSerial())
{
Serial.print(“your card id is : ”);
Serial.print(rfid.serNum[0]);
Serial.print(“ , ”);
Serial.print(rfid.serNum[1],BIN);
Serial.print(“ , ”);
Serial.print(rfid.serNum[2],BIN);
Serial.print(“ , ”);
Serial.print(rfid.serNum[2],BIN);
Serial.print(“ , ”);
Serial.print(rfid.serNum[4],BIN);
Serial.println(“ ”);
///以下是换卡号区域
if(rfid.serNum[0]==30||rfid.serNum[0]==148||rfid.serNum[0]==136||rfid.serNum[0]==161||rfid.serNum[0]==(68){//第一次筛选
for(int i=0;i《100;i++)
{
if(rfid.serNum[0]==30||rfid.serNum[0]==117||rfid.serNum[0]==155)//第二道筛选支持一人一号
{
Serial.println(“Welcome test 1”);
myservo.write(180);
}
if(rfid.serNum[0]==148||rfid.serNum[0]==68||rfid.serNum[0]==161)//rfid.serNum[0]==161 这个0是id位置可以自行更改
{
Serial.println(“Welcome test 2”);
myservo.write(180);
}
if(rfid.serNum[0]==136)
{
Serial.println(“Welcome test 3”);
myservo.write(180);
}
}
delay(1000);
myservo.write(0);
Serial.println(“closed”);
}
}
if (!rfid.readCardSerial()){
}
rfid.halt(); //休眠
}
本源码在arduino ide1.0.6正常编译
参考资料
感谢ID:酥糖 互联网上提供的类似项目
在互联网上找到的rfid库,大大加快了我的生产过程。
实战演练
1.充电宝解决方案
外壳是金莎巧克力的改字
这是未完成的状态,后面会喷漆,用胶带贴紧
我校旧锁舵机安装示意图↑
2.usb充电器供电方案
rc522 安装示意图