<u id="blkba"></u>

        <acronym id="blkba"></acronym><font id="blkba"><tbody id="blkba"></tbody></font>
      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> 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

        關閉窗口

        相關文章

        特黄级国产片aaa,日本免费啪啪漫画无遮拦,欧美最厉害的rapper潮水
              <u id="blkba"></u>

              <acronym id="blkba"></acronym><font id="blkba"><tbody id="blkba"></tbody></font>