راه اندازی کارت خوان RFID با رزبری پای
دستگاههای شناسایی امواج فرکانس رادیویی، (RFID)، بخش اساسی اکثر سیستم های امنیتی فیزیکی هستند. کارتهای RFID و دستگاههای کارتخوان مخصوص آنها برای محدود کردن دسترسی به ساختمان ها یا اتاق ها استفاده می شود. به این صورت که کارت RFID یک شماره شناسایی منحصر به فرد را ذخیره می کند که به صورت بی سیم توسط یک کارت خوان RFID متصل به دیوار شناسایی می شود. اگر شماره شناسایی کارت RFID با شماره شناسایی لیست ذخیره شده کارت های مجاز مطابقت داشته باشد، در باز شده و دارنده کارت می تواند وارد اتاق شود. در این پروژه قصد داریم کارت RFID و رله 5 ولت را با استفاده از رزبری پای راه اندازی کنیم.
دستگاه های RFID در رنج فرکانسی بالا، از3 مگاهرتز تا 30 مگاهرتز کار می کنند، و اکثر آنها معمولاً در فرکانس 56/13 مگاهرتز کار می کنند.
در این آموزش، از کارت خوان RC522 RFID و Raspberry Pi برای راه اندازی یک رله 5 ولتی استفاده خواهیم کرد. زمانی که شماره شناسایی کارت RFID با شماره ذخیره شده در Raspberry Pi مطابقت داشته باشد، رله روشن خواهد شد.
نحوه خواندن و رایت کردن روی کارت RFID
سیستم RFID که در این آموزش میخواهیم بسازیم شامل سه جزء است: Raspberry Pi، کارتخوان RFID و کارت RFID:
همه کارتها و برچسبهای RFID دارای دو قسمت هستند، یکی آیسی که شماره شناسایی منحصربهفرد را ذخیره میکند و دیگری سیم پیچ که به عنوان آنتن فرکانس رادیویی عمل میکند.
کارت خوان RFID دارای سیم پیچی از جنس مس است، که با عبور جریان، میدان مغناطیسی ایجاد می کند. هنگامی که کارت RFID در نزدیکی کارت خوان قرار می گیرد، میدان مغناطیسی کارت خوان جریانی را در سیم پیچ سیم روی کارت القا می کند که این جریان برای تغذیه آی سی روی کارت کافیست. سپس کارتخوان می تواند شماره شناسایی منحصر به فرد روی کارت را بخواند. این شماره شناسایی از کارت خوان به میکروکنترلر یا ریزپردازنده ای مانند Raspberry Pi منتقل می شود.
کارت خوان RFID که قرار است از آن استفاده کنیم می تواند علاوه بر این، اطلاعات شناسایی را روی کارت ها یا برچسب های RFID نیز بنویسد.
نحوه اتصال کارتخوان/رایتر RFID به Raspberry Pi
از SPI برای ارتباط Raspberry Pi با کارت خوان RFID استفاده خواهیم کرد. ادوات مورد نیاز:
- برد رزبری پای
- کارتخوان RC522 RFID
- سیمهای جامپر برای اتصالات
برای انجام اتصالات، نقشه سیمهای نشان داده شده در شکل زیر را دقیقا پیاده کنید:
نحوه برنامه نویسی کارتخوان RFID توسط پایتون
قبل از شروع برنامه نویسی، مطمئن شوید که رابط SPI در Raspberry Pi فعال است. همچنین باید pip3 را با این دستور نصب کنید:
sudo apt-get -y install python3-pip
سپس با دستور زیر کتابخانه پایتون MFRC522 را نصب کنید:
sudo pip3 install mfrc522
نحوه خواندن کارت RFID
اولین قدم، خواندن اطلاعات روی کارت RFID خواهد بود. برای انجام این کار، قطعات را مطابق شکل بالا وصل کنید. سپس یک فایل پایتون بانام rfidReader.py ایجاد کنید و کد زیر را در آن قرار دهید.
ابتدا ماژول های لازم را فراخوانی می کنیم. سپس از دستور rfid = SimpleMFRC522() برای ایجاد یک شی جدید استفاده می کنیم که آن را RFID می نامیم. برای خواندن تاریخ کارت RFID، تابع read() را فراخوانی می کنیم و خروجی آن را در متغیرهای id و text ذخیره می کنیم. در نهایت شناسه و متن کارت را به ترتیب با print(id) و print(text) در ترمینال چاپ می کنیم. دقت کنید که این کد داخل یک حلقه بی نهایت قرار داده شده است، به این معنی که Raspberry Pi به طور مداوم خروجی ماژول RFID را می خواند.
کد پایتون بالا را با وارد کردن دستور زیر در ترمینال اجرا کنید:
sudo python3 rfidReader.py
چیزی شبیه به عکس زیر را خواهید دید که در ترمینال چاپ می شود:
عبارات روی ترمینال به این معنی است که که کارت RFID استفاده شده، دارای شناسه 1002059512185 است در حالی که برچسب RFID دارای شناسه 588633495959 است.
کد مربوط به نوشتن کارت RFID
برای نوشتن اطلاعات روی کارت RFID، از روش دیگری استفاده می کنیم. در کد زیر میتوانیم ببینیم که چگونه rfid.write() برای این منظور استفاده میشود. فایلی به نام rfidWriter.py ایجاد کرده و کد زیر را در آن قرار می دهیم:
تفاوت قابل توجه بین rfidReader.py و rfidWriter.py این است که ازحلقه while در دومی استفاده نکردیم. مسلماً به این دلیل که نمی خواهیم اطلاعات یکسانی را روی کارت های مختلف بنویسیم. بنابراین کد بالا را هر چند بار که بخواهیم روی کارت های مختلف بنویسیم اجرا می کنیم. بقیه چیزها ثابت می مانند، به جز اینکه وقتی کارت را به رایتر RFID نزدیک می کنیم، rfid.write(“Circuit Basics”) را فراخوانی می کنیم. در این حالت، عبارت رشته Circuit basics روی کارت نوشته میشود.
برای اینکه ببینیم آیا این عملیات موفقیت آمیز بوده است یا نه، با اجرای مجدد دستور sudo python3 rfidReader.py اطلاعات کارت RFID را می خوانیم. خروجی باید مانند شکل زیر باشد:
شماره (1) اطلاعات نوشته شده روی کارت و شماره (2) اطلاعات خوانده شده از روی کارت میباشد.
کنترل رله 5 ولتی توسط کارت RFID
در نهایت، از شماره شناسه منحصربهفرد کارت برای راهاندازی یک رله 5 ولتی هنگام شناسایی کارت با شناسه ثبت شده استفاده میکنیم. رله شماره SRD-05VDC-SL-C برای این کار مناسب است. اتصالات را همانند شکل زیر انجام دهید:
حالا کد پایتون زیر را روی رزبری اجرا کنید:
توضیح کد پایتون
به جای استفاده از کتابخانه LED برای کنترل GPIO، پایه GPIO 17 را به عنوان خروجی اعلام می کنیم و از دو تابع relay_on(pin) و relay_off(pin) برای روشن و خاموش کردن آن استفاده میکنیم.
کد rfidReader.py اصلی را تغییر می دهیم تا به طور مداوم شناسه هر کارت شناسایی شده را با استفاده از خط if id == 1002059512185 بررسی کنیم. اگر شناسه کارت شناسایی شده با شناسه برنامه مطابقت داشته باشد، رله را روشن می کنیم، در غیر این صورت آن را خاموش نگه می داریم.
کارت شماره ۱ شناسایی نشده، در حالیکه کارت شماره ۲ تشخیص شده است.
امیدواریم به کمک این برنامه استفاده از کارت خوان ها و رایترهای RFID را در Raspberry Pi شروع کنید و از کار با آنها لذت ببرید!
هر سه شنبه با مقالات رزبری پای همراه توسکانیک باشید
منبع: https://www.circuitbasics.com/