RDM6300是一款能讀125K RFID卡的模塊,我們可以利用此身份識(shí)別功能結(jié)合舵機(jī)完成門禁的設(shè)計(jì)。今天就詳細(xì)介紹其具體實(shí)現(xiàn)方法。
所需配件:

電源方面還需要一根micro數(shù)據(jù)線和一個(gè)移動(dòng)電源。
步驟:
1. 讀取卡號(hào):
Rdm6300是直接串口讀取卡信息的,包括卡號(hào)。所以取號(hào)很簡(jiǎn)單,硬件連接如下:

打開arduino IDE燒寫一段空程序即可使用串口監(jiān)視器查看卡號(hào):
void setup(){}
void loop(){}

復(fù)制卡號(hào),記下來。多張卡,就記下多個(gè)號(hào)。
2. 燒寫固件:
下面開始進(jìn)入主題了!
先給Nano燒寫此次的門禁代碼,因?yàn)槲覀兊氖莔icro的接口,所以要用micro的USB數(shù)據(jù)線。
純代碼,無需調(diào)用庫(kù),請(qǐng)給我們新來的小小工程師一點(diǎn)掌聲,謝謝!
當(dāng)然代碼方面還可以優(yōu)化,這個(gè)就交給大家來完善吧。
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)//檢測(cè)到起始位,開始接收數(shù)據(jù)
{
if(temp==0X03)//檢測(cè)到結(jié)束碼,
{
flag=0; //標(biāo)志清零
if(i==13) RX_Flag=1;//第13位為結(jié)束碼,收到數(shù)據(jù),標(biāo)志置1
else RX_Flag=0;
break;
}
Code[i]=temp;
}
}
flag=0;//標(biāo)志清零
int width;//舵機(jī)輸出脈寬
width=(angle*11)+500;//將角度轉(zhuǎn)化為500-2480的脈寬值
digitalWrite(serpin,HIGH);//將舵機(jī)接口電平至高
delayMicroseconds(width);//延時(shí)脈寬值的微秒數(shù)
digitalWrite(serpin,LOW);//將舵機(jī)接口電平至低
delay(20-width/1000);
pinMode(13,OUTPUT);
pinMode(serpin,OUTPUT);
Serial.begin(9600);
Serial.println("This is a test for access control system");
delay(100);
Serial.println(Password1);
int i;
long temp=0,time=0;
RX_Flag=0;
while(1)
{
Read_ID();
if(RX_Flag==1)
{
for(i=5;i<11;i++)//數(shù)據(jù)解碼,6位字符轉(zhuǎn)為十六進(jìn)制數(shù),對(duì)應(yīng)十進(jìn)制卡號(hào)
{
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))//識(shí)別成功
{
digitalWrite(13,HIGH);
delay(5);
for(int i=0;i<=50;i++)//給予舵機(jī)足夠的時(shí)間讓它轉(zhuǎn)到指定角度
{
pulse(serpin,20);//引用脈沖函數(shù)
}
delay(2000);
while(analogRead(Door)>400);
delay(1000);
digitalWrite(13,LOW);
delay(5);
for(int i=0;i<=50;i++)//給予舵機(jī)足夠的時(shí)間讓它轉(zhuǎn)到指定角度
{
pulse(serpin,180);//引用脈沖函數(shù)
}
}
// else 識(shí)別失敗
while(Serial.read()>0);//清除緩存區(qū)
RX_Flag=0;//標(biāo)志位清零
Num=0;//數(shù)據(jù)清零
}
}
所需配件:

電源方面還需要一根micro數(shù)據(jù)線和一個(gè)移動(dòng)電源。
步驟:
1. 讀取卡號(hào):
Rdm6300是直接串口讀取卡信息的,包括卡號(hào)。所以取號(hào)很簡(jiǎn)單,硬件連接如下:

打開arduino IDE燒寫一段空程序即可使用串口監(jiān)視器查看卡號(hào):
void setup(){}
void loop(){}

復(fù)制卡號(hào),記下來。多張卡,就記下多個(gè)號(hào)。
2. 燒寫固件:
下面開始進(jìn)入主題了!
先給Nano燒寫此次的門禁代碼,因?yàn)槲覀兊氖莔icro的接口,所以要用micro的USB數(shù)據(jù)線。
純代碼,無需調(diào)用庫(kù),請(qǐng)給我們新來的小小工程師一點(diǎn)掌聲,謝謝!
當(dāng)然代碼方面還可以優(yōu)化,這個(gè)就交給大家來完善吧。
long Password1=11402124;//可識(shí)別卡號(hào)1
long Password2=7927290;//可識(shí)別卡號(hào)2
int flag=0,RX_Flag=0;//串口標(biāo)志
char Code[14]; //用于存放讀到串口數(shù)據(jù)
long Num=0;//解碼數(shù)據(jù)
int serpin=7;//舵機(jī)引腳定義
int Door=0;
void Read_ID(void)
{
}
void pulse( int serpin,int angle)
{
}
void setup()
{
}
void loop()
{
// {
// digitalWrite(13,LOW);
// for(int i=0;i<=50;i++)//給予舵機(jī)足夠的時(shí)間讓它轉(zhuǎn)到指定角度
// {
// pulse(serpin,90);//引用脈沖函數(shù)
// }
// }
}
邏輯設(shè)計(jì):RDM6300識(shí)別到正確的卡號(hào)后,舵機(jī)旋轉(zhuǎn)180度開門,如果門沒被推開,磁傳感器還能感應(yīng)到磁力,3秒后舵機(jī)歸位鎖門;如果讀卡成功,推門進(jìn)入,磁傳感器感應(yīng)不到磁力,舵機(jī)保持180度開門狀態(tài),關(guān)上門,磁傳感器感應(yīng)到磁力,延時(shí)一秒舵機(jī)歸位鎖門。
使用時(shí)需將待識(shí)別的卡號(hào)修改為自己的,可自行添加多個(gè)可識(shí)別的卡號(hào)。
3. 硬件連接:
按圖鏈接主控板Iteaduino NANO和RDM6300模塊及舵機(jī),如圖所示,用硬件串口讀取RDM6300所識(shí)別的卡號(hào),用數(shù)字輸出腳7腳輸出PWM波控制舵機(jī),A0取磁傳感器的值。Nano剛好有3對(duì)電源腳。

下面是uno的接線示意圖,可以不用到磁開關(guān),看個(gè)人實(shí)際應(yīng)用吧。

最終效果如圖,當(dāng)然小伙伴們可以用個(gè)盒子把配件都裝起來。

相關(guān)產(chǎn)品資料下載:
RDM6300 ID讀卡模塊:http://pan.baidu.com/s/1kTytG7X
micro Nano資料及驅(qū)動(dòng):http://pan.baidu.com/s/1hqCDaq4
使用時(shí)需將待識(shí)別的卡號(hào)修改為自己的,可自行添加多個(gè)可識(shí)別的卡號(hào)。
3. 硬件連接:
按圖鏈接主控板Iteaduino NANO和RDM6300模塊及舵機(jī),如圖所示,用硬件串口讀取RDM6300所識(shí)別的卡號(hào),用數(shù)字輸出腳7腳輸出PWM波控制舵機(jī),A0取磁傳感器的值。Nano剛好有3對(duì)電源腳。

下面是uno的接線示意圖,可以不用到磁開關(guān),看個(gè)人實(shí)際應(yīng)用吧。

最終效果如圖,當(dāng)然小伙伴們可以用個(gè)盒子把配件都裝起來。

相關(guān)產(chǎn)品資料下載:
RDM6300 ID讀卡模塊:http://pan.baidu.com/s/1kTytG7X
micro Nano資料及驅(qū)動(dòng):http://pan.baidu.com/s/1hqCDaq4
技術(shù)討論群:272420347