- المكونات المستخدمة:
- شرح العمل:
- سيركويت دسكريبتيون:
- تثبيت مكتبة wiringPi في Raspberry Pi:
- شرح البرمجة:
لقد استخدمنا سابقًا RFID في العديد من مشاريع RFID الخاصة بنا وقمنا بالفعل ببناء نظام حضور يعتمد على RFID باستخدام 8051 ، هنا سنقوم ببناء نظام حضور يعتمد على RFID باستخدام Raspberry Pi.
في مشروع نظام الحضور هذا المستند إلى RFID ، سنشرح لك كيف يمكننا تفويض الحضور وحسابه تلقائيًا باستخدام بطاقات RFID. تُستخدم تقنية RFID (تحديد وكشف الترددات اللاسلكية) بشكل شائع في المدارس والكليات والمكاتب والمحطات لأغراض مختلفة لتتبع الأشخاص تلقائيًا. سنقوم هنا بحساب حضور شخص مخول باستخدام RFID.
إذا لم تكن معتادًا على Raspberry Pi ، فقد أنشأنا سلسلة من البرامج التعليمية ومشاريع Raspberry Pi ، مع التفاعل مع جميع المكونات الأساسية وبعض المشاريع البسيطة للبدء بها ، تحقق.
المكونات المستخدمة:
- Raspberry Pi (مع بطاقة SD التمهيد)
- اضغط الزر
- صفارة
- 16x2 LCD
- 10 كيلو وعاء
- 10 كيلو المقاوم
- يؤدى
- 1 كيلو المقاوم
- لوح الخبز
- قارئ RFID
- قوة 5 فولت
- بطاقات أو بطاقات RFID
- كابل إيثرنت
- توصيل الأسلاك
قارئ وبطاقات RFID:
RFID هو جهاز إلكتروني يتكون من جزأين - أحدهما قارئ RFID والآخر هو علامة أو بطاقة RFID عندما نضع علامة RFID بالقرب من قارئ RFID ، فإنها تقرأ بيانات العلامة بشكل متسلسل. تحتوي علامة RFID على رمز حرف مكون من 12 رقمًا في ملف. يعمل RFID هذا بمعدل باود يبلغ 9600 بت في الثانية. يستخدم RFID مغناطيسًا كهربائيًا لنقل البيانات من Reader إلى Tag أو Tag إلى Reader.
شرح العمل:
هنا يتحكم Raspberry Pi 3 في العملية الكاملة لهذا المشروع (يمكن للمستخدم استخدام أي لوحة Raspberry Pi). يقوم قارئ RFID بقراءة معرف بطاقة RFID ، ويتم تلقي هذه البيانات بواسطة Raspberry Pi من خلال UART ، ثم يتحقق RPi من البطاقة ويعرض النتائج على شاشة LCD.
عندما يضع شخص ما علامة RFID الخاصة به بالقرب من قارئ RFID للمسح ، يقرأ RFID بيانات العلامة ويرسلها إلى Raspberry Pi. ثم يقرأ Raspberry Pi رقم التعريف الفريد لعلامة RFID ثم يقارن هذه البيانات مع البيانات أو المعلومات المحددة مسبقًا. إذا تم مطابقة البيانات مع البيانات المحددة مسبقًا ، فإن Raspberry Pi يزيد من حضور شخص العلامة بواحد ، وإذا لم يتم التطابق ، فإن وحدة التحكم الدقيقة تعرض رسالة "بطاقة غير صالحة" على شاشة LCD ويصدر الجرس صفيرًا بشكل مستمر لبعض الوقت. وهنا أضفنا أيضًا زر ضغط لمعرفة العدد الإجمالي. من حضور جميع الطلاب. هنا أخذنا 4 بطاقات RFID حيث يتم استخدام ثلاثة منها لتسجيل حضور ثلاثة طلاب وواحد يستخدم كبطاقة غير صالحة.
سيركويت دسكريبتيون:
مخطط الدائرة لمشروع نظام حضور Raspberry Pi بسيط للغاية ، والذي يحتوي على Raspberry Pi 3 وقارئ RFID وعلامات RFID وجرس و LED و LCD. هنا يتحكم Raspberry Pi في العملية الكاملة مثل قراءة البيانات الواردة من القارئ ، ومقارنة البيانات مع البيانات المحددة مسبقًا ، وجرس القيادة ، ومؤشر حالة القيادة وإرسال الحالة إلى شاشة LCD. يستخدم قارئ RFID لقراءة علامات RFID. يستخدم الجرس للإشارات ويتم تشغيله بواسطة ترانزستور NPN يحمل في ثناياه عوامل. تُستخدم شاشة LCD لعرض الحالة أو الرسائل عليها.
التوصيلات بسيطة. شاشة LCD متصلة بـ Raspberry Pi في وضع 4 بت. يتم توصيل دبوس RS و RW و EN الخاص بشاشات الكريستال السائل مباشرة في الأسلاك Pi GPIO 11 و gnd و 10. ويتم توصيل دبوس البيانات في الأسلاك. يتم توصيل الجرس في الأسلاك Pi GPIO pin 7 فيما يتعلق بالأرض. تم توصيل ثلاثة مصابيح LED لتوضيح الطالب ببطاقة RFID الخاصة بها. ويتم استخدام مؤشر LED لإظهار أن النظام جاهز لمسح بطاقة RFID. يتم أيضًا توصيل زر ضغط في الأسلاك pi GPIO pin 12 لعرض عدد الحضور. يتم توصيل قارئ RFID في UART pin (الأسلاك GPIO pin 16).
تثبيت مكتبة wiringPi في Raspberry Pi:
كما هو الحال في Python ، نقوم باستيراد RPi.GPIO كملف رأس IO لاستخدام دبابيس GPIO في Raspberry Pi ، وهنا في لغة C نحتاج إلى استخدام مكتبة wiringPi لاستخدام دبابيس GPIO في برنامج C الخاص بنا. يمكننا تثبيته باستخدام الأوامر أدناه واحدًا تلو الآخر ، يمكنك تشغيل هذا الأمر من Terminal أو من بعض عملاء SSH مثل Putty (إذا كنت تستخدم Windows). انتقل إلى البرنامج التعليمي Getting Started with Raspberry Pi لمعرفة المزيد حول التعامل مع Raspberry Pi.
sudo apt-get install git-core sudo apt-get update sudo apt-get Upgrade git clone git: //git.drogon.net/wiringPi cd wiringPi git pull origin cd wiringPi./build
اختبر تثبيت مكتبة wiringPi ، استخدم الأوامر التالية:
gpio -v gpio readall
شرح البرمجة:
الآن قمنا أولاً بتضمين بعض المكتبات وتحديد الدبابيس التي نحتاج إلى استخدامها في هذا الرمز.
#تضمن
بعد ذلك ، حدد بعض المتغيرات والمصفوفة لحساب وتخزين القيم والسلاسل.
الباحث س ؛ عدد int1 = 0 ، count2 = 0 ، count3 = 0 ؛ شار ؛ يتفاعل شار كثافة العمليات أنا = 0 ؛ شار درجة الحرارة
ثم تمت كتابة الدالات لتنفيذ العملية برمتها. وفيما يلي بعض منها:
نظرا lcdcmd باطلة يتم استخدام الدالة لإرسال الأوامر لLCD
lcdcmd باطلة (غير موقعة int ch) {int temp = 0x80 ؛ digitalWrite (D4 ، temp & ch << 3) ؛ digitalWrite (D5 ، temp & ch << 2) ؛ digitalWrite (D6، temp & ch << 1) ؛ الكتابة الرقمية (D7 ، temp & ch) ؛ الكتابة الرقمية (RS ، منخفضة) ؛ الكتابة الرقمية (EN ، عالية) ؛………………
نظرا الكتابة باطلة يتم استخدام الدالة لإرسال البيانات إلى LCD.
كتابة باطلة (غير موقعة int ch) {int temp = 0x80 ؛ digitalWrite (D4 ، temp & ch << 3) ؛ digitalWrite (D5 ، temp & ch << 2) ؛ digitalWrite (D6، temp & ch << 1) ؛ الكتابة الرقمية (D7 ، temp & ch) ؛ الكتابة الرقمية (RS ، عالية) ؛ الكتابة الرقمية (EN ، عالية) ؛………………
نظرًا لاستخدام وظيفة void clear () لمسح شاشة LCD ، يتم استخدام setCursor الباطلة لضبط موضع المؤشر والطباعة الباطلة لإرسال سلسلة إلى LCD.
باطل واضح () {lcdcmd (0x01) ؛ } void setCursor (int x، int y) {int set = 0؛ إذا (y == 0) مجموعة = 128 + x ؛ إذا (y == 1) مجموعة = 192 + x ؛ lcdcmd (مجموعة) ؛ } void print (char * str) {while (* str) {write (* str)؛ str ++ ؛ }}
يتم استخدام وظيفة بدء الفراغ لتهيئة شاشة LCD في وضع 4 بت.
البداية الباطلة (int x، int y) {lcdcmd (0x02) ؛ lcdcmd (0x28) ؛ lcdcmd (0x06) ؛ lcdcmd (0x0e) ؛ lcdcmd (0x01) ؛ }
الجرس باطل () و الانتظار لاغية () تستخدم وظائف لالتصفير الجرس والانتظار لمرة أخرى وضع بطاقة. يتم استخدام دالة serialbegin لتهيئة الاتصال التسلسلي.
void buzzer () {digitalWrite (buzz، HIGH)؛ تأخير (1000) ؛ الكتابة الرقمية (الطنانة ، منخفضة) ؛ } void wait () {digitalWrite (led5، LOW)؛ تأخير (3000) ؛ } باطل serialbegin (int baud) {if ((sp = serialOpen ("/ dev / ttyS0"، الباود)) <0) {clear ()؛ طباعة ("غير قادر على الفتح") ؛ setCursor (0،1) ؛ طباعة ("المنفذ التسلسلي") ؛ }}
في وظيفة الإعداد الباطل () ، نبدأ جميع GPIOs و LCD و UART التسلسلي.
إعداد باطل () {if (wiringPiSetup () == -1) {clear () ؛ طباعة ("غير قادر على البدء") ؛ setCursor (0،1) ؛ طباعة ("wiringPi") ؛ } pinMode (led1 ، الإخراج) ؛ pinMode (led2 ، الإخراج) ؛……………………
نظرا get_card الفراغ () يستخدم وظيفة للحصول على بيانات من قارئ RFID.
في الدالة الرئيسية () void ، أظهرنا بعض الرسائل على شاشة LCD وقارننا بيانات العلامة بالبيانات المحددة مسبقًا للتحقق من صحة البطاقة بالرمز أدناه.
……………… إذا (strncmp (rfid، "0900711B6003"، 12) == 0) {count1 ++؛ واضح()؛ طباعة ("Attd. مسجلة") ؛ setCursor (0،1) ؛ طباعة ("Studnet 1") ؛ الكتابة الرقمية (led1 ، عالية) ؛ صفارة()؛ digitalWrite (led1 ، منخفض) ؛ انتظر()؛ } else if (strncmp (rfid، "090070FE6EE9"، 12) == 0) {count2 ++؛ واضح()؛ طباعة ("Attd. مسجل") ؛ setCursor (0،1) ؛………………
أخيرًا ، يتم استخدام وظيفة check_button () الباطلة لإظهار الحضور الكلي عند الضغط على الزر.
باطل check_button () {if (digitalRead (in1) == 0) {digitalWrite (led5، LOW) ؛ واضح()؛ setCursor (0،0) ؛ طباعة ("std1 std2 std3") ؛………………
تحقق من الكود الكامل لنظام الحضور Raspberry Pi أدناه.