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

در این پروژه می خواهیم به وسیله raspberry pi 3  و  با زبان python ماژول EM-19 را راه اندازی کنیم به طوری که شماره ی کارت ها را در یک فایل (با فشردن کلید ونزدیک کردن کارت ) ذخیره کند و اگه کارتی که به ان نزدیک میکنید قبلا ذخیره شده باشد با یک led  به شما خبر می دهد .

ابزار مورد نیاز برای راه اندازی پروژه:

  • برد رزبری پای 3
  • ماژول EM-19 RFID Reader
  • برد برد

کاربرد های ماژول 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) منبع: ECA.ir

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *