אבטחה היא עניין מרכזי בחיי היום יום שלנו, ומנעולים דיגיטליים הפכו לחלק חשוב ממערכות האבטחה הללו. ישנם סוגים רבים של טכנולוגיות העומדות לרשותנו כדי להבטיח את מקומנו, כמו מערכות אבטחה מבוססות PIR, מערכת אבטחה מבוססת RFID, אזעקות אבטחה בלייזר, מערכות ביו-מטריצות וכו '. כעת, ישנם מנעולים דיגיטליים הניתנים להפעלה באמצעות הטלפונים החכמים שלנו, כלומר לא יותר צורך לשמור על מקשים שונים, רק טלפון חכם אחד יכול להפעיל את כל המנעולים, הרעיון הזה מבוסס על האינטרנט של הדברים.
בפרויקט זה, הסברנו על נעילת קוד אלקטרונית פשוטה באמצעות 8051 Microcontorller, שניתן לפתוח אותה רק על ידי קוד מוגדר מראש, אם אנו מזינים את הקוד הלא נכון, המערכת מתריעה באמצעות צפירת הבאזר. כבר יצרנו מנעול דיגיטלי באמצעות Arduino.
הסבר עבודה:
מערכת זו מכילה בעיקר מיקרו- בקרה AT89S52, מודול לוח מקשים, זמזם ו- LCD. מיקרו-בקר At89s52 שולט בתהליכים המלאים כמו לקיחת מודול לוח מקשים בטופס סיסמה, השוואת סיסמאות שהוגדרו מראש, נהיגת זמזם ושליחת מצב לתצוגת LCD. לוח המקשים משמש להכנסת סיסמה למיקרו-בקר. זמזם משמש לציון סיסמה שגויה ו- LCD משמש להצגת סטטוס או הודעות עליו. לבאזר יש דרייבר מובנה באמצעות טרנזיסטור NPN.
רכיבים:
- מיקרו-בקר 8051 (AT89S52)
- מודול לוח מקשים 4X4
- זַמזָם
- LCD בגודל 16x2
- נגד (1k, 10k)
- נגד Pullup (10K)
- קבלים (10uf)
- אדום הוביל
- לוח לחם
- IC 7805
- 11.0592 גביש מגה-הרץ
- ספק כוח
- חוטי חיבור
קבלת קלט ממטריקס מקשים 4X4 באמצעות טכניקת ריבוב:
במעגל זה השתמשנו בטכניקת ריבוב כדי לממשק מקשים למיקרו-בקר 8051, להזנת הסיסמה במערכת. כאן אנו משתמשים במקלדת 4x4 הכוללת 16 מקשים. אם אנו רוצים להשתמש ב -16 מקשים אז אנו זקוקים ל -16 פינים לחיבור ל- 89s52, אך בטכניקת ריבוב אנו צריכים להשתמש ב -8 פינים בלבד לצורך ממשק 16 מקשים. כך שזו דרך חכמה לממשק את מודול המקשים.
טכניקת ריבוב היא דרך יעילה מאוד לצמצם את מספר הפינים המשמשים את המיקרו-בקר לצורך קלט או סיסמה. בעיקרון משתמשים בטכניקה זו בשתי דרכים - האחת היא סריקת שורה והשנייה סריקת עמודות.
כאן אנו הולכים להסביר סריקת שורות:
ראשית עלינו להגדיר 8 פינים למודול המקשים. בהן 4 הפינים הראשונים הם עמוד ו -4 הפינים האחרונים הם שורות.
לצורך סריקת שורות עלינו לתת נתונים או אות לסיכות עמודות ולקרוא את הנתונים או האות מפין השורה. עכשיו נניח שאנו נותנים נתונים למטה לסיכות עמודות:
C1 = 0;
C2 = 1;
C3 = 1;
C4 = 1;
ואנחנו קוראים את הנתונים האלה בסיכות שורה (כברירת מחדל סיכות בשורה הן גבוהות בגלל הנגיעה הנמשכת).
אם המשתמש לוחץ על מקש '1' אז R1 משנה HIGH ל- LOW פירושו R1 = 0; והבקר מבין שהמשתמש לחץ על מקש '1'. והיא תדפיס את '1' על גבי LCD ותאחסן את '1' במערך. אז השינוי HIGH-LOW זה ב- R1, הוא הדבר העיקרי לפיו הבקר מבין כי לחצו על מקש כלשהו, המתאים לעמודה 1.
כעת אם המשתמש לוחץ על מקש '2' אז R1 נשאר ב- HIGH כ- C1 ו- R1 שניהם כבר ב- HIGH. מכאן שלא יהיה שום שינוי, המשמעות היא שמיקרו-בקר מבין כי שום דבר לא נלחץ בעמודה א '. וכמו כן המנהל הזה הולך על כל הסיכות האחרות. אז בבקר שלב זה ממתין רק למפתחות בעמודה א ':' 1 ',' 4 ',' 7 'ו-' * '.
כעת, אם אנו רוצים לעקוב אחר המקשים בעמודות אחרות (כמו בעמודה 2), עלינו לשנות את הנתונים בסיכות עמודות:
C1 = 1;
C2 = 0;
C3 = 1;
C4 = 1;
בקר זמן זה ממתין רק למפתחות בעמודה שתיים: '2', '5', '8' ו- '0', מכיוון שהשינוי (HIGH to LOW) מתרחש רק כאשר לחיצה על מקש טור שני. אם נלחץ על מקש כלשהו בעמודה 1, 3 או 4 לא יחול שום שינוי מכיוון שהעמודות הללו נמצאות ב- HIGH, והשורות כבר ב- HIGH.
כך גם ניתן לעקוב אחר מקשים בעמודה C3 ו- C4 על ידי הפיכתם ל 0, בכל פעם. בדוק כאן את ההסבר המפורט: ממשק מקשים עם 8051. עיין גם בקטע הקוד שלמטה כדי להבין נכון את ההיגיון.
הסבר מעגל:
תרשים מעגלים למנעול דיגיטלי זה באמצעות 8051 הוצג להלן וניתן להבין אותו בקלות. סיכות העמודות של מודול המקשים מחוברות ישירות לסיכה P0.0, P0.1, P0.2, P0.3 וסיכות שורות מחוברות ליציאת המיקרו-בקרה P0.4, P0.5, P0.6, P0.7 של 89s52 LCD 16x2 מחובר למיקרו-בקרה 89s52 במצב 4 סיביות. סיכת בקרה RS, RW ו- En מחוברים ישירות לסיכה P1.0, GND ו- P1.2. וסיכת נתונים D4-D7 מחוברת לסיכות P1.4, P1.5, P1.6 ו- P1.7 של 89s52. וזמזם אחד מחובר בסיכה P2.6 דרך נגד.
הסבר לתכנית:
השתמשנו בסיסמה מוגדרת מראש בתוכנית, סיסמה זו יכולה להיות מוגדרת על ידי המשתמש בקוד שלמטה. כאשר המשתמש מזין סיסמה למערכת, ואז המערכת משווה את הסיסמה שהזין המשתמש עם הסיסמה המאוחסנת או מוגדרת מראש בקוד התוכנית. אם מתרחשת התאמה, ב- LCD יופיע "Access Grated" ואם הסיסמה לא תואמת אז LCD יראה "Access נדחתה" והמזמזם יצפצף ברציפות זמן מה. כאן השתמשנו בספריית string.h. באמצעות ספרייה זו אנו יכולים להשוות או להתאים שני מחרוזות, באמצעות פונקציית "strncmp".
בתוכנית, קודם כל אנו כוללים קובץ כותרת עליונה ומגדיר סיכות משתנה וקלט ופלט עבור לוח המקשים וה- LCD.
#לִכלוֹל
נוצרה פונקציה ליצירת עיכוב של שנייה אחת, יחד עם כמה פונקציות LCD כמו אתחול LCD, הדפסת מחרוזת, לפקודות וכו '. אתה יכול למצוא אותן בקלות בקוד. עיין במאמר זה לגבי ממשקי LCD עם 8051 ופונקציותיו.
לאחר מכן, בתוכנית הראשית אנו מאותחלים את LCD ואז אנו קוראים את הקלט ממקשי המקשים באמצעות פונקציית המקשים () ואוחסנים מקשי קלט במערך ואז משווים אותו מנתוני מערך שהוגדרו מראש באמצעות strncmp.
ריק ראשי () {זמזם = 1; lcd_init (); lcdstring ("קוד אלקטרוני"); lcdcmd (0xc0); lcdstring ("מערכת נעילה"); עיכוב (400); lcdcmd (1); lcdstring ("מעגל עיכול"); עיכוב (400); ואילו (1) {i = 0; לוח מקשים (); if (strncmp (pass, "4201", 4) == 0)
אם הסיסמה שהוזנה תואמת, אז נקרא לפונקציה accept ():
בטל קבל () {lcdcmd (1); lcdstring ("ברוך הבא"); lcdcmd (192); lcdstring ("קבלת סיסמה"); עיכוב (200); }
ואם הסיסמה שגויה אז פונקציה שגויה () נקראת:
בטל שגוי () {זמזם = 0; lcdcmd (1); lcdstring ("סיסמה שגויה"); lcdcmd (192); lcdstring ("PLZ נסה שוב"); עיכוב (200); זמזם = 1; }
בדוק את פונקציית לוח המקשים שלמטה בקוד הקורא את מודול לוח המקשים של טופס הקלט.