极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 77791|回复: 22

arduino 门禁完全教程

[复制链接]
发表于 2014-8-2 12:33:43 | 显示全部楼层 |阅读模式
本帖最后由 ITEAD创易工作室 于 2014-12-19 09:48 编辑



RDM6300是一款能读125K RFID卡的模块,我们可以利用此身份识别功能结合舵机完成门禁的设计。今天就详细介绍其具体实现方法。

所需配件:
  


电源方面还需要一根micro数据线和一个移动电源。

步骤:
  
烧写固件:

下面开始进入主题了!

先给Nano烧写此次的门禁代码,因为我们的是micro的接口,所以要用micro的USB数据线。
纯代码,无需调用库,请给我们新来的小小工程师一点掌声,谢谢!当然代码方面还可以优化,这个就交给大家来完善吧。

  1. long Password1=1111111;//稍后要改为读取到的卡号1
  2. long Password2=2222222;//稍后要改为读取到的卡号2
  3. int flag=0,RX_Flag=0;//串口标志
  4. char Code[14]; //用于存放读到串口数据
  5. long Num=0;//解码数据
  6. int serpin=7;//舵机引脚定义
  7. int Door=0;

  8. void Read_ID(void)
  9. {
  10.     int i=0;
  11.     char temp;
  12.     for(i=0;(Serial.available()>0);i++)// 串口空闲
  13.     //while(Serial.available()>0)
  14.     {
  15.       temp=Serial.read();
  16.       Serial.print(temp);
  17.       delay(2);
  18.       Serial.println(i);
  19.       if(temp==0X02)  //接收起始位
  20.         {
  21.          flag=1;i=0;RX_Flag=0;//
  22.         }
  23.       if(flag==1)//检测到起始位,开始接收数据
  24.       {
  25.         if(temp==0X03)//检测到结束码,
  26.         {
  27.          flag=0;  //标志清零
  28.          if(i==13) RX_Flag=1;//第13位为结束码,收到数据,标志置1
  29.          else RX_Flag=0;
  30.        break;
  31.         }
  32.          Code[i]=temp;
  33.       }
  34.     }      
  35.      flag=0;//标志清零
  36. }

  37. void pulse( int serpin,int angle)
  38. {
  39.   int width;//舵机输出脉宽
  40.   width=(angle*11)+500;//将角度转化为500-2480的脉宽值
  41.   digitalWrite(serpin,HIGH);//将舵机接口电平至高
  42.   delayMicroseconds(width);//延时脉宽值的微秒数
  43.   digitalWrite(serpin,LOW);//将舵机接口电平至低
  44.   delay(20-width/1000);
  45. }

  46. void setup()
  47. {
  48.   pinMode(13,OUTPUT);
  49.   pinMode(serpin,OUTPUT);
  50.   Serial.begin(9600);
  51.   Serial.println("This is a test for access control system");
  52.   delay(100);
  53.   Serial.println(Password1);
  54. }
  55. void loop()
  56. {
  57.   int i;
  58.   long temp=0,time=0;
  59.   RX_Flag=0;
  60.   while(1)
  61.   {
  62.    Read_ID();
  63.   if(RX_Flag==1)
  64.   {
  65.     for(i=5;i<11;i++)//数据解码,6位字符转为十六进制数,对应十进制卡号
  66.     {
  67.       Num<<=4;
  68.         if(Code[i]>64)  Num+=((Code[i])-55);
  69.         else Num+=((Code[i])-48);
  70.         Serial.println(Num);
  71.     }   
  72.     Serial.println(Num);   
  73.   if((Num==Password1)||(Num==Password2))//识别成功
  74.   {
  75.       digitalWrite(13,HIGH);
  76.       delay(5);
  77.       for(int i=0;i<=50;i++)//给予舵机足够的时间让它转到指定角度
  78.      {
  79.         pulse(serpin,20);//引用脉冲函数
  80.       }
  81.       delay(2000);
  82.       while(analogRead(Door)>400);
  83.       delay(1000);
  84.       digitalWrite(13,LOW);
  85.       delay(5);
  86.       for(int i=0;i<=50;i++)//给予舵机足够的时间让它转到指定角度
  87.      {
  88.         pulse(serpin,180);//引用脉冲函数
  89.       }
  90.    }
  91. //  else  识别失败
  92. //    {
  93. //      digitalWrite(13,LOW);
  94. //    for(int i=0;i<=50;i++)//给予舵机足够的时间让它转到指定角度
  95. //     {
  96. //        pulse(serpin,90);//引用脉冲函数
  97. //      }
  98. //     }  
  99.     while(Serial.read()>0);//清除缓存区
  100.     RX_Flag=0;//标志位清零
  101.     Num=0;//数据清零
  102.    }   
  103.   }
  104. }
复制代码




复制卡号,记下来。多张卡,就记下多个号。

使用时需将待识别的卡号修改为自己的,可自行添加多个可识别的卡号。


逻辑设计:RDM6300识别到正确的卡号后,舵机旋转180度开门,如果门没被推开,磁传感器还能感应到磁力,3秒后舵机归位锁门;如果读卡成功,推门进入,磁传感器感应不到磁力,舵机保持180度开门状态,关上门,磁传感器感应到磁力,延时一秒舵机归位锁门。

3. 硬件连接:

按图链接主控板Iteaduino NANO和RDM6300模块及舵机,如图1所示,用硬件串口读取RDM6300所识别的卡号,用数字输出脚7脚输出PWM波控制舵机,A0取磁传感器的值。Nano刚好有3对电源脚。



下面是uno的接线示意图,可以不用到磁开关,看个人实际应用吧。



最终效果如图,当然小伙伴们可以用个盒子把配件都装起来。



相关产品资料下载:
RDM6300 ID读卡模块:http://pan.baidu.com/s/1kTytG7X
micro Nano资料及驱动:http://pan.baidu.com/s/1hqCDaq4











本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2014-8-2 16:13:54 | 显示全部楼层
这个挺好的,挺有意思的,这个在深圳的租房里面吧,呵呵
回复 支持 反对

使用道具 举报

发表于 2014-8-2 21:56:31 | 显示全部楼层
希望完善一些
回复 支持 反对

使用道具 举报

发表于 2014-8-2 22:13:28 | 显示全部楼层
没想到9克舵机能拖得动拉销。
回复 支持 反对

使用道具 举报

发表于 2014-8-3 21:07:52 | 显示全部楼层
淘宝一个315无线遥控开关就可以完成了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-4 09:46:46 | 显示全部楼层
嵌入式linux 发表于 2014-8-2 16:13
这个挺好的,挺有意思的,这个在深圳的租房里面吧,呵呵

教程已补充完善。你家的不是这种拉栓锁?那就不太合适了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-4 09:47:07 | 显示全部楼层
学慧放弃 发表于 2014-8-2 21:56
希望完善一些

教程已补充完善。谢谢支持!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-4 09:48:20 | 显示全部楼层
mjgzdnw 发表于 2014-8-2 22:13
没想到9克舵机能拖得动拉销。

具体的拉力还要看门栓的摩擦力。教程已补充完善。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-4 09:49:32 | 显示全部楼层
Ansifa 发表于 2014-8-3 21:07
淘宝一个315无线遥控开关就可以完成了

作为一个超级版主,竟然公然让我们去淘宝买成品。我真的为极客和极客工坊感到伤心啊!
回复 支持 反对

使用道具 举报

发表于 2014-8-4 09:51:59 | 显示全部楼层
非常有趣啊!!!!!!!
回复 支持 反对

使用道具 举报

发表于 2014-8-4 21:05:58 | 显示全部楼层
非常有创意,舵机拉动门锁,不错。
回复 支持 反对

使用道具 举报

发表于 2014-8-4 21:34:03 | 显示全部楼层
这个挺有意思的
回复 支持 反对

使用道具 举报

发表于 2014-8-4 23:03:04 | 显示全部楼层
谢谢分享。。。。。。。。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-5 10:07:24 | 显示全部楼层
philhoo 发表于 2014-8-4 21:05
非常有创意,舵机拉动门锁,不错。

很简单的原理。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-5 17:04:44 | 显示全部楼层
电子狂人 发表于 2014-8-4 21:34
这个挺有意思的

谢谢支持!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-29 23:28 , Processed in 0.048152 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表