آموزش رزبری پای

راه اندازی ماژول RFID با رزبری پای (خواندن و نوشتن + کنترل رله)

دستگاه‌های شناسایی فرکانس رادیویی (RFID) بخش ضروری تقریباً تمام سیستم‌های امنیتی فیزیکی هستند. تگ های RFID و کارت‌خوان‌ها برای محدود کردن دسترسی به ساختمان‌ها یا اتاق‌ها استفاده می‌شوند. کارت RFID یک شماره شناسایی منحصر به فرد را ذخیره می کند که به صورت بی سیم توسط کارت خوان RFID متصل به دیوار شناسایی می شود. اگر شماره شناسایی کارت RFID با شماره شناسایی لیست ذخیره شده کارت های مجاز مطابقت داشته باشد، درب باز می شود و دارنده کارت می تواند وارد اتاق شود.

دستگاه های RFID در فرکانس بالا از 3 تا 30 مگاهرتز کار می کنند. اما اکثر دستگاه های RFID معمولاً در فرکانس 13.56 مگاهرتز کار می کنند.

پروژه ای طراحی میکنیم که زمانی که تگ RFID با شماره از پیش تعیین شده نزدیک ماژول RFID شود، رزبری پای رله را فعال میکند.

انواع مختلف کارت خوان/نویسنده RFID

ماژول خواننده RFID چگونه کار می کنند؟

سیستم RFID که در این آموزش می‌خواهیم بسازیم شامل سه جزء است: Raspberry Pi، کارت‌خوان RFID و تگ RFID

همه کارت‌ها و برچسب‌های RFID دو جزء دارند. یک آی‌سی که شماره شناسایی منحصربه‌فرد را ذخیره می‌کند و یک سیم پیچ که به عنوان آنتن فرکانس رادیویی عمل می‌کند.

اجزای اساسی یک سیستم RFID Raspberry Pi
کارت RFID غیرفعال

کارت خوان RFID یک سیم پیچ از سیم مسی نیز دارد. این سیم پیچ زمانی که جریانی از آن عبور می کند میدان مغناطیسی ایجاد می کند. هنگامی که کارت RFID در نزدیکی کارت خوان قرار می گیرد، میدان مغناطیسی کارت خوان جریانی را در سیم پیچ کارت القا می کند. این جریان برای تغذیه آی سی آنبورد کارت کافی است. سپس کارتخوان می تواند شماره شناسایی منحصر به فرد روی کارت را بخواند. سپس شماره شناسایی کارت از کارتخوان به یک میکروکنترلر یا برد مانند Raspberry Pi منتقل می شود. کارت خوان RFID که قرار است از آن استفاده کنیم می تواند اطلاعات شناسایی را روی کارت ها یا برچسب های RFID نیز بنویسد.

مدار اتصال RFID به Raspberry PI

ما از ارتباط SPI برای ارتباط Raspberry Pi با کارت خوان RFID استفاده خواهیم کرد.

اینها قطعاتی هستند که شما نیاز خواهید داشت:

  • رزبری پای
  • کارت خوان RFID RC522
  • سیم های جامپر

برای اتصال کارت خوان RFID به Raspberry Pi، شماتیک سیم کشی زیر را دنبال کنید:

مدار اتصال RFID به Raspberry PI

برنامه نویسی RFID با پایتون در رزبری پای

قبل از شروع برنامه نویسی، مطمئن شوید که رابط SPI در Raspberry Pi شما فعال است. همچنین باید pip3 را با این دستور نصب کنید:

sudo apt-get -y install python3-pip

سپس با دستور زیر کتابخانه پایتون MFRC522 را نصب کنید:

sudo pip3 install mfrc522

اولین قدم ما خواندن اطلاعات روی کارت RFID خواهد بود. برای انجام این کار، قطعات را مطابق شکل بالا وصل کنید. سپس یک فایل پایتون rfidReader.py ایجاد کنید و کد زیر را در آن قرار دهید.

import RPi.GPIO as GPIO
from mfrc522 import SimpleMFRC522

rfid = SimpleMFRC522()

while True:
        id, text = rfid.read()
        print(id)
        print(text)

ابتدا ماژول های لازم را وارد می کنیم. سپس از rfid = SimpleMFRC522() برای ایجاد یک شی جدید استفاده می کنیم که آن را RFID می نامیم. برای خواندن تاریخ کارت RFID، تابع read() را فراخوانی می کنیم و خروجی آن را در متغیرهای id و text ذخیره می کنیم.

همچنین اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید

در نهایت شناسه و متن کارت را به ترتیب با print(id) و print(text) در ترمینال چاپ می کنیم.

ما این کد را در یک حلقه بی نهایت قرار داده ایم، به این معنی که Raspberry Pi به طور مداوم خروجی ماژول RFID را می خواند.

کد پایتون بالا را با وارد کردن دستور sudo python3 rfidReader.py در ترمینال اجرا کنید.

شما باید چیزی شبیه به این را ببینید که در ترمینال چاپ می شود:

چاپ نتیجه در ترمینال رزبری پای

این به ما می گوید که کارت RFID ما دارای شناسه 1002059512185 و تگ 588633495959 است.

کد برای نوشتن در کارت RFID

برای نوشتن اطلاعات روی کارت RFID، از متود دیگری استفاده می کنیم یعنی rfid.write(). در کد زیر می‌توانیم ببینیم که چگونه این کار می‌کند. یک فایل به نام rfidWriter.py ایجاد می کنیم و کد زیر را در آن قرار می دهیم.

import RPi.GPIO as GPIO
from mfrc522 import SimpleMFRC522

rfid = SimpleMFRC522()

try:
        print("Hold tag near the module...")
        rfid.write("IRENX")
        print("Written")
finally:
        GPIO.cleanup()

یک تفاوت قابل توجه بین rfidReader.py و rfidWriter.py این است که ما در rfidWriter یک حلقه while نداریم که به این دلیل است که ما نمی خواهیم اطلاعات یکسانی را روی کارت های مختلف بنویسیم. بنابراین کد بالا را هر چند بار که بخواهیم روی کارت های مختلف بنویسیم اجرا می کنیم. بقیه چیزها ثابت می مانند، به جز اینکه وقتی کارت را به رایتر RFID نزدیک می کنیم، rfid.write (“IRENX”) را فراخوانی می کنیم. در این حالت، ما رشته IRENX را روی کارت می نویسیم.

برای اینکه ببینیم آیا این عملیات موفقیت آمیز بوده است، با اجرای مجدد دستور sudo python3 rfidReader.py اطلاعات کارت RFID را می خوانیم.

کنترل رله با کارت RFID و رزبری پای

در نهایت، از شماره شناسه منحصربه‌فرد کارت برای راه‌اندازی یک رله 5 ولتی هنگام شناسایی کارت با شناسه ثبت شده استفاده می‌کنیم.

قطعات مورد نیاز

  • رزبری پای
  • کارت خوان RFID RC522
  • سیم های جامپر
  • رله 5 ولت SRD-05VDC-SL-C

هنگامی که تمام قطعات را دارید، مدار را به صورت زیر وصل کنید:

کنترل رله با کارت RFID و رزبری پای

سپس کد پایتون زیر را روی Raspberry Pi اجرا کنید:

import RPi.GPIO as GPIO
from mfrc522 import SimpleMFRC522
import time

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)

rfid= SimpleMFRC522()
channel = 17

def relay_on(pin):
    GPIO.output(pin,GPIO.HIGH)

def relay_off(pin):
    GPIO.output(pin,GPIO.LOW)

while True:
      id, text = rfid.read()
      print(id)
      
      if id == 1002059512185:
        relay_on(channel)
        print(text+":Access granted")
        time.sleep(5)
        relay_off(channel)

      else:
        relay_off(channel)
        print("Not allowed...")

پایه 17 GPIO را به عنوان خروجی اعلام می کنیم (GPIO.setup(17, GPIO.OUT)) و دو تابع می نویسیم که پایه خروجی ما را روشن و خاموش می کند: relay_on(pin) و relay_off (pin). ما rfidReader.py اصلی را تغییر می دهیم تا به طور مداوم شناسه هر کارت شناسایی شده را با استفاده از خط if id == 1002059512185 بررسی کنیم. اگر شناسه کارت شناسایی شده با شناسه پروژه ما مطابقت داشته باشد، رله را روشن می کنیم. در غیر این صورت، ما آن را خاموش نگه می داریم.

امیدواریم این به شما کمک کند تا استفاده از کارت خوان ها و رایترهای RFID را در Raspberry Pi شروع کنید. آنها واقعا دستگاه های بسیار مفیدی هستند! در صورت داشتن هرگونه سوال در زیر کامنت بگذارید.

5/5 - (1 امتیاز)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام آیرنکس را دنبال کنید.
تصویر از محمد رحیمی

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید قرار بدهم. سوالات مربوط به این مطلب را در قسمت نظرات همین مطلب اعلام کنید. سعی میکنم در اسرع وقت به نظرات شما پاسخ بدهم.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.