RFID读卡模块RDM6300射频模块125khz读卡器 U...

9.3 市场价:10.23

购买此商品:

奖现金: ¥0.09

送9积分

商品信息

  • 商品货号:

    007568
  • 商品品牌:

    晒邦
  • 商品重量:

    7.7克

RFID读卡模块RDM6300射频模块125khz读卡器 UART串口输出

                              

产品介绍:

步骤

 

1.烧写固件:

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

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

long Password1=1111111;//稍后要改为读取到的卡号1
long Password2=2222222;//稍后要改为读取到的卡号2
int flag=0,RX_Flag=0;//串口标志
char Code[14]; //用于存放读到串口数据
long Num=0;//解码数据
int serpin=7;//舵机引脚定义
int Door=0;
 
void Read_ID(void)
{
    int i=0;
    char temp;
    for(i=0;(Serial.available()>0);i++)// 串口空闲
    //while(Serial.available()>0)
    {
      temp=Serial.read();
      Serial.print(temp);
      delay(2);
      Serial.println(i);
      if(temp==0X02)  //接收起始位
        {
         flag=1;i=0;RX_Flag=0;//
        }
      if(flag==1)//检测到起始位,开始接收数据
      {
        if(temp==0X03)//检测到结束码,
        {
         flag=0;  //标志清零
         if(i==13) RX_Flag=1;//第13位为结束码,收到数据,标志置1
         else RX_Flag=0;
       break;
        }
         Code[i]=temp;
      } 
    }       
     flag=0;//标志清零
}
 
void pulse( int serpin,int angle)
{
  int width;//舵机输出脉宽
  width=(angle*11)+500;//将角度转化为500-2480的脉宽值
  digitalWrite(serpin,HIGH);//将舵机接口电平至高
  delayMicroseconds(width);//延时脉宽值的微秒数
  digitalWrite(serpin,LOW);//将舵机接口电平至低
  delay(20-width/1000);
}
 
void setup() 
{
  pinMode(13,OUTPUT);
  pinMode(serpin,OUTPUT);
  Serial.begin(9600);
  Serial.println("This is a test for access control system");
  delay(100);
  Serial.println(Password1);
}
void loop()
{
  int i;
  long temp=0,time=0;
  RX_Flag=0;
  while(1)
  {
   Read_ID();
  if(RX_Flag==1)
  {
    for(i=5;i<11;i++)//数据解码,6位字符转为十六进制数,对应十进制卡号
    {
      Num<<=4;
        if(Code[i]>64)  Num+=((Code[i])-55);
        else Num+=((Code[i])-48);
        Serial.println(Num);
    }    
    Serial.println(Num);    
  if((Num==Password1)||(Num==Password2))//识别成功
  {
      digitalWrite(13,HIGH);
      delay(5);
      for(int i=0;i<=50;i++)//给予舵机足够的时间让它转到指定角度
     {
        pulse(serpin,20);//引用脉冲函数 
      }
      delay(2000);
      while(analogRead(Door)>400);
      delay(1000);
      digitalWrite(13,LOW);
      delay(5);
      for(int i=0;i<=50;i++)//给予舵机足够的时间让它转到指定角度
     {
        pulse(serpin,180);//引用脉冲函数
      }
   }
 //  else  识别失败
//    {
//      digitalWrite(13,LOW);
//    for(int i=0;i<=50;i++)//给予舵机足够的时间让它转到指定角度
//     {
//        pulse(serpin,90);//引用脉冲函数
//      }
//     }  
    while(Serial.read()>0);//清除缓存区
    RX_Flag=0;//标志位清零
    Num=0;//数据清零
   }   
  }
}

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

使用时需将代码的最前面两行的卡号修改为正确的卡号,可自行添加多个可识别的卡号。

2.硬件连接:

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

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

打开arduino IDE即可使用串口监视器查看读取到的卡号:

复制该卡号,黏贴到程序的最前面的卡号。多张卡,就添加多个号。再把正确的代码烧写一次到主控板即可。

最终效果如图:

           

实物拍摄: