适用学校门禁卡的实验室刷卡门锁
本帖最后由 日昏昏兮路遥遥 于 2017-10-22 00:35 编辑参赛项目:
适用学校门禁卡的实验室刷卡门锁
参赛组员:
人数:1人
论坛ID:日昏昏兮路遥遥
简介:大一,入坑Arduino半年,终于啃完了《Arduino程序设计基础》
项目简介:
实验室去的人多,不可能每个成员都配一把钥匙,且钥匙也不方便带。
近期准备改造为智能实验室,方便的刷卡门锁势在必行。
学校125KHz的门禁卡,只能在宿舍大门用,甚是鸡肋,但又不得不天天带着。
做一个使用学校门禁卡的刷卡门锁,通过舵机拉动把手开门,不破坏门的结构及原有功能。
成果:long a = **********;//我
long b = **********;//同学
long kh = 0;
void setup()
{
pinMode(5,OUTPUT); //绿灯
pinMode(6,OUTPUT); //红灯
pinMode(2,OUTPUT);//继电器常高电位,低电位触发,电机拉
pinMode(3,OUTPUT); //继电器常高电位,低电位触发,电机放线
pinMode(4,INPUT_PULLUP);//设置为输入上拉模式,使端口稳定在高电平
Serial.begin(9600);
}
void loop()
{
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(5,1); //亮绿灯提示单片机启动
if(analogRead(A0) < 700) //检测电压,低于7v亮红灯报警
{
digitalWrite(6,1);
}
else
{
digitalWrite(6,0);
}
kh = Read_ID();
if (kh == a || kh == b) //识别成功
{
digitalWrite(2,LOW);//拉
delay(2000);
digitalWrite(2,HIGH);
delay(6000); //等6秒人进门
digitalWrite(3,LOW);
delay(900);//放
kh = 0;
}
}
long Read_ID() //RFID读卡模块 调取函数返回卡号
{
int flag=0,RX_Flag=0;
char Code;
long Num=0;
int i;
for(i=0;(Serial.available()>0);i++){
char temp=Serial.read();
delay(2);
if(temp==0X02){
flag=1;
i=0;
RX_Flag=0;}
if(flag==1){
if(temp==0X03){
flag=0;
if(i==13){
RX_Flag=1;}
else{
RX_Flag=0;}
break;}
Code=temp;} }
flag=0;
if(RX_Flag==1){
for(i=5;i<11;i++){
Num<<=4;
if(Code>64){
Num+=((Code)-55);}
else{
Num+=((Code)-48);}}
//Serial.println(Num);
while(Serial.read()>0);
RX_Flag=0;}
return Num;
}
感谢对社区开发大赛的支持,请比赛选手加入KittenBot杯第五届开源硬件开发大赛比赛交流群:226220454,如有问题可以随时在群里交流沟通。 本帖最后由 日昏昏兮路遥遥 于 2017-10-22 00:36 编辑
后续还会改进
本帖最后由 日昏昏兮路遥遥 于 2017-10-22 00:39 编辑
用的航模电池(2sp),做的电阻分压检测电池电压,低于7v亮一个红灯报警。门外做了个电源开关,平常要开门时才通电,打开电源后单片机启动,亮一个绿灯提示,刷卡,舵机改的减速电机拉门把手一点时间(略多余需要的时间,电机堵转大概秒,确保拉开),最近太忙了(各种无语的原因),现在只是做了一个能用的,后续会慢慢优化,加位置检测,单片机直接开门,加个门内电源开关,不用每次在外面关电源 需要重新发项目贴,具体要求请参考:
http://www.arduino.cn/thread-47517-1-1.html D:\Users\yang\Desktop大佬这是啥意思
页:
[1]