這篇文章來(lái)源于DevicePlus.com英語(yǔ)網(wǎng)站的翻譯稿。
目的
本教程旨在展示何將RFID讀卡器和執(zhí)行器與Raspberry Pi集成在一起?;诒疚挠懻摰幕驹?,我們還會(huì)制造一個(gè)RFID狗門(mén)。
概述
在本教程中,我將介紹如何將RC522 RFID模塊與Raspberry Pi基板集成在一起。我還將展示如何集成一個(gè)執(zhí)行器(本例中是一個(gè)LED),來(lái)響應(yīng)RFID模塊的正確讀取信息。該執(zhí)行器可以是電磁鎖、揚(yáng)聲器,甚至可以是記錄數(shù)據(jù)的Web界面。我還會(huì)介紹如何利用此設(shè)計(jì)實(shí)現(xiàn)一個(gè)RFID狗門(mén)。
設(shè)備
表1:設(shè)備
| 物品 | 鏈接 |
|---|---|
| Raspberry Pi 3 | Raspberry Pi 鏈接 |
| RC522 RFID 模塊 | RFID 模塊鏈接 |
| HDMI 線 | HDMI 線鏈接 |
| LED | Adafruit LED鏈接 |
| 鼠標(biāo) + 鍵盤(pán) | 鍵盤(pán)/鼠標(biāo)的Amazon鏈接 |
| 顯示器/電視機(jī) | 任何帶有HDMI接口的電視機(jī)或顯示器 |
| 跳線 | 跳線的Amazon鏈接 |
| Micro USB 數(shù)據(jù)線 | Micro USB數(shù)據(jù)線的Amazon鏈接 |
| 面包板 | 面包板的Amazon鏈接 |
目錄
1. 設(shè)計(jì)電路
2. 編寫(xiě)代碼
a.啟用 SPI
b.安裝軟件包
c.添加到 Read.py
3. 運(yùn)行代碼
a.獲取 UID
b.運(yùn)行最終腳本
4. 制作狗門(mén)的注意事項(xiàng)
5.其他設(shè)備選項(xiàng)
6.附錄:Read.py
程序
1. 設(shè)計(jì)電路
我一直喜歡使用開(kāi)源的原理圖繪制和PCB布線軟件Fritzing來(lái)制作接線圖(圖1:執(zhí)行器為L(zhǎng)ED的電路原理圖)。您可以通過(guò)以下鏈接(可選)下載Fritzing: https://fritzing.org/home/
第一張?jiān)韴D是我正在制作的以LED作為執(zhí)行器的電路。當(dāng)RFID模塊產(chǎn)生正確讀取信號(hào),LED會(huì)亮起。
第二個(gè)電路中的執(zhí)行器是一個(gè)電磁鎖。這個(gè)電路用于實(shí)現(xiàn)門(mén)鎖和狗門(mén)設(shè)計(jì)。TIP120是一款達(dá)林頓功率晶體管陣列。它只允許Raspberry Pi控制電磁鎖,電磁鎖所需功率比Paspberry Pi的GPIO端口的輸出還要大。

圖1:執(zhí)行器為L(zhǎng)ED的電路原理圖 
圖2:執(zhí)行器為電磁鎖的電路原理圖 RC522 RFID模塊使用SPI(串行外圍接口總線)連接到Raspberry Pi。SPI總線在嵌入式系統(tǒng)中應(yīng)用相當(dāng)普遍。讀卡器應(yīng)根據(jù)下表進(jìn)行接線。
表2:RC522接線表
| RC522 Pin | Raspberry Pi 引腳 | 導(dǎo)線顏色 |
|---|---|---|
| 3.3V | 引腳 1 | 紅 |
| RST | 引腳 22 | 橙 |
| GND | 引腳 6 | 黑 |
| MISO | 引腳 21 | 白 |
| MOSI | 引腳 19 | 灰 |
| SCK | 引腳 23 | 綠 |
| SDA | 引腳 24 | 藍(lán) |
我將執(zhí)行器(一個(gè)LED)連接到了Raspberry Pi的引腳18。你也應(yīng)該連接這個(gè)引腳。
2. 編寫(xiě)代碼
a. 啟用 SPI
第一步是在Raspberry Pi上啟用SPI。為此,請(qǐng)打開(kāi)命令行窗口并輸入sudo raspi-config。系統(tǒng)會(huì)彈出Configuration Menu。選擇菜單5“Interfacing Options”?,F(xiàn)在選擇“P4 SPI”。當(dāng)系統(tǒng)問(wèn)你是否要啟用SPI接口時(shí),選擇“Yes”。配置菜單將顯示“The SPI interface is enabled.”。要完成SPI的啟用,請(qǐng)打開(kāi)命令行終端并輸入命令sudo reboot。Raspberry Pi會(huì)重啟,從而完成SPI啟用。
b. 安裝軟件包
我們要用的庫(kù)是用Python 2編寫(xiě)的,不是Python 3。因此,第一步是安裝Python 2.7。請(qǐng)輸入sudo apt-get install python2.7-dev完成該操作。SPI PY庫(kù)負(fù)責(zé)與RC522模塊通信。我通過(guò)鍵入命令git clone https://github.com/lthiery/SPI-Py.git來(lái)克隆這個(gè)庫(kù)。然后安裝該庫(kù)。首先,通過(guò)鍵入cd SPI-Py進(jìn)入SPI-Py目錄。然后鍵入sudo python setup.py install安裝庫(kù)。
c. 添加到 Read.py
Read.py腳本需要更改才能與RC522模塊對(duì)話。編輯此腳本時(shí),請(qǐng)滾動(dòng)到腳本底部,然后加入注釋“Authenticate”。本教程不涉及RFID的身份驗(yàn)證。確保在腳本頭添加時(shí)間庫(kù)。接下來(lái)找到標(biāo)題為“#Configure LED Output Pin”的部分。這里是你配置執(zhí)行器的地方。如果要將該設(shè)計(jì)應(yīng)用于狗門(mén),那么應(yīng)將輸出引腳配置到電磁鎖。
接下來(lái)找到標(biāo)題為“#Check to see if card UID read matches your card UID.”的部分。該If/Else語(yǔ)句檢查讀卡器從卡上讀取的UID與您之前保存在腳本中的UID是否匹配,如果UID匹配,則執(zhí)行器的輸出為高。
3. 運(yùn)行代碼
a. 獲取 UID
首次運(yùn)行腳本時(shí),您需要獲取卡的UID。RFID卡的UID是與此卡相關(guān)聯(lián)的唯一編號(hào),類(lèi)似于序列號(hào)。
要運(yùn)行腳本,請(qǐng)將目錄更改為保存腳本的目錄。然后輸入python Read.py,運(yùn)行腳本。因?yàn)槟_本讀卡器UID,所以當(dāng)你將卡放在讀取器上時(shí),它會(huì)拒絕訪問(wèn)。屏幕上會(huì)顯示這張卡的UID。記下這個(gè)UID。編輯腳本,然后將腳本的UID更改為此值并保存。

圖3:腳本運(yùn)行,顯示UID b. 運(yùn)行最終腳本
輸入python Read.py,再次運(yùn)行腳本?,F(xiàn)在,當(dāng)你將卡放在讀卡器上時(shí),驗(yàn)證通過(guò)且LED會(huì)亮5秒鐘。如果將你的設(shè)計(jì)應(yīng)用于狗門(mén),那么在驗(yàn)證通過(guò)后電磁鎖會(huì)打開(kāi)。

圖4:等待讀卡
圖5:驗(yàn)證通過(guò) 4. 制作狗門(mén)的注意事項(xiàng)
如果要將該設(shè)計(jì)實(shí)現(xiàn)為一個(gè)狗門(mén),那么你需要考慮其他一些設(shè)計(jì)技巧:
1. 添加第二個(gè)電磁鎖,以保證兩側(cè)鎖門(mén)。
2. 在門(mén)上添加一個(gè)霍爾效應(yīng)(磁傳感器)傳感器和一塊磁鐵,以便讓Raspberry Pi在鎖門(mén)之前知道門(mén)已返回到關(guān)閉位置。
3. 如果你真的很有想法,那么可以圍繞門(mén)設(shè)計(jì)較大的環(huán)形天線,代替在門(mén)上安裝小型讀卡器。你需要電磁線,而且需要將其焊接到讀取模塊上。這需要資深技巧,有關(guān)環(huán)形天線的信息請(qǐng)?jiān)谶@里閱讀。
4. 如果你是資深程序員,那么可以閱讀MFRC522 數(shù)據(jù)表,更改芯片組上的固件,更好地滿足自己的應(yīng)用要求。
5. 其他設(shè)備選項(xiàng)
a.門(mén)鎖
b.安全鎖
c.支付設(shè)備
d.運(yùn)輸跟蹤/物流
e.零售/購(gòu)物
6. 附錄:Read.py
#!/usr/bin/env python # -*- coding: utf8 -*- import RPi.GPIO as GPIO import MFRC522 import signal import time continue_reading = True # Capture SIGINT for cleanup when the script is aborted def end_read(signal,frame): global continue_reading print ("Ctrl+C captured, ending read.") continue_reading = False GPIO.cleanup() # Hook the SIGINT signal.signal(signal.SIGINT, end_read) # Create an object of the class MFRC522 MIFAREReader = MFRC522.MFRC522() # Welcome message print ("Welcome to the MFRC522 data read example") print ("Press Ctrl-C to stop.") # This loop keeps checking for chips. If one is near it will get the UID and authenticate while continue_reading: # Scan for cards (status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL) # If a card is found if status == MIFAREReader.MI_OK: print ("Card detected") # Get the UID of the card (status,uid) = MIFAREReader.MFRC522_Anticoll() # If we have the UID, continue if status == MIFAREReader.MI_OK: # Print UID print ("Card read UID: "+str(uid[0])+","+str(uid[1])+","+str(uid[2])+","+str(uid[3])+','+str(uid[4])) # This is the default key for authentication key = [0xFF,0xFF,0xFF,0xFF,0xFF,0xFF] # Select the scanned tag MIFAREReader.MFRC522_SelectTag(uid) #ENTER Your Card UID here my_uid = [61,84,4,114,31] #Configure LED Output Pin LED = 18 GPIO.setup(LED, GPIO.OUT) GPIO.output(LED, GPIO.LOW) #Check to see if card UID read matches your card UID if uid == my_uid: #Open the Doggy Door if matching UIDs print("Access Granted") GPIO.output(LED, GPIO.HIGH) #Turn on LED time.sleep(5) #Wait 5 Seconds GPIO.output(LED, GPIO.LOW) #Turn off LED else: #Don't open if UIDs don't match print("Access Denied, YOU SHALL NOT PASS!") ## # Authenticate ## status = MIFAREReader.MFRC522_Auth(MIFAREReader.PICC_AUTHENT1A, 8, key, uid) ## ## # Check if authenticated ## if status == MIFAREReader.MI_OK: ## MIFAREReader.MFRC522_Read(8) ## MIFAREReader.MFRC522_StopCrypto1() ## else: ## print "Authentication error"
審核編輯:湯梓紅
-
led
+關(guān)注
關(guān)注
244文章
24695瀏覽量
692222 -
RFID
+關(guān)注
關(guān)注
392文章
6987瀏覽量
248893 -
讀卡器
+關(guān)注
關(guān)注
2文章
471瀏覽量
41874 -
Raspberry Pi
+關(guān)注
關(guān)注
2文章
622瀏覽量
24084
發(fā)布評(píng)論請(qǐng)先 登錄
OLED顯示器如何與Raspberry Pi一起使用?
如何將CYKIT-028 TFT模塊與Raspberry Pi和ESP32微控制器結(jié)合使用?
請(qǐng)問(wèn)如何將兩個(gè)獨(dú)立multisim的文件連接兩個(gè)在一起仿真..
將分布測(cè)量參數(shù)整合在一起測(cè)量
通過(guò)以太網(wǎng)線與VEE一起使用Raspberry Pi不起作用
如何將高圖形性能和低功耗更好地結(jié)合在一起?
如何將DMA和環(huán)形的FIFO隊(duì)列結(jié)合在一起來(lái)使用呢
用于Raspberry Pi的DIN導(dǎo)軌安裝
淺談數(shù)字孿生如何將物理和數(shù)字連接在一起且應(yīng)用
使用Raspberry Pi 4和RFID模塊的考勤系統(tǒng)
如何將RFID RC522與Raspberry Pi連接
將Arduino庫(kù)與Raspberry Pi Pico C/C++ SDK一起使用
如何將16x2 LCD與Raspberry pi4連接
如何將兩個(gè)16*2 LCD與arduino連接在一起
如何將RFID模塊與Raspberry Pi集成在一起
評(píng)論