查看: 13913|回复: 17

arduino制作门禁详细教程

[复制链接]
  • TA的每日心情
    擦汗
    2014-7-18 09:38
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2014-8-2 12:34:23 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 ITEAD创易工作室 于 2014-12-19 09:49 编辑



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

    所需配件:
      
    rdm6300-1.jpg

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

    步骤:

    烧写固件:

    下面开始进入主题了!

    先给Nano烧写此次的门禁代码,因为我们的是micro的接口,所以要用micro的USB数据线。

    纯代码,无需调用库,请给我们新来的小小工程师一点掌声,谢谢!

    当然代码方面还可以优化,这个就交给大家来完善吧。

    1. long Password1=11402124;//可识别卡号1,
    2. long Password2=7927290;//可识别卡号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. }
    复制代码
    QQ图片20140802104726.jpg

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

    使用时需将待识别的卡号修改为自己的,可自行添加多个可识别的卡号。重新烧写一遍即可。

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

    3. 硬件连接:

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

    接线.jpg

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

    uno rdm6300.jpg

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

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

    duka.jpg
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2014-9-23 05:09
  • 签到天数: 113 天

    连续签到: 1 天

    [LV.6]常住居民II

    发表于 2014-8-2 13:04:16 | 显示全部楼层
    很不错,顶一下
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2017-12-6 17:33
  • 签到天数: 853 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2014-8-3 09:46:33 | 显示全部楼层
    感觉还不错啊!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2014-7-18 09:38
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]偶尔看看I

     楼主| 发表于 2014-8-4 10:11:59 | 显示全部楼层
    heelary 发表于 2014-8-2 13:04
    很不错,顶一下

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

    使用道具 举报

  • TA的每日心情
    擦汗
    2014-7-18 09:38
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]偶尔看看I

     楼主| 发表于 2014-8-4 10:13:38 | 显示全部楼层
    High哥 发表于 2014-8-3 09:46
    感觉还不错啊!

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

    使用道具 举报

  • TA的每日心情
    无聊
    2014-8-28 16:58
  • 签到天数: 13 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2014-8-7 11:13:22 | 显示全部楼层
    挺有创意的,给力啊!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-8-29 20:40
  • 签到天数: 1341 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2014-8-7 15:51:17 | 显示全部楼层
    收藏一下 多谢!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2014-7-18 09:38
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]偶尔看看I

     楼主| 发表于 2014-8-7 16:23:05 | 显示全部楼层
    w0a0n7g 发表于 2014-8-7 11:13
    挺有创意的,给力啊!

      有顶才给力啊!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-5-20 10:01
  • 签到天数: 41 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2014-8-7 22:04:31 | 显示全部楼层
    挺有创意的,给力
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2014-7-18 09:38
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]偶尔看看I

     楼主| 发表于 2014-8-8 15:03:55 | 显示全部楼层
    wangku001wei 发表于 2014-8-7 15:51
    收藏一下 多谢!

    谢谢支持!
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条



    手机版|小黑屋|与非网

    GMT+8, 2025-1-12 16:12 , Processed in 0.199311 second(s), 36 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.