فعال سازی SPI
ماژول RC522 از طریق پروتکل SPI با رزبری پای ارتباط برقرار میکند. پروتکل SPI در رزبری پای که به طور پیشفرض غیرفعال است. بدین منظور صفحهی ترمینال را باز کرده و دستور زیر را اجرا کنید.
sudo raspi-config
از طریق ترمینال یا "Raspberry Pi Configuration" از روی دسکتاپ، SPI را در قسمت "Interfacing Options" فعال کنید.
نصب کتابخانه SPI
از طریق دستور زیر کتابخانهی spidev را نصب کنید.
sudo apt-get install python-spidev python3-spidev
اگرچه قصد بر این بود که "py-spidev" برای راهاندازی رابط SPI در پایتون استفاده شود، اما برای این کاربرد از طریق فرمان زیر "SPI-Py" را نصب کنید.
cd ~
git clone https://github.com/lthiery/SPI-Py.git
cd SPI-Py
sudo python setup.py install
دانلود کتابخانه پایتون RC522
در آخر کتابخانهای را به صحبت با ماژول RC522 از طریق رابط SPI کمک میکند، دانلود و نصب کنید. این کتابخانه، به كتابخانهی SPI-Py كه در مرحلهی قبل نصب شده متكي است. با دستور زیر کتابخانه مورد نیاز را دانلود کنید:
cd ~
git clone https://github.com/mxgxw/MFRC522-python.git
اسکریپت پایتون
در کتابخانهی “MFRC522-python” چند نمونه اسکریپت وجود دارد. میتوانید توسط دستور زیر به آن دست پیدا کنید.
cd MFRC522-python
از طریق فرمان زیر اسکریپت “Read.py” را اجرا کنید.
python Read.py
این اسکریپت منتظر میماند تا توسط ماژول RFID یک تگ شناسایی شود. بعد از شناسایی تگ آدرس آن خوانده شده و روی صفحه نمایش داده میشود. اسکریپت در داخل یک حلقه اجرا شده و به انتظار برای شناسایی یک ID دیگر ادامه می دهد.
پایتون 2 یا پایتون 3 ؟
به طور پیشفرض، کتابخانه MFRC522 فقط با پایتون 2 قابل اجراست. اما اصلاح آن برای کار با پایتون 3 کار سادهای است. فایل"MFRC522.py" را در یک ویرایشگر متنی اصلاح کرده و تمامی 9 دستور print را به فرمت نوشتاری Python 3 تبدیل کنید. برای مثال:
print "Authentication Error"
تبدیل میشود به :
print("Authentication Error")
به عبارت دیگر همه چیز بعد از دستور print داخل پرانتز قرار میگیرند.
یک نمونه اسکریپت پایتون
به منظور سادهکردن خروجی، با اعمال تغییراتی در یک اسکریپت مثالیکاربردی ارائه میشود. در این مثال کارت را خوانده ، شناسه آن را چاپ کرده و 2 ثانیه منتظر میماند. بنابراین برای نشان دادن یک شناسه دیگر باید بیش از 2 ثانیه کارت را نزدیک ماژول نگه دارید.
import time
import RPi.GPIO as GPIO
import MFRC522
# Create an object of the class MFRC522
MIFAREReader = MFRC522.MFRC522()
# Welcome message
print("Looking for cards")
print("Press Ctrl-C to stop.")
# This loop checks for chips. If one is near it will get the UID
try:
while True:
# Scan for cards
(status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL)
# 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("UID: "+str(uid[0])+","+str(uid[1])+","+str(uid[2])+","+str(uid[3]))
time.sleep(2)
except KeyboardInterrupt
این اسکریپت به طور مستقیم از طریق لینک زیر دانلود میشود:
https://bitbucket.org/MattHawkinsUK/rpispy-misc/raw/master/python/rc522_read.py
و با دستور زیر قابل اجراست.
python rc522_read.py
خروجی به صورت تصویر نشان داده شده است:
شناسه (UID) یک آرایه چهار عنصری است و اسکریپت هر عنصر را با کاما جدا میکند. حتما نیازی به استفاده از کاما نیست و چهار عنصر آرایه میتوانند با هم ترکیب شده تا یک عدد ساده ارائه شود. به عنوان مثال UID تگ میتواند به جای "148،35،65،119" تبدیل به "1483565119" میشود.