رزبری پای - Raspberry PIمطالب علمی

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

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

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

کاربرد های ماژول EM-19(RFID)

سیستم های امنیتی
قفل کارتی هتل و استخرها
کارت های اعتباری و بلیط های الکترونیکی
شناسایی کاربر یا خودور یا کالا …
خانه های هوشمند
فناوری اطلاعات
سامانه های هوشند
RFID در ساخت و ساز : ابزار ردیابی ، ردیابی لوله
RFID در بیمارستان و مراقبت از سلامت
سیستم های پرداخت RFID
دستگاه های حضور و غیاب و کنترل تردد

ترتیب پایه های این ماژول به شرح زیر است :

rf1

 

rf2

برای ارتباط این ماژول با raspberry pi3 از پورت سریال در حالتTTL استفاده میکنیم که برای این منظور پایه های 5و6 را به جامپر به هم میبندیم سپس پایه ی TXD (پایه 9) به پایه 10 raspberry pi3 و پاییه های 1 و2 ماژول را به پایه های 4و 6 raspberry pi3 وصل میکنیم.

rf3

ارتباط ماژول EM-19 از طریق پورت سریال است و مشخصات ان به شرح زیر است :

rf4

باید پورت سریال raspberry pi3   را فعال کنیم . مراحل فعال کردن پورت سریال در raspberry pi3 :

نکته :این روش فقط برای raspberry pi3  صادق است و بر روی ورژن ها قبلی عمل نمی کند!!!

1.صفحه ترمینال را باز کنید

2.خط زیر را در ان بنویسید

sudo nano /boot/config.txt

3.صفحه ای برای شما خواهد امد در انتهای ان دو خط زیر را اضافه کنید :

enable_uart=1
core-freq=250

rf5

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

rf6

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

rf7

صبر کنید تا نصب ان تمام شود ترمینال را ببندید.

ساختن فایل های مورد نیاز :

رو صفحه ی desktop راست کلیک کرده در بخش create new  گزینه empty file  را انتخاب کنید.

rf8

سپس در نوار بازشده خط زیر را بنویسید :

rf9

دکمه  ok را بزنید دوباره یک فایل جدید بسازید و درنوار باز شده خط زیر را بنویسید :

rf10

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()

نمایی از شماتیک پروژه:

rf11

نویسنده:شهاب نیکخو(SHB)

نوشته های مشابه

5 دیدگاه

  1. سلام . ممنون از آموزش خوبتون
    اگه بخواهیم به جای led از ماژول GSM استفاده کنیم . باید چه کاری انجام بدیم
    منظورم اینه که مثلا هنگامی که کارت 1 فعال میشه به شماره 1 پیامی ارسال بشه و هنگام فعال شدن کارت 2 به شماره 2 پیام داده بشه
    ممنون میشم در این مورد هم راهنمایی کنید

  2. سلام وقتتون بخیر اگه مرحله 7 رو انجام ندیم چی میشه؟ من هرکاری میکنم نمیتونم اون یه تیکه رو پاک کنم، نمیدونم چجوریه؟

  3. درود بر شما
    پس از انجام مراحل بالا خطای زیر مشاهده شد:

    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’

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

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

دکمه بازگشت به بالا