久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> Arduino >> 瀏覽文章

arduino RDM6300制作門禁詳細教程

作者:未知   來源:互聯網   點擊數:  更新時間:2014年08月08日   【字體:

RDM6300是一款能讀125K RFID卡的模塊,我們可以利用此身份識別功能結合舵機完成門禁的設計。今天就詳細介紹其具體實現方法。

所需配件:



電源方面還需要一根micro數據線和一個移動電源。

步驟:

1. 讀取卡號:

Rdm6300是直接串口讀取卡信息的,包括卡號。所以取號很簡單,硬件連接如下:

    

打開arduino IDE燒寫一段空程序即可使用串口監視器查看卡號:

void setup(){}
void loop(){}
  


復制卡號,記下來。多張卡,就記下多個號。

2. 燒寫固件:

下面開始進入主題了!

先給Nano燒寫此次的門禁代碼,因為我們的是micro的接口,所以要用micro的USB數據線。

純代碼,無需調用庫,請給我們新來的小小工程師一點掌聲,謝謝!

當然代碼方面還可以優化,這個就交給大家來完善吧。

long Password1=11402124;//可識別卡號1
long Password2=7927290;//可識別卡號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度開門狀態,關上門,磁傳感器感應到磁力,延時一秒舵機歸位鎖門。

使用時需將待識別的卡號修改為自己的,可自行添加多個可識別的卡號。

3. 硬件連接:

按圖鏈接主控板Iteaduino NANO和RDM6300模塊及舵機,如圖所示,用硬件串口讀取RDM6300所識別的卡號,用數字輸出腳7腳輸出PWM波控制舵機,A0取磁傳感器的值。Nano剛好有3對電源腳。



下面是uno的接線示意圖,可以不用到磁開關,看個人實際應用吧。



最終效果如圖,當然小伙伴們可以用個盒子把配件都裝起來。




相關產品資料下載:
RDM6300 ID讀卡模塊:http://pan.baidu.com/s/1kTytG7X
micro Nano資料及驅動:http://pan.baidu.com/s/1hqCDaq4
 

技術討論群:272420347

關閉窗口

相關文章

主站蜘蛛池模板: 欧美视频1区 | 久久精品亚洲精品国产欧美 | 国产精品视频 | 国产成人jvid在线播放 | 欧美成人一区二区 | 欧美亚洲网站 | 亚洲欧美日韩高清 | 中文字幕一区二区三区精彩视频 | 密桃av | 成人黄色在线 | 欧美日韩91 | 一级黄色片毛片 | 中文字幕一区二区三区精彩视频 | 欧美激情久久久 | 久久久人成影片免费观看 | 欧美在线亚洲 | 日本在线你懂的 | 亚洲综合在线网 | 夜夜操天天干 | 天堂av免费观看 | 亚洲精品乱码久久久久久蜜桃91 | 自拍偷拍第一页 | 一级片av| 国产一区亚洲 | 国产精品毛片一区二区在线看 | 国产日韩欧美激情 | 日韩精品成人一区二区三区视频 | 国产精品欧美精品日韩精品 | 日韩国产一区二区三区 | 国产成人精品久久二区二区91 | 国产精品一区二区不卡 | 精品在线播放 | 欧美精品中文字幕久久二区 | 国产探花在线精品一区二区 | 国产精品久久久久国产a级 欧美日本韩国一区二区 | 国产欧美精品区一区二区三区 | 欧美一区二区三区免费在线观看 | 午夜www | 91精品国产综合久久久久久丝袜 | 午夜精品一区二区三区在线观看 | 久久亚洲国产精品 |