בעבר השתמשנו ב- RFID ברבים מהפרויקטים שלנו ב- RFID וכבר בנינו מערכת נוכחות מבוססת RFID באמצעות 8051, כאן אנו הולכים לבנות מערכת נוכחות מבוססת RFID באמצעות Raspberry Pi.
בכך פרויקט מערכת נוכחות RFID מבוססת, נסביר לכם איך אנחנו יכולים לאשר ולספור נוכחות אוטומטית באמצעות כרטיסי RFID. טכנולוגיית RFID (זיהוי וגילוי תדרי רדיו) משמשת בדרך כלל בבתי ספר, מכללות, משרדים ותחנות למטרות שונות כדי לעקוב באופן אוטומטי אחר אנשים. כאן נספור את הנוכחות של אדם מורשה באמצעות RFID.
אם אינך מכיר את Raspberry Pi, יצרנו סדרת הדרכות ופרוייקטים של פטל, עם ממשק עם כל הרכיבים הבסיסיים וכמה פרויקטים פשוטים מלכתחילה, עשה לבדוק.
רכיבים בשימוש:
- פטל פי (עם כרטיס SD אתחול)
- לחץ על הכפתור
- זַמזָם
- LCD בגודל 16x2
- סיר 10k
- נגד 10K
- לד
- נגד 1k
- לוח לחם
- קורא RFID
- הספק 5 וולט
- תגי RFID או כרטיסים
- כבל אתרנט
- חוטי חיבור
קורא RFID ותגיות:
RFID הוא מכשיר אלקטרוניקה בעל שני חלקים - האחד הוא RFID Reader והשני הוא RFID תג או כרטיס. כאשר אנו מציבים תג RFID קרוב לקורא ה- RFID, הוא קורא את נתוני התגים באופן סדרתי. תג RFID כולל קוד תווים בן 12 ספרות בסליל. RFID זה עובד בקצב שידור של 9600 bps. RFID משתמש באלקטרומגנט להעברת נתונים מקורא לתגית או תיוג לקורא.
הסבר עבודה:
כאן Raspberry Pi 3 שולט לאורך כל התהליך של פרויקט זה (המשתמש יכול להשתמש בכל לוח Raspberry Pi). קורא RFID קורא את מזהה כרטיס ה- RFID, נתונים אלה מתקבלים על ידי Raspberry Pi באמצעות UART, ואז RPi מאמת את הכרטיס ומציג את התוצאות על גבי מסך LCD.
כאשר אדם שם את תג ה- RFID שלו מעל קורא ה- RFID כדי לסרוק אותו, RFID קורא את נתוני התג ושולח אותו ל- 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 של LCD מחובר ישירות בחיווט Pi GPIO 11, GND ו- 10. וסיכת נתונים מחוברת בחיווט Pi GPIO 6, 5, 4 ו- 1. סיר 10K משמש להגדרת ניגודיות או בהירות של LCD. זמזם מחובר באמצעות חיווט Pi GPIO סיכה 7 ביחס לקרקע. שלוש נוריות נוריות מחוברות לאינדיקציה של תלמידים עם כרטיס RFID בהתאמה. ונורית אחת משמשת כדי להראות שהמערכת מוכנה לסריקת כרטיס ה- RFID. לחצן לחיצה מחובר גם על חיווט Pi GPIO סיכה 12 כדי להציג את ספירת הנוכחות. קורא RFID מחובר בסיכת UART (חיווט סיכה GPIO 16).
התקנת ספריית wiringPi ב- Raspberry Pi:
כמו ב- Python אנו מייבאים ייבוא RPi.GPIO כקובץ כותרת IO בכדי להשתמש בסיכות GPIO של Raspberry Pi, כאן בשפת C עלינו להשתמש בספריית wiringPi בכדי להשתמש בסיכות GPIO בתוכנית C שלנו. אנו יכולים להתקין אותו באמצעות פקודות למטה אחת אחת, אתה יכול להריץ פקודה זו מסוף או מכל לקוח SSH כמו Putty (אם אתה משתמש ב- Windows). עברו על ההדרכה שלנו בנושא התחלת העבודה עם פטל כדי ללמוד עוד על הטיפול ב- Raspberry Pi.
sudo apt-get להתקין git-core sudo apt-get לעדכן sudo apt-get שדרג git clone git: //git.drogon.net/wiringPi CD חיווט Pi git pull origin CD wiringPi.
בדוק את ההתקנה של ספריית wiringPi, השתמש בפקודות הבאות:
gpio -v gpio readall
הסבר על תכנות:
עכשיו ראשית כללנו כמה ספריות והגדרנו סיכות שאנחנו צריכים להשתמש בקוד זה.
#לִכלוֹל
אחריו, הגדירו כמה משתנים ומערך לחישוב ואחסנו ערכים ומחרוזות.
int sp; int count1 = 0, count2 = 0, count3 = 0; char ch; char rfid; int i = 0; temp char;
ואז נכתבו פונקציות לביצוע התהליך כולו. כמה מהם מובאים להלן:
בהתחשב lcdcmd חלל הפונקציה משמשת לשליחת פקוד LCD
בטל lcdcmd (לא חתום int ch) {int temp = 0x80; digitalWrite (D4, temp & ch << 3); digitalWrite (D5, temp & ch << 2); digitalWrite (D6, temp & ch << 1); digitalWrite (D7, temp & ch); digitalWrite (RS, LOW); digitalWrite (EN, HIGH);……………..
בהתחשב כתיבת חלל הפונקציה משמשת לשליחת נתוני LCD.
ריק לכתוב (int ch לא חתום) {int temp = 0x80; digitalWrite (D4, temp & ch << 3); digitalWrite (D5, temp & ch << 2); digitalWrite (D6, temp & ch << 1); digitalWrite (D7, temp & ch); digitalWrite (RS, HIGH); digitalWrite (EN, HIGH);……………..
בהתחשב ומבוטלת ברורה () פונקציה משמשת כדי לנקות את LCD, setCursor החלל משמש מיקום סמן סט הדפסה ומבוטלת לשליחת מחרוזת LCD.
ריק ריק () {lcdcmd (0x01); } בטל setCursor (int x, int y) {int set = 0; אם (y == 0) set = 128 + x; אם (y == 1) set = 192 + x; lcdcmd (סט); } הדפסה בטלה (char * str) {תוך (* str) {לכתוב (* str); str ++; }}
הפונקציה void start משמשת לאתחול LCD במצב 4 סיביות.
החלל ריק (int x, int y) {lcdcmd (0x02); lcdcmd (0x28); lcdcmd (0x06); lcdcmd (0x0e); lcdcmd (0x01); }
זמזם חלל () ו המתנה ריקה () פונקציות משמשים לשימוש בצופר הבאזר עבור מתנה כדי צבת כרטיס שוב. הפונקציה void serialbegin משמשת לאתחול התקשורת הטורית.
זמזם ריק () {digitalWrite (buzz, HIGH); עיכוב (1000); digitalWrite (באז, LOW); } בטל המתנה () {digitalWrite (led5, LOW); עיכוב (3000); } בטל סדרתיתחיל (int baud) {if ((sp = serialOpen ("/ dev / ttyS0", baud)) <0) {clear (); הדפס ("לא ניתן לפתוח"); setCursor (0,1); הדפס ("יציאה טורית"); }}
בשנת התקנת חלל () פונקציה אנו initiaze כל GPIOs, LCD ו UART סדר.
הגדרת חלל () {if (wiringPiSetup () == -1) {clear (); הדפס ("לא ניתן להתחיל"); setCursor (0,1); הדפס ("wiringPi"); } pinMode (led1, OUTPUT); pinMode (led2, OUTPUT);……………………
נתון void get_card () פונקציה משמשת לקבל נתונים מקורא RFID.
בשינה (ראשית ריקה) פונקציה, לאחר שראינו כמה הודעות על LCD ומשווים את נתון תג עם נתונים מוגדרים מראש כדי לאמת את הכרטיס עם מתחת קוד.
……………… אם (strncmp (rfid, "0900711B6003", 12) == 0) {count1 ++; ברור(); הדפס ("Attd. רשום"); setCursor (0,1); הדפס ("Studnet 1"); digitalWrite (led1, HIGH); זַמזָם(); digitalWrite (led1, LOW); לַחֲכוֹת(); } אחר אם (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");……………..
בדוק את הקוד המלא עבור מערכת נוכחות זו של פטל.