自製Arduino RFID門鎖

arduino rfid door lock

已經煩透了丟失鑰匙或者忘記帶鑰匙而被鎖在門外嗎?好吧,讓我來為您提供一個完美的解決方案!今天,我們將製作一款Arduino RFID門鎖。我想要找到一種簡單並且安全的方法來鎖門,而不必購買一個昂貴的裝置。接下來,我們將要學習射頻識別(RFID)技術並將其應用到無線通訊中。

什麼是RFID?

“RFID表示射頻識別,[…]RFID的作用與信用卡或者ATM卡背面的條碼或磁條相同;它為物體提供了唯一的識別字。而且,就像必須掃描條碼或詞條才能獲取資訊一樣,RFID裝置必須經過掃描才能獲取相關的識別資訊。”摘自 ©Technovelgy,一個記錄科學技術與科幻創意的網站。

在本項目中透過使用RFID技術來從RFID標籤中讀取資料,並將資訊發送到MCU的非易失性記憶體。從標籤讀取的ID與存儲的資訊進行比較,如果匹配,則門將被解鎖/打開。

 

硬體

  • Arduino Nano
  • RFID RC522
  • 壓電蜂鳴器
  • 2x LED
  • 2x 330 電阻
  • 4×4 鍵盤
  • LCD 合適器 I2C
  • LCD16X2BL

 

軟體

 

將LCD 連接到Arduino

LCD有16個引腳,對於Arduino Nano來說引腳數量過多,因此一定要使用I2C合適器,如此一來可以僅透過Arduino的兩個訊號引腳來實現顯示功能。這很有説明,因為這種情況下需要透過MCU控制的引腳數量就會很少。

arduino rfid door lock

圖1:LCD引腳

LCD具有平行介面,這意味著MCU必須同時操控多個介面引腳來對顯示進行控制。下表提供了每個引腳的說明:

arduino rfid door lock

圖2:引腳規格

 

首先,我們將在LCD和I2C之間建立連接。為此,我們需要一個I2C LCD顯示卡(LCD1602)。該合適器將16 x 2字元LCD顯示轉換為序列I2C LCD,僅用兩根導線連接即可透過Arduino進行控制。

 

arduino rfid door lock

圖3:Arduino和LCD之間的連接

 

接下來,我們將在Arduino IDE中添加程式館“<LiquidCrystal_I2C.h>”。我們可以透過該程式館將LCD連接到Arduino。內建的LiquidCrystal_I2C程式館可以輕鬆實現在LCD螢幕上顯示字母。

 

您可以點擊此處下載LiquidCrystal_I2C.h

 

請按照以下步驟將新的程式館安裝到您的Arduino IDE中:

 

1) 首先,從 Github 上下載檔案(我將要下載的是Keypad程式館)。

arduino rfid door lock

2) 壓縮(.zip)每個資料夾。

arduino rfid door lock

 

 

3) 拷貝.zip文件到您的Arduino資料夾中。

arduino rfid door lock

 

 

4) 打開Arduino並添加Keypad.zip::Sketch menu > Include Library > Add .ZIP Library。

arduino rfid door lock

 

 

5) 添加keypad程式館:Sketch menu > Include Library > Keypad。

arduino rfid door lock

 

測試LCD的代碼:

 

 

 

arduino rfid door lock

圖4:連接到Arduino Nano的LCD

 

連接鍵盤

現在,要進入鍵盤部分了!我們將要對鍵盤進行連接,以實現在LCD上顯示從鍵盤輸入的數位。

Keypad.h 是一個讓Arduino能夠從鍵盤讀取矩陣類型鍵盤資料的程式館。

在本課程中我使用的是一個 4×4 鍵盤。

 

下表顯示了Arduino研發板與鍵盤之間的連接情況。鍵盤引腳連接到Arduino的數位輸出引腳。D6引腳是PWM引腳,因此用於蜂鳴器。

Keypad pin Arduino pin
1 D2
2 D3
3 D4
4 D5
5 A0
6 D7
7 D8

 

arduino rfid door lock

圖5:Arduino、LCD以及鍵盤之間的連接

 

 

arduino rfid door lock

圖6:連接到Arduino的LCD和鍵盤

連接RFID

接下來,我們將添加RFID。在這種情況下,RFID板使用SPI通信協議,其中Arduino將作為主機,而RFID閱讀器將作為從機。讀卡器和標籤將被設計為以13.56MHz大小的頻率進行通信。

這是很重要的一步,因為RFID會幫助我們從卡上讀取資料,並且確定ID是否對應於EEPROM中存儲的資訊。如果匹配,我們就能夠進入房間並顯示“解鎖”。否則,LCD將顯示“鎖定”。

 

arduino rfid door lock

圖7: Arduino、LCD以及RFID之間的連接

 

arduino rfid door lock

圖8: Arduino、LCD以及RFID

 

添加蜂鳴器以及LED

下一步是添加一個蜂鳴器和2個LED,以類比被控制訪問系統的狀況。請查看下面的接線圖(圖9)。我們設定了一個蜂鳴器,可以在獲得存取權限(解鎖)時蜂鳴。鎖定時,紅色LED始終亮起,解鎖時,綠色LED會亮起。

為了保護這些裝置模組,我決定用3D列印製造出收納的盒子。如果您沒有3D印表機,可以使用一個可以盛放所有元件的塑膠盒。這會很有説明,因為這樣一來這些模組將會被放置於內部,只有LED、鍵盤和LCD會放置在盒子外。

arduino rfid door lock

圖9:Nano、 LCD、鍵盤、RFID和蜂鳴器連接接線圖

 

製造收納的盒子

對於本專案,我想要製造一個自訂的盒子來收納所有的元件,並保護這些元件不被損壞。

我使用SketchUp設計了一個盒子,這個軟體具有使用者友好型介面,有一些簡單的操作按鈕,如橡皮擦、線條和卷尺工具等。

盒子的尺寸是 120x125x37 mm。

arduino rfid door lock

如果您對Sketchup不熟悉,建議您點擊此處閱讀一些Sketchup課程。

 

arduino rfid door lock

圖10:收納盒子(頂部視圖)

 

arduino rfid door lock

圖11:收納盒子(底部視圖)

 

設計盒子時,我考慮了以下尺寸:

  • 頂部視圖:
    • 2 個用於LED的開口 (5.2 mm)
    • 1 個用於LCD的開口 (42.2×7.3 mm)
    • 1 個用於線纜的開口(16×10.5 mm)
  • 底部視圖:
    • 1 個用於鍵盤的開口(27×10 mm)

 

在測量了元件的尺寸之後,我設計了一個非常緊湊的盒子。您可以根據自己的喜好對設計進行更改。

arduino rfid door lock

圖12:內部裝有模組的完整收納盒

代碼流程圖

arduino rfid door lock

完整代碼

 

結論

至此,我們成功製作了一款低成本的Arduino RFID門鎖。對我來說,這是一個很有趣的項目,因為我是為自己使用而製作的。此外,製作一個這樣的裝置不僅能讓您因為做了一些有用的事而產生滿足感,學習到很多知識,還能讓您對自製電子裝置有初步的嘗試和體驗。與各種各樣的研發板打交道是非常具有挑戰性的。本專案還包含了很多有趣的課題,例如:

  • 與其他Arduino程式館一起使用
  • 理解EEPROM的使用
  • 使用多種通信,如I2C, SPI

點擊此處閱讀本文的第二部分,我們將研發用智慧手機端解鎖的功能!查看我們的Arduino 項目,瞭解其他有趣且具有挑戰性的Arduino項目!