راه اندازی ماژول RFID با رزبری پای به زبان پایتون
در این پروژه می خواهیم به وسیله raspberry pi 3 و با زبان python ماژول EM-19 را راه اندازی کنیم به طوری که شماره ی کارت ها را در یک فایل (با فشردن کلید ونزدیک کردن کارت ) ذخیره کند و اگه کارتی که به ان نزدیک میکنید قبلا ذخیره شده باشد با یک led به شما خبر می دهد .
ابزار مورد نیاز برای راه اندازی پروژه:
کاربرد های ماژول EM-19(RFID)
سیستم های امنیتی
قفل کارتی هتل و استخرها
کارت های اعتباری و بلیط های الکترونیکی
شناسایی کاربر یا خودور یا کالا …
خانه های هوشمند
فناوری اطلاعات
سامانه های هوشند
RFID در ساخت و ساز : ابزار ردیابی ، ردیابی لوله
RFID در بیمارستان و مراقبت از سلامت
سیستم های پرداخت RFID
دستگاه های حضور و غیاب و کنترل تردد
ترتیب پایه های این ماژول به شرح زیر است :
برای ارتباط این ماژول با raspberry pi3 از پورت سریال در حالتTTL استفاده میکنیم که برای این منظور پایه های 5و6 را به جامپر به هم میبندیم سپس پایه ی TXD (پایه 9) به پایه 10 raspberry pi3 و پاییه های 1 و2 ماژول را به پایه های 4و 6 raspberry pi3 وصل میکنیم.
ارتباط ماژول EM-19 از طریق پورت سریال است و مشخصات ان به شرح زیر است :
باید پورت سریال raspberry pi3 را فعال کنیم . مراحل فعال کردن پورت سریال در raspberry pi3 :
نکته :این روش فقط برای raspberry pi3 صادق است و بر روی ورژن ها قبلی عمل نمی کند!!!
1.صفحه ترمینال را باز کنید
2.خط زیر را در ان بنویسید
sudo nano /boot/config.txt
3.صفحه ای برای شما خواهد امد در انتهای ان دو خط زیر را اضافه کنید :
enable_uart=1 core-freq=250
4.سپس دکمه های ctrl+X زده و بعد دکمه Y را بزنید و بعد از ان enter را بزنید
5.در صفحه ترمینال خط زیر را بنویسید :
sudo nano /boot/cmdline.txt
6.در صفحه ی باز شده چنین چیزی خواهید دید:
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes root wait
7. بخش زیر را از ان پاک کنید :
console=serial0,115200
8.سپس دوباره دکمه های ctrl+X زده و بعد دکمه Y را بزنید و بعد از ان enter را بزنید حال پورت سریال raspberry pi3 شما فعال شده است . برای مرحله بعد باید یک کلید ویک led به raspberry pi3 خود اضافه کنید .
کلید برای اینکه بتوان کارت جدید را به فایل اضافه کرد . بعد از هر بار خواندن کارتی که قبلا عضو شده است led یک بار چشمک میزند و بعد از عضو کردن کارت جدید led برای 5 ثانیه روشن می ماند . برای استفاده از gpio در python باید کتابخانه ان را اضافه کرد .
نصب کتابخانه GPIO برای python :
1.ترمینال را باز کنید خط زیر را در ان بنویسید :
sudo apt-get install python3-rpi.gpio
صبر کنید تا نصب ان تمام شود ترمینال را ببندید.
ساختن فایل های مورد نیاز :
رو صفحه ی desktop راست کلیک کرده در بخش create new گزینه empty file را انتخاب کنید.
سپس در نوار بازشده خط زیر را بنویسید :
دکمه ok را بزنید دوباره یک فایل جدید بسازید و درنوار باز شده خط زیر را بنویسید :
ok را بزنید فایل project را باز کرده و کد های زیر را در ان بنویسید:
#فراخواني کتابخانه هاي مورد نياز ##### import serial import binascii import time import RPi.GPIO as GPIO ###################################### #############تعريف پايه ها############ Led=4 Button=18 ###################################### ##########initialing gpio############# GPIO.setmode(GPIO.BCM) GPIO.setup(Led,GPIO.OUT)#خروجي کردن پايه GPIO.setup(Button,GPIO.IN,pull_up_down=GPIO.PUD_DOWN)# کردن انpulldownورودي کردن پايه و ###################################### #########initialing serial############ ser=serial.Serial( port='/dev/ttyS0', baudrate=9600, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS ) ser.open() ###################################### CardIds=[] NumberOfCardIds=0 while 1: file=open('/home/pi/Desktop/data.txt','r+')#باز کردن فايل ##########خواندن خط هاي داخل فايل###### for line in file: String=line CardIds.append(String[:-1]) NumberOfCardIds+=1 ##################################### while 1: ReadID=ser.read(12).decode('utf-8')#گرفتن اي دي کارت از ماژول ####################شرط براي عضو کردن کارت ############ if GPIO.input(Button): file.write(ReadID) file.write('\n') GPIO.output(Led,1) time.sleep(5) GPIO.output(Led,0) break ####################################################### ############چک کردن کد کارت با فايل#################### for x in range(0,NumberOfCardIds): if ReadID==CardIds[x]: GPIO.output(Led,1) time.sleep(0.5) GPIO.output(Led,0) ####################################################### file.close() ser.close()
نمایی از شماتیک پروژه:
نویسنده:شهاب نیکخو(SHB)
سلام . ممنون از آموزش خوبتون
اگه بخواهیم به جای led از ماژول GSM استفاده کنیم . باید چه کاری انجام بدیم
منظورم اینه که مثلا هنگامی که کارت 1 فعال میشه به شماره 1 پیامی ارسال بشه و هنگام فعال شدن کارت 2 به شماره 2 پیام داده بشه
ممنون میشم در این مورد هم راهنمایی کنید
پروتکلشون که یکیه
ولی برنامه نویسیشون متفاوته
سلام وقتتون بخیر اگه مرحله 7 رو انجام ندیم چی میشه؟ من هرکاری میکنم نمیتونم اون یه تیکه رو پاک کنم، نمیدونم چجوریه؟
سلام
جهت طرح سوالات علمی خود به انجمن مراجعه کنید: http://www.eca.ir/forums
درود بر شما
پس از انجام مراحل بالا خطای زیر مشاهده شد:
Traceback (most recent call last):
File “/usr/lib/python3/dist-packages/serial/serialposix.py”, line 265, in open
self.fd = os.open(self.portstr, os.O_RDWR | os.O_NOCTTY | os.O_NONBLOCK)
FileNotFoundError: [Errno 2] No such file or directory: ‘/dev/ttyS0’