17回答

1收藏

arduino制作门禁详细教程

#开源分享 #开源分享 14800 人阅读 | 17 人回复 | 2014-08-02

本帖最后由 ITEAD创易工作室 于 2014-12-19 09:49 编辑

http://player.youku.com/player.php/sid/XNzQ5Nzg2Mzg4/v.swf

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

所需配件:
  


电源方面还需要一根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. }
复制代码


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

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

逻辑设计: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

duka.jpg (54.45 KB, 下载次数: 218)

duka.jpg
ITEAD是深圳一家开源硬件公司,集研发、生产和销售于一体。可提供硬件定制和方案服务。淘宝:itead.taobao.com
分享到:
回复

使用道具 举报

回答|共 17 个

倒序浏览

沙发

feel-123

发表于 2014-8-2 13:04:16 | 只看该作者

很不错,顶一下
板凳

High哥

发表于 2014-8-3 09:46:33 | 只看该作者

感觉还不错啊!

http://shop109129479.taobao.com
纵然万劫不复,纵然相思入骨,
我也待你眉眼如初,岁月如故!
地板

ITEAD创易工作室

发表于 2014-8-4 10:11:59 | 只看该作者

heelary 发表于 2014-8-2 13:04
很不错,顶一下

谢谢支持!教程已补充完善。
ITEAD是深圳一家开源硬件公司,集研发、生产和销售于一体。可提供硬件定制和方案服务。淘宝:itead.taobao.com
5#

ITEAD创易工作室

发表于 2014-8-4 10:13:38 | 只看该作者

High哥 发表于 2014-8-3 09:46
感觉还不错啊!

谢谢支持!教程已补充完善。
ITEAD是深圳一家开源硬件公司,集研发、生产和销售于一体。可提供硬件定制和方案服务。淘宝:itead.taobao.com
6#

w0a0n7g

发表于 2014-8-7 11:13:22 | 只看该作者

挺有创意的,给力啊!
7#

w932443004

发表于 2014-8-7 15:51:17 | 只看该作者

收藏一下 多谢!
8#

ITEAD创易工作室

发表于 2014-8-7 16:23:05 | 只看该作者

w0a0n7g 发表于 2014-8-7 11:13
挺有创意的,给力啊!

  有顶才给力啊!
ITEAD是深圳一家开源硬件公司,集研发、生产和销售于一体。可提供硬件定制和方案服务。淘宝:itead.taobao.com
9#

woaidabaobao

发表于 2014-8-7 22:04:31 | 只看该作者

挺有创意的,给力
10#

ITEAD创易工作室

发表于 2014-8-8 15:03:55 | 只看该作者

wangku001wei 发表于 2014-8-7 15:51
收藏一下 多谢!

谢谢支持!
ITEAD是深圳一家开源硬件公司,集研发、生产和销售于一体。可提供硬件定制和方案服务。淘宝:itead.taobao.com
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

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