21
105 年度 168 國立勤益科技大學 電子工程系實務專題報告 RFID 門鎖 指導教授:陳若貞 專題學生:李振廷 中華民國 106 6

RFID 門鎖 - 國立勤益科技大學-電子工程系(所 ...eeproject.ncut.edu.tw/upload/Achievements/105_20170629172714n76O.pdf · 105 年度 第168組 國立勤益科技大學

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: RFID 門鎖 - 國立勤益科技大學-電子工程系(所 ...eeproject.ncut.edu.tw/upload/Achievements/105_20170629172714n76O.pdf · 105 年度 第168組 國立勤益科技大學

105 年度 第 168 組

國立勤益科技大學

電子工程系實務專題報告

RFID 門鎖

指導教授:陳若貞

專題學生:李振廷

中華民國 106年 6 月

Page 2: RFID 門鎖 - 國立勤益科技大學-電子工程系(所 ...eeproject.ncut.edu.tw/upload/Achievements/105_20170629172714n76O.pdf · 105 年度 第168組 國立勤益科技大學

專題名稱:RFID 門鎖

姓名:李振廷 學號: 3A213214 班級:四子四丙 座號: 14

Page 3: RFID 門鎖 - 國立勤益科技大學-電子工程系(所 ...eeproject.ncut.edu.tw/upload/Achievements/105_20170629172714n76O.pdf · 105 年度 第168組 國立勤益科技大學

i

摘要

本專題功能是一門禁系統,感應到正確的卡片即讓門打開,錯誤的卡片會

有長逼一聲。當門打開時會使手機端在螢幕中央彈出訊息提示使用者。

感應卡片用的是 RFID 模組,模組名稱是 Mifare RFID-RC522,是 NXP(恩

智普)半導體公司推出的非接觸型 IC 卡。門鎖是使用陽極鎖,而傳訊息給手

機用的是藍芽模組,HC05。

Page 4: RFID 門鎖 - 國立勤益科技大學-電子工程系(所 ...eeproject.ncut.edu.tw/upload/Achievements/105_20170629172714n76O.pdf · 105 年度 第168組 國立勤益科技大學

ii

目錄

摘要 ......................................................................................................................... i

目錄 ........................................................................................................................ ii

第一章—緒言 ........................................................................................................ 1

第二章—理論 ........................................................................................................ 2

2.1 接線圖 ............................................................................................. 2

2.2 流程圖 ............................................................................................. 2

第三章—軟硬體分析 ............................................................................................ 4

3.1 軟體和硬體 ..................................................................................... 4

3.1.1 Arduino mega2560 ................................................................ 4

3.1.2 RFID RC522(RFID 模組) ......................................................... 4

3.1.3 HC-05(藍芽模組) .................................................................. 5

3.1.4 陽極鎖 ................................................................................. 5

3.1.5 App inventor .......................................................................... 6

3.2 電路分析 ........................................................................................ 6

3.3 程式 ................................................................................................ 7

第四章—測試結果 .............................................................................................. 14

4.1 實體 .............................................................................................. 14

4.2 手機端 .......................................................................................... 15

第五章—結論 ...................................................................................................... 16

參考資料 .............................................................................................................. 17

Page 5: RFID 門鎖 - 國立勤益科技大學-電子工程系(所 ...eeproject.ncut.edu.tw/upload/Achievements/105_20170629172714n76O.pdf · 105 年度 第168組 國立勤益科技大學

1

第一章—緒言

一般家裡的門鎖若鑰匙丟失了,為了安全只能換成新的門鎖,而若使用 RFID

卡片來當作開門的鑰匙,不見了也只要把程式中存的識別碼刪掉就好,本專題所

做的就是使用 RFID 來辨識卡片中的 UID,正確的卡片就解除門禁。使用藍芽傳

送門的狀態到手機端,讓使用者知道是否有人進門。

Page 6: RFID 門鎖 - 國立勤益科技大學-電子工程系(所 ...eeproject.ncut.edu.tw/upload/Achievements/105_20170629172714n76O.pdf · 105 年度 第168組 國立勤益科技大學

2

第二章—理論

2.1 接線圖

2.2 流程圖

Page 7: RFID 門鎖 - 國立勤益科技大學-電子工程系(所 ...eeproject.ncut.edu.tw/upload/Achievements/105_20170629172714n76O.pdf · 105 年度 第168組 國立勤益科技大學

3

本專題用 RFID 模組去辨別卡片,以下就 RFID 原理介紹:無線射頻辨識(英

語:Radio Frequency IDentification,縮寫:RFID)是一種無線通訊技術,可以通

過無線電訊號識別特定目標並讀寫相關數據,而無需識別系統與特定目標之間建

立機械或者光學接觸。無線電的訊號是通過調成無線電頻率的電磁場,把數據從

附著在物品上的標籤上傳送出去,以自動辨識與追蹤該物品。某些標籤在識別時

從識別器發出的電磁場中就可以得到能量,並不需要電池;也有標籤本身擁有電

源。標籤包含了電子儲存的資訊,數公尺之內都可以識別。許多行業都運用了無

線射頻辨識技術。無線射頻辨識的身份識別卡可以使員工得以進入建築鎖住的部

分,汽車上的射頻應答器也可以用來徵收收費路段與停車場的費用。[1]

控制門鎖用的是陽極鎖:外部的控制系統對電鎖進行斷電,電鎖立即完成因

為任何型式的門都可以直接安裝使用,嵌入式的安裝方式不會破壞整體門框的美

感,而且適用於 180 度內外開式門的特質,陽極鎖(Electric Dropbolt)可以說是

門禁系統最常使用的鎖具。例如:以前 ATM 自動提款機門口還需要刷卡進入的

時代,都是使用陽極鎖來配合管制門禁的。陽極鎖其於安全考量,一般都是設計

為「斷電開門」型,也就是一般狀況下鎖體需持續通電而呈現「上鎖」狀態,經

由「開門」的狀態,確保緊急狀況之下停電,也可以釋放門路通道不會影響人員

的逃生。[2]

用藍芽傳送門的狀態給手機端,在此介紹一下原理,藍牙使用的技術是跳頻

展頻,由於 ISM 頻帶不需要申請使用執照,所以大家都可以任意使用,為了要解

決不同設備之間互相干擾的問題,必須使用跳頻展頻(FHSS)技術,讓通訊設備所

使用的通訊頻率在極短的時間內不停地改變,以減少互相干擾的機會 FHSS 主要

的目的是在避免設備互相干擾,在同步且同時的情況下,傳送端與接收端以特定

型式的頻率範圍傳送訊號,而且傳送端與接收端經過一段極短的時間之後就同時

切換到另外一個頻率範圍,不斷地切換頻率範圍,能夠減少在同一個特定的頻率

範圍通訊受到干擾的機會,也不容易被竊聽。此外,頻率跳躍必須遵守美國聯邦

通訊委員會(FCC)的規定,跳頻展頻所展開的訊號,可以特別設計來避免雜訊或重

複的頻道,跳頻訊號必須使用 75 個以上的頻率範圍,而且兩個不同頻寬之間跳

躍的最大時間間隔為 0.04 秒,也就是每秒至少跳頻 2.5 次。

FHSS 的優點在於成本較低,可以使用在低功率的短距離無線傳輸,因此一些以

低成本為訴求的技術,例如:家用高週波(Home RF)、藍芽無線傳輸(Bluetooth)

等都是採用跳頻展頻技術。[3]

Page 8: RFID 門鎖 - 國立勤益科技大學-電子工程系(所 ...eeproject.ncut.edu.tw/upload/Achievements/105_20170629172714n76O.pdf · 105 年度 第168組 國立勤益科技大學

4

第三章—軟硬體分析

3.1 軟體和硬體

3.1.1 Arduino mega2560

Arduino Mega 2560 是一款基於 ATmega2560(datasheet)的微控制器板。它有

54 個數位輸入/輸出引腳(其中 15 個可用作 PWM 輸出)、16 個模擬輸入、4 個

UART(硬體序列埠)、1 個 16 MHz 晶體震盪器、1 個 USB 連接、1 個電源插座、

1 個 ICSP 頭和 1 個重置按鈕。

3.1.2 RFID RC522(RFID 模組)

MF RC522 是應用於 13.56MHz 非接觸式

通信中高集成度的讀寫卡芯片,是 NXP 公司

針對“三表”應用推出的一款低電壓、低

成本、體積小的非接觸式讀寫卡芯片,是智能

儀表和便攜式手持設備研發的較好選擇。MF

RC522 利用了先進的調製和解調概念,完全集

成了在 13.56MHz 下所有類型的被動非接觸式

通信方式和協議。支持 14443A 兼容應答器信

號。此外,還支持快速 CRYPTO1 加密算法,用

語驗證 MIFARE 系列產品。MFRC522 支持 MIFARE 系列更高速的非接觸式通信,

雙向數據傳輸速率高達 424kbit/s。它與主機間通信採用 SPI 模式,有利於減少連

Page 9: RFID 門鎖 - 國立勤益科技大學-電子工程系(所 ...eeproject.ncut.edu.tw/upload/Achievements/105_20170629172714n76O.pdf · 105 年度 第168組 國立勤益科技大學

5

線,縮小 PCB 板體積,降低成本。共有八隻腳,分別是 SDA、SCK、MOSI、MISO、

IRQ、GND、RST、VCC,其中 SDA、SCK、MOSI、MISO 負責訊號的輸入和輸出。

[4]

使用的板子是 2560,51(SPI MOSI)接到模組的 MOSI、53(SPI SS)接到模組的 SDA、

50(SPI MISO)接到模組的 MISO、52(SPI SCK)接到模組的 SCK。

3.1.3 HC-05(藍芽模組)

HC-05 採用英國劍橋的 CSR (Cambridge Silicon Radio) 公司的 BC417143 晶片,

支援藍牙 2.1+EDR 規範,只是晶片內部的韌體不同。CSR

是全球市佔率最高的藍牙通訊晶片廠。

3.1.4 陽極鎖

陽極鎖一送電且裡面的磁簧開關有接合,就會彈出鎖舌。在這邊使用的陽極

鎖除了正電源(紅)和接地(黑)外還有許多其他的線,如藍黃白綠灰橘,鎖舌的有

無(lock sensor),沒鎖舌伸出(藍線常開黃線常關),鎖舌伸出(藍線常關黃線常開)。

Page 10: RFID 門鎖 - 國立勤益科技大學-電子工程系(所 ...eeproject.ncut.edu.tw/upload/Achievements/105_20170629172714n76O.pdf · 105 年度 第168組 國立勤益科技大學

6

門有無到定位(磁簧開關是否有被定位的磁鐵吸住),橘線沒有到定位為常閉,有

為常開。

在此處,arduino 使用繼電器去控制它(陽極鎖電源為 12V),陽極鎖電源接在

繼電器 NC 端使得陽極鎖平常時是送電,而繼電器若吸合就會使陽極鎖斷電,讓

鎖舌縮起,門打開。

3.1.5 App inventor

App Inventor 原是 Google 實驗室(Google Lab)的一個子計畫,由一群

Google 工程師與勇於挑戰的 Google 使用者共同參與。Google App Inventor 是一

個完全線上開發的 Android 程式環境,拋棄複雜的程式碼而使用樂高積木式的堆

疊法來完成 Android 程式。

3.2 電路分析

陽極鎖是用來鎖門,通電時插梢會突出,卡住另一邊的門框,使門打不開。

所以要控制陽極鎖開門是給它斷電,要鎖門是給它通電,而使用 arduino 控制斷

電與否需要繼電器,因為門要常閉(常通電),所以 COM 端接 12V,NC 端接到陽

極鎖。

註:陽極鎖要如何知道門已到定位了,可以鎖上了?陽極鎖有一處有個磁簧開關,

要對到另一邊放置的磁鐵,使磁簧吸住才會使陽極鎖插梢突出。到定位後,陽極

鎖要隔幾秒突出插梢,有一個地方可以決定,陽極鎖有一處跳帽可以決定到定位

後要幾秒上鎖,有 0s、2.5s、5s。

由 RFID-RC522 讀取卡片的 UID,若符合程式中的存好的陣列值即讓繼電器吸

合,使得陽極鎖因為沒有電源輸入而開啟,一段時間後繼電器線圈斷電,接點回

Page 11: RFID 門鎖 - 國立勤益科技大學-電子工程系(所 ...eeproject.ncut.edu.tw/upload/Achievements/105_20170629172714n76O.pdf · 105 年度 第168組 國立勤益科技大學

7

到 NC,使陽極鎖因為送電而插梢彈出,門關上。讀到正確的卡片,蜂鳴器會短

鳴一聲提醒使用者門要開啟了,而讀到錯誤的卡片會長鳴並且紅 LED 亮,提示卡

片有問題。

3.3 程式

Arduino

// https://swf.com.tw/?p=1027

//pin2--->controller lock

//pin 48 buzzer

// 46 warning led(red)

// bluetooth Tx----> arduino 10

// Rx----> arduino 11

#include <SPI.h>

#include <MFRC522.h> // 引用程式庫

#include <SoftwareSerial.h>

#include <Wire.h>

SoftwareSerial I2CBT(10,11);

byte serialA;

#define RST_PIN 5 // 讀卡機的重置腳位

#define SS_PIN 53 // 晶片選擇腳位

int lock_led = 2; //控制鎖

int buzzer = 48; //發出提示聲

int warn_led=46; //警告燈

bool lockerSwitch = true;

struct RFIDTag { // 定義結構

byte uid[4];

char *name;

};

struct RFIDTag tags[] = { // 初始化結構資料,請自行修改 RFID 識別碼。

{{188,56,9,133}, "doorCard"},

Page 12: RFID 門鎖 - 國立勤益科技大學-電子工程系(所 ...eeproject.ncut.edu.tw/upload/Achievements/105_20170629172714n76O.pdf · 105 年度 第168組 國立勤益科技大學

8

{{64,25,150,124}, "whiteCard"},

//{{0,0,0,0}, "x"}

};

byte totalTags = sizeof(tags) / sizeof(RFIDTag); // 計算結構資料筆數,結果為 3。

MFRC522 mfrc522(SS_PIN, RST_PIN); // 建立 MFRC522 物件

// 開鎖或關鎖

void locker(bool toggle) {

if (toggle) {

// 開鎖

digitalWrite(lock_led,HIGH);

} else {

// 關鎖

digitalWrite(lock_led,LOW);

}

}

void setup() {

pinMode(lock_led, OUTPUT); //controller lock

pinMode(buzzer,OUTPUT); //sound

pinMode(warn_led,OUTPUT); //wrong card Warning

Serial.begin(9600);

I2CBT.begin(9600);

Serial.println();

Serial.print("size of RFIDTag:");

Serial.println(sizeof(RFIDTag));

Serial.print("size of tag:");

Serial.println(sizeof(tags));

Serial.println("RFID reader is ready!");

SPI.begin();

mfrc522.PCD_Init(); // 初始化 MFRC522 讀卡機模組

locker(lockerSwitch);

}

void loop() {

Page 13: RFID 門鎖 - 國立勤益科技大學-電子工程系(所 ...eeproject.ncut.edu.tw/upload/Achievements/105_20170629172714n76O.pdf · 105 年度 第168組 國立勤益科技大學

9

byte Data[3];

byte cmmd[20];

int insize;

char str[256];

int i=36;

Data[0]='a';

Data[1]=i/256;

Data[2]=i%256;

//sprintf(str,"i: %d 0: %d 1: %d 2: %d",i,Data[0],Data[1],Data[2]);

//Serial.println(str);

serialA=I2CBT.read();

if (serialA == 49){

for(int j=0;j<3;j++)

I2CBT.write(Data[j]);

serialA=0;

}

delay(100);

// 確認是否有新卡片

if (mfrc522.PICC_IsNewCardPresent() && mfrc522.PICC_ReadCardSerial()) {

byte *id = mfrc522.uid.uidByte; // 取得卡片的 UID

byte idSize = mfrc522.uid.size; // 取得 UID 的長度

bool foundTag = false; // 是否找到紀錄中的標籤,預設為「否」。

for (byte i=0; i<totalTags; i++) {

if (memcmp(tags[i].uid, id, idSize) == 0) { // 比對陣列資料值

Serial.println(tags[i].name); // 顯示標籤的名稱

foundTag = true; // 設定成「找到標籤了!」

int i=64;

Data[0]='a';

Data[1]=i/256;

Data[2]=i%256;

//sprintf(str,"i: %d 0: %d 1: %d 2: %d",i,Data[0],Data[1],Data[2]);

//Serial.println(str);

serialA=I2CBT.read();

if (serialA == 49){

for(int j=0;j<3;j++)

I2CBT.write(Data[j]);

Page 14: RFID 門鎖 - 國立勤益科技大學-電子工程系(所 ...eeproject.ncut.edu.tw/upload/Achievements/105_20170629172714n76O.pdf · 105 年度 第168組 國立勤益科技大學

10

serialA=0;

}

// 提示門要開啟了

digitalWrite(buzzer,HIGH);

delay(100);

digitalWrite(buzzer,LOW);

lockerSwitch = false ; // 切換鎖的狀態

locker(lockerSwitch); // 開鎖

delay(2000); //delay 2 sec

lockerSwitch = true; // 切換鎖的狀態

locker(lockerSwitch); // 閉鎖

break; // 退出 for 迴圈

}

}

if (!foundTag) { // 若掃描到紀錄之外的標籤,則顯示"Wrong card!"。

Serial.println("Wrong card!"); //warning, red led light

digitalWrite(buzzer,HIGH);

digitalWrite(warn_led,HIGH);

delay(500);

digitalWrite(buzzer,LOW);

digitalWrite(warn_led,LOW);

// 如果鎖是開啟狀態,則關閉它。

if (!lockerSwitch) {

lockerSwitch = true;

locker(lockerSwitch);

}

}

mfrc522.PICC_HaltA(); // 讓卡片進入停止模式

}

}

Arduino 中的重要函式

if (mfrc522.PICC_IsNewCardPresent() && mfrc522.PICC_ReadCardSerial()) {

byte *id = mfrc522.uid.uidByte;

↑程式段落

Page 15: RFID 門鎖 - 國立勤益科技大學-電子工程系(所 ...eeproject.ncut.edu.tw/upload/Achievements/105_20170629172714n76O.pdf · 105 年度 第168組 國立勤益科技大學

11

程式中寫到若有新的卡片且有讀到 UID,再來程式就直接把 UID 丟到 id。沒有看

出如何取得 UID,所以就到<MFRC522.cpp>去看,IsNewCardPresent()看起來不是,

就找另一個看看,ReadCardSerial(),裡面有句是 PICC_Select(&uid);竟然要帶入

uid(定義在 MFRC522.h),看起來是它很重要。

bool MFRC522::PICC_ReadCardSerial() {

MFRC522::StatusCode result = PICC_Select(&uid);

return (result == STATUS_OK);

} // End

↑此為<MFRC522.cpp>中的 PICC_ReadCardSerial()

for (count = 0; count < bytesToCopy; count++)

{

uid->uidByte[uidIndex + count] = buffer[index++];

}

↑此為 PICC_Select()中的一個段落

PICC_Select()有很多行,什麼要確定 UID 有幾個位元之類的,其中跟如何取得 UID

有關的看起來是這段,把 UID 放到 uid。

App inventor

Page 16: RFID 門鎖 - 國立勤益科技大學-電子工程系(所 ...eeproject.ncut.edu.tw/upload/Achievements/105_20170629172714n76O.pdf · 105 年度 第168組 國立勤益科技大學

12

Page 17: RFID 門鎖 - 國立勤益科技大學-電子工程系(所 ...eeproject.ncut.edu.tw/upload/Achievements/105_20170629172714n76O.pdf · 105 年度 第168組 國立勤益科技大學

13

Page 18: RFID 門鎖 - 國立勤益科技大學-電子工程系(所 ...eeproject.ncut.edu.tw/upload/Achievements/105_20170629172714n76O.pdf · 105 年度 第168組 國立勤益科技大學

14

第四章—測試結果

4.1 實體

↑陽極鎖通電,且在定位,鎖上 ↑陽極鎖斷電,鎖鬆開

Page 19: RFID 門鎖 - 國立勤益科技大學-電子工程系(所 ...eeproject.ncut.edu.tw/upload/Achievements/105_20170629172714n76O.pdf · 105 年度 第168組 國立勤益科技大學

15

4.2 手機端

手機端用藍牙接收門的狀態,若門開啟了會在正中央告知。

Page 20: RFID 門鎖 - 國立勤益科技大學-電子工程系(所 ...eeproject.ncut.edu.tw/upload/Achievements/105_20170629172714n76O.pdf · 105 年度 第168組 國立勤益科技大學

16

第五章—結論

有達到預想的功能,從過程中也練習了如何使用陽極鎖,以及它的狀態(插

梢和定位),至於在本專題所引用的函式庫,有稍微看一下內容,其中我覺得最

關鍵的函式是 PICC_Select(&uid); ,裡面的內容很多行,如果想了解多一點,這

邊應該要詳讀。有些不足的地方,在手機端其實還要顯示是哪張卡片進門的,以

及應該要能有歷程記錄。

Page 21: RFID 門鎖 - 國立勤益科技大學-電子工程系(所 ...eeproject.ncut.edu.tw/upload/Achievements/105_20170629172714n76O.pdf · 105 年度 第168組 國立勤益科技大學

17

參考資料

[1]RFID–維基百科

https://zh.wikipedia.org/wiki/%E5%B0%84%E9%A2%91%E8%AF%86%E5%88%AB

[2]陽極鎖–維基百科

https://zh.wikipedia.org/wiki/%E9%99%BD%E6%A5%B5%E9%8E%96

[3]12-5 跳頻展頻(FHSS:Frequency Hopping Spread Spectrum)

http://www.hightech.tw/index.php/2012-06-06-14-12-38/27-wireless-communicatio

n/351-fhss

[4]RFID 模組套件 RC522 FID 射頻 IC 卡感應模塊–台灣物聯

https://www.taiwaniot.com.tw/shop/module-sensor/comm/rfid-%E6%A8%A1%E7%

B5%84%E5%A5%97%E4%BB%B6-rc522-rfid-%E5%B0%84%E9%A0%BBic%E5%8D%A1

%E6%84%9F%E6%87%89%E6%A8%A1%E5%A1%8A%E5%90%ABs50%E5%BE%A9%E6

%97%A6%E5%8D%A1%E3%80%81%E9%91%B0%E5%8C%99%E6%89%A3/