Lire badge RFID

استخدم قارئ RFID مع Raspberry Pi.

محدث 11 July 2019 - 0 تعليقات - , , ,

ⓘ ربما تمت ترجمة هذه المقالة جزئيًا أو كليًا باستخدام أدوات آلية. نحن نعتذر عن أي أخطاء قد يسببها هذا.

هذا البرنامج التعليمي هو الجزء الثاني من الملف المخصص لاكتشاف الإلكترونيات باستخدام Raspberry Pi. إذا لم تكن قد قرأته ، أنصحك باستشارة البرنامج التعليمي الأول للتحكم في مؤشر LED باستخدام Raspberry Pi.

سواء كان ذلك لأنظمة تحديد الهوية أو إدارة المخزون أو الدفع أو التشغيل الآلي للمنزل ، يتم استخدام رقائق RFID أكثر فأكثر.

سنرى في هذا البرنامج التعليمي كيفية قراءة بطاقات RFID باستخدام Raspberry Pi وقارئ RC522 RFID.

في نهاية البرنامج التعليمي ، ستكون قادرًا على قراءة شارة RFID ، والتحقق مما إذا كانت هي تلك المتوقعة ، وإضاءة مؤشر LED أخضر أو أحمر ، اعتمادًا على النتيجة. كل ما عليك فعله هو تكييف هذا المثال الأساسي لمشروع من اختيارك!

المعدات اللازمة

لإكمال هذا البرنامج التعليمي ، ستحتاج إلى المواد التالية:

قم بتجميع قارئ RC522 RFID

عندما تتلقى وحدة RC522 RFID ، يمكنك أن ترى أنها تأتي مع مجموعة من 2 × 8 دبابيس. لذلك ستكون الخطوة الأولى هي لحام 8 من هذه المسامير على قارئ RFID. لا داعي للذعر ، اللحام سهل للغاية!

لذلك يجب عليك إدخال رموز PIN في الفتحات المتوفرة على بطاقة RFID ولحامها بالمكواة.

وحدة ملحومة RC522 RFID
من المحتمل أن تجد موصلات مستقيمة ومنحنية. أنصحك باستخدام المنحني الأكثر عملية.

إذا لم تكن قد قمت باللحام مطلقًا ، فإنني أوصي بهذا الدليل الممتاز لتعلم كيفية اللحام من François من Framboise314.fr.

قم بتوصيل قارئ RFID ومصابيح LED بـ Raspberry Pi

قبل الانتقال إلى كتابة الكود الذي سيسمح لنا بقراءة شارات RFID والتحكم في مصابيح LED ، يجب علينا أولاً توصيل جميع المكونات بـ Raspberry Pi.

للتذكير ، يجب أن يتم توصيل المكونات وفصلها دائمًا مع إيقاف تشغيل Raspberry Pi.

قم بتوصيل قارئ RC522 RFID بـ Raspberry Pi

المكون الأول الذي سنقوم بتوصيله هو قارئ RFID.

للتحكم في قارئ RFID ، سنستخدم مكتبة خارجية. لسوء الحظ ، يتم كتابة هذا باستخدام منافذ GPIOs التي تم إدخالها مباشرة في الكود. هذا يعني أنه لا يمكننا تكوينها بشكل مختلف ، وبالتالي فإننا مضطرون إلى استخدام نفس المنافذ تمامًا مثل تلك المتوفرة في المكتبة.

فيما يلي جدول يسرد منافذ القارئ ومنفذ GPIO الخاص بـ Raspberry Pi الذي ستحتاج إلى توصيله به.

مطابقة منافذ GPIO / منافذ RC522
قم بتوصيل منافذ RC522 بالمنافذ المقابلة في Raspberry Pi.

للتذكير ، ستجد خريطة لمنافذ GPIO الخاصة بـ Raspberry Pi في البرنامج التعليمي الأول في هذه السلسلة.

قم بتوصيل المصابيح

بعد قارئ RFID ، دعنا نقوم بتوصيل مصابيح LED بـ Raspberry Pi.

سنقوم بعمل تجميع بسيط للغاية. سيكون لكل مصباح أنود (الساق الممدودة) متصل بمنفذ GPIO وسيكون لمصباحي LED أنود متصلان بنفس المقاوم ، وهو نفسه متصل بمنفذ GPIO Ground من Raspberry Pi.

وبالتالي ، نستخدم مقاومًا واحدًا لمصباحين ، ونحد من عدد الكابلات.

في النهاية ، بمجرد توصيل بطاقة RFID ومصابيح LED بـ Pi ، يجب أن يكون لديك تجميع يشبه هذا.

لاحظ أنه يمكنك أيضًا توصيل RC522 مباشرة بـ Raspberry Pi دون استخدام الخبز.

اكتب البرنامج لقراءة شارة RFID.

لدينا دائرة وظيفية ، علينا فقط تنشيط منافذ SPI الخاصة بـ Raspberry Pi ، وهي ضرورية لاستخدام قارئ RFID ، وكتابة البرنامج الذي سيقرأ شارة RFID.

كما في البرنامج التعليمي السابق ، سيتم كتابة البرنامج بلغة بايثون. هذا البرنامج التعليمي ليس دورة بايثون ، وسوف نشرح البرنامج بإيجاز فقط. إذا كنت ترغب في معرفة المزيد عن Python ، فقد نشرنا دورة تمهيدية حول البرمجة باستخدام Python.

قم بتنشيط بروتوكول SPI الخاص بـ Raspberry Pi

قبل كتابة البرنامج ، لنقم بتمكين بروتوكول SPI على Raspberry Pi حتى نتمكن من استخدام وحدة RFID.

لتنشيطه ، ما عليك سوى تشغيل الأمر sudo raspi-config، على Raspberry الخاص بك ، ثم اختر Interfacing Options، SPI، Yes و اخيرا Finish.

قم بتثبيت مكتبة pi-rc522

آخر شرط مسبق ، سنقوم بتثبيت مكتبة Python3 "pi-rc522" التي تتيح لك التحكم في مشغل RC522.

سنستخدم Pip3 ، مدير مكتبة لبايثون.

تحتاج فقط إلى تشغيل الأمر:

sudo pip3 install pi-rc522

اكتب البرنامج لقراءة معرف شارة RFID

كل شارة RFID لها معرّف فريد. من خلال قراءة هذا المعرّف ومقارنته بقائمة المعرفات المصرح بها يمكننا معرفة ما إذا كانت الشارة مرخصة أم لا.

لذلك سنقوم بكتابة برنامج يسمح لنا بقراءة المعرف الفريد لشارة RFID.

كما فعلنا في البرنامج التعليمي السابق ، سنكتب البرنامج في المجلد /home/pi/electronic (إذا لم تكن قد قمت بذلك بالفعل ، فقم بإنشاء المجلد).

في هذا المجلد ، قم بإنشاء ملف read_rfid_uid.py ووضع الكود التالي فيه:

#!/usr/bin/env python3.5
#-- coding: utf-8 --

import RPi.GPIO as GPIO #Importe la bibliothèque pour contrôler les GPIOs
from pirc522 import RFID
import time


GPIO.setmode(GPIO.BOARD) #Définit le mode de numérotation (Board)
GPIO.setwarnings(False) #On désactive les messages d'alerte

rc522 = RFID() #On instancie la lib

print('En attente d'un badge (pour quitter, Ctrl + c): ') #On affiche un message demandant à l'utilisateur de passer son badge

#On va faire une boucle infinie pour lire en boucle
while True :
    rc522.wait_for_tag() #On attnd qu'une puce RFID passe à portée
    (error, tag_type) = rc522.request() #Quand une puce a été lue, on récupère ses infos

    if not error : #Si on a pas d'erreur
        (error, uid) = rc522.anticoll() #On nettoie les possibles collisions, ça arrive si plusieurs cartes passent en même temps

        if not error : #Si on a réussi à nettoyer
            print('Vous avez passé le badge avec l'id : {}'.format(uid)) #On affiche l'identifiant unique du badge RFID
            time.sleep(1) #On attend 1 seconde pour ne pas lire le tag des centaines de fois en quelques milli-secondes

بمجرد حفظ الملف ، يتم تفويضه للتنفيذ بالأمر:

sudo chmod +x /home/pi/electronic/read_rfid_uid.py

يمكننا الآن بدء البرنامج عن طريق استدعاء الأمر:

/home/pi/electronic/read_rfid_uid.py

في كل مرة تقوم فيها بتمرير شارة RFID أمام القارئ ، سيتم عرض معرفها الفريد!

اكتب برنامجًا يعرض ما إذا كانت الشارة صالحة أم لا.

الآن بعد أن أصبح بإمكاننا قراءة المعرف الفريد للشارة ، كل ما علينا فعله هو تكييف الكود السابق لمقارنة المعرف الذي تمت قراءته بمعرف مكتوب في البرنامج.

لذلك سنقوم بتعديل البرنامج السابق قليلاً بحيث يقارن uid القراءة مع الموجود في البرنامج ، ويضيء باللون الأحمر أو الأخضر حسب النتيجة.

انسخ الملف السابق إلى ملف جديد verify_rfid.py وقم بتعديله للرمز أدناه:

قم بتحرير الخط RFID_UID لوضع معرف بطاقة RFID الخاصة بك!

#!/usr/bin/env python3.5
#-- coding: utf-8 --

import RPi.GPIO as GPIO #Importe la bibliothèque pour contrôler les GPIOs
from pirc522 import RFID
import time


GPIO.setmode(GPIO.BOARD) #Définit le mode de numérotation (Board)
GPIO.setwarnings(False) #On désactive les messages d'alerte

LED_RED = 3 #Définit le numéro du port GPIO qui alimente la led rouge
LED_GREEN = 5 #Définit le numéro du port GPIO qui alimente la led verte
RFID_UID = [21, 35, 5, 43, 57] #Définit l'UID du badge RFID

#Définit la fonction permettant d'allumer une led
def turn_led_on (led) :
    GPIO.setup(led, GPIO.OUT) #Active le contrôle du GPIO
    GPIO.output(led, GPIO.HIGH) #Allume la led

#Définit la fonction permettant d'éteindre une led
def turn_led_off (led) :
    GPIO.setup(led, GPIO.OUT) #Active le contrôle du GPIO
    GPIO.output(led, GPIO.LOW) #Eteind la led

#Définit la fonction permettant d'allumer la rouge et éteindre la verte
def turn_red_on () :
    turn_led_off(LED_GREEN) #Eteind la led verte
    turn_led_on(LED_RED) #Allume la led rouge

#Définit la fonction permettant d'allumer la verte et éteindre la rouge
def turn_green_on () :
    turn_led_off(LED_RED) #Eteind la led rouge
    turn_led_on(LED_GREEN) #Allume la led verte


rc522 = RFID() #On instancie la lib

print('En attente d'un badge (pour quitter, Ctrl + c): ') #On affiche un message demandant à l'utilisateur de passer son badge

#On va faire une boucle infinie pour lire en boucle
while True :
    rc522.wait_for_tag() #On attnd qu'une puce RFID passe à portée
    (error, tag_type) = rc522.request() #Quand une puce a été lue, on récupère ses infos

    if not error : #Si on a pas d'erreur
        (error, uid) = rc522.anticoll() #On nettoie les possibles collisions, ça arrive si plusieurs cartes passent en même temps

        if not error : #Si on a réussi à nettoyer
            if RFID_UID == uid :
                print('Badge {} autorisé !'.format(uid))
                turn_green_on()
            else :
                print('Badge {} interdit !'.format(uid))
                turn_red_on()

            time.sleep(1) #On attend 1 seconde pour ne pas lire le tag des centaines de fois en quelques milli-secondes

كل ما عليك فعله هو تشغيل البرنامج والاختبار!

يمكنك بعد ذلك تكييف الكود لمشاريعك الخاصة ، مثل إنشاء قفل ذكي ، أو حتى صندوق موسيقى باستخدام علامات RFID!

للحصول على معلومات ، يمكنك الحصول على جميع التعليمات البرمجية لهذا البرنامج التعليمي على Github of Raspbian France.

في البرنامج التعليمي التالي ، سنرى كيفية التحكم في محرك سيرفو باستخدام Raspberry Pi!

مشاركة
النشرة الإخبارية
الكاتب :
Raspberry Pi FR
انضم إلى مجتمع Raspberry Pi
كمبيوتر بقيمة 35 دولارًا باع بالفعل 10 ملايين نسخة
شراء RASPBERRY PI الجديد 4
البرامج التعليمية ذات الصلة
قم بتشغيل وإيقاف تشغيل مؤشر LED باستخدام Raspberry Pi و Python. قم بتنشيط منفذ TTL التسلسلي لـ Raspberry Pi وتحقق من أنه يعمل. إنشاء كتلة Raspberry Pi مع سرب دوكر وميض مؤشر LED الأخضر الموجود على متن جهاز Raspberry Pi. تعلم البرمجة باستخدام Python 3 ودورة Raspberry Pi التمهيدية.
No Comments
مشاركة
الاشتراك في الرسائل الإخبارية
اشترك في النشرة الإخبارية.
هل أعجبك هذا المقال ؟
اشترك وابق على اطلاع!