在今年二月時,買了 RFID RC522的模組,使用樹莓派進行連接,測試無線射頻的模組正常後,就沒有再找時間測試一下 Arduino 如何作為門禁系統使用。透過電磁閥控制門栓,當授權的通行卡感應,就會亮起綠燈,同時電磁閥也會作動縮入,門就可以開啟。如果是非授權的卡片,則亮紅燈,電磁閥不動作。以下就來看看如何連接。下圖綠燈亮,表示感應正確,電磁閥縮入。
• RFID-RC522模組 (含讀卡機及卡片)
• LED x 2個 (紅、綠各 1個 )
• 220 歐姆 x 2
• 1路繼電器 x 1
• 麵包板 x 1
• 5V電磁閥 x 1
• 連接線 x 若干條
測試一下功能是否正常,可以開啟檔案( File) ➔ 範例(Examples) ➔ MFRC522 ➔ DumpInfo ,然後上傳到 Arduino,打開序列埠監控視窗,拿出感應卡靠近讀卡機,可以看到以下資訊:
畫面中Card UID後面的 4 個 16進位數,就是這張卡的卡號,要抄寫來,等一下程式中需修改成這個卡號。
• Random nerd Tutorials:Security Access using MFRC522 RFID Reader with Arduino
[材料]
• Arduino Uno x 1• RFID-RC522模組 (含讀卡機及卡片)
• LED x 2個 (紅、綠各 1個 )
• 220 歐姆 x 2
• 1路繼電器 x 1
• 麵包板 x 1
• 5V電磁閥 x 1
• 連接線 x 若干條
[接線]
將 RC522模組,依照下列表連接到 Arduino。Arduino Pin2接到繼電器 IN,繼電器的VCC及GND,分別接 Arduino 5V及 GND。6V電池組正極接在繼電器另一端,電池組負極接電磁閥一腳,另一腳接在繼電器,與電池組並排。紅色及綠色 LED 負極接地,正極分別接 220歐姆電阻一端,電阻另一端分別接 Arduino Pin3(紅色LED)及 Pin4(綠色LED)。
RFID-RC522模組
|
Arduino接腳
|
SDA
|
Pin 10
|
SCK
|
Pin 13
|
MOSI
|
Pin 11
|
MISO
|
Pin 12
|
IRQ
|
None
|
GND
|
GND
|
RST
|
Pin 9
|
3.3V
|
3.3V
|
[安裝 RC522 函式庫]
如果 Arduino 的匯入程式庫中沒有MFRC522這個項目,表示沒有安裝相關函式庫,可以到 github/miguelbalboa 下載,解壓縮,放在 Arduino 主程式資料夾內的 libraries目錄內,名為 RFID。測試一下功能是否正常,可以開啟檔案( File) ➔ 範例(Examples) ➔ MFRC522 ➔ DumpInfo ,然後上傳到 Arduino,打開序列埠監控視窗,拿出感應卡靠近讀卡機,可以看到以下資訊:
畫面中Card UID後面的 4 個 16進位數,就是這張卡的卡號,要抄寫來,等一下程式中需修改成這個卡號。
[程式]
#include <SPI.h> #include <MFRC522.h> #define SS_PIN 10 #define RST_PIN 9 // 設定電磁閥開關及紅綠燈Pin 值 int mSwitch = 2; int LEDRed = 3; int LEDGreen = 4; MFRC522 mfrc522(SS_PIN, RST_PIN); // 建立 MFRC522. void setup() { pinMode(LEDRed, OUTPUT); pinMode(LEDGreen, OUTPUT); pinMode(mSwitch, OUTPUT); Serial.begin(9600); // 設定串列通訊速率 SPI.begin(); // 設定 SPI bus mfrc522.PCD_Init(); // 設定 MFRC522 Serial.println(" Put your card close to the reader..."); Serial.println(); } void loop() { digitalWrite(LEDGreen, LOW); digitalWrite(LEDRed, LOW); digitalWrite(mSwitch, LOW); // 是否為新卡? if ( ! mfrc522.PICC_IsNewCardPresent()) { return; } // 選擇一張卡 if ( ! mfrc522.PICC_ReadCardSerial()) { return; } //Show UID on serial monitor Serial.print("Card No. :"); String content = ""; byte letter; for (byte i = 0; i < mfrc522.uid.size; i++) { Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "); Serial.print(mfrc522.uid.uidByte[i], HEX); content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ")); content.concat(String(mfrc522.uid.uidByte[i], HEX)); } Serial.println(); Serial.print(" Message : "); content.toUpperCase(); //需要改成可通行的卡號 if (content.substring(1) == "60 1D 81 7A") { Serial.println(" Pass... "); Serial.println(); // 亮綠燈, 電磁閥開 digitalWrite(LEDGreen, HIGH); digitalWrite(LEDRed, LOW); digitalWrite(mSwitch, HIGH); delay(3000); } else { Serial.println(" Stop..."); // 亮紅燈, 電磁閥關 digitalWrite(LEDGreen, LOW); digitalWrite(LEDRed, HIGH); digitalWrite(mSwitch, LOW); delay(3000); } }
[執行結果]
測試過程的影片如下:
[參考資料]
• github.com:miguelbalboa• Random nerd Tutorials:Security Access using MFRC522 RFID Reader with Arduino
您好,不好意思想請問一下,文中寫說『6V電池組正極接在繼電器另一端』
回覆刪除但我看圖片是 6V電池組負極接在繼電器另一端,還是是我搞錯條線呢?
我是看圖片最上方電池的那條黑線
我只能開啟一次,之後就無法感應到了
回覆刪除我想問一下為什麼PASS一次之後就沒辦法再讀第二次卡了
回覆刪除張貼留言