רובוטים הם מכונות המפחיתות את המאמצים האנושיים בעבודות כבדות על ידי אוטומציה של המשימות בתעשיות, מפעלים, בתי חולים וכו '. רוב הרובוטים מנוהלים על ידי שימוש ביחידת בקרה כלשהי או ברכיבים כמו כפתור לחיצה, שלט, ג'ויסטיק, מחשב, מחוות ועל ידי ביצוע פקודה כלשהי באמצעות בקר או מעבד. אבל היום אנחנו כאן עם רובוט אוטומטי שנע באופן אוטונומי מבלי שאירועים חיצוניים ימנעו את כל המכשולים בדרכו, כן אנחנו מדברים על מכשול הימנעות מרובוט. בפרויקט זה השתמשנו במערכת Raspberry Pi וב- Motor כדי להניע את הרובוט וחיישן האולטרסאונד לזיהוי עצמים בדרך הרובוט.
בעבר סיקרנו רובוטים שימושיים רבים, תוכלו למצוא אותם בסעיף פרויקטים של רובוטיקה.
רכיבים נדרשים:
- פאי פטל
- מודול חיישן קולי HC-SR04
- שלדת ROBOT מלאה עם בורג
- מנועי DC
- L293D IC
- גלגלים
- לוח לחם
- נגד (1k)
- קבלים (100nF)
- חוטי חיבור
- ספק כוח או בנק כוח
מודול חיישן קולי:
מכשול Avoider רובוט הוא רובוט אוטומטי וזה לא צריך להיות נשלט באמצעות כל מרחוק. לסוגים אלה של רובוטים אוטומטיים יש כמה חיישני 'חוש שישי' כמו גלאי מכשולים, גלאי קול, גלאי חום או גלאי מתכות. כאן עשינו איתור מכשולים באמצעות אותות אולטרסאונד. למטרה זו השתמשנו במודול חיישנים קולי.
חיישנים קולי משמשים בדרך כלל לאיתור עצמים ולקביעת מרחק המכשול מהחיישן. זהו כלי נהדר למדידת המרחק ללא כל מגע פיזי, כמו מדידת מפלס מים במיכל, מדידת מרחק, רובוט להימנעות ממכשולים וכו '. אז גילינו את האובייקט ומדדנו את המרחק באמצעות חיישן אולטרה סאונד ו- Raspberry Pi.
חיישן קולי HC-SR04 משמש למדידת מרחק בטווח של 2 ס"מ -400 ס"מ עם דיוק של 3 מ"מ. מודול החיישן מורכב ממשדר קולי, מקלט ומעגל הבקרה. חיישן אולטרסאונד מורכב משתי עיניים מעגליות שמתוכן אחת משמשת להעברת הגל הקולי והשנייה לקבלה.
אנו יכולים לחשב את מרחק האובייקט על סמך הזמן שלוקח הגל הקולי לחזור לחיישן. מכיוון שזמן ומהירות הצליל ידוע נוכל לחשב את המרחק לפי הנוסחאות הבאות.
- מרחק = (זמן x מהירות הצליל באוויר (343 m / s)) / 2.
הערך מחולק לשניים מאחר והגל נע קדימה ואחורה באותו מרחק, ולכן הזמן להגיע למכשול הוא רק חצי מהזמן הכולל שנדרש.
אז חישבנו את המרחק (בסנטימטר) מהמכשול להלן:
pulse_start = time.time () בעוד GPIO.input (ECHO) == 1: # בדוק אם ECHO הוא גבוה GPIO.output (led, False) pulse_end = time.time () pulse_duration = pulse_end - מרחק דופק_התחלה = דופק * 17150 מרחק = עגול (מרחק, 2) ממוצע מרחק = מרחק מרחק + מרחק
איפה הדופק הוא הזמן בין שליחת לקבלת אות קולי.
הסבר מעגל:
המעגל פשוט מאוד עבור רובוט זה של הימנעות מכשולים באמצעות Raspberry Pi. מודול חיישן אולטרה סאונד, המשמש חפצים באיתור, מחוברת אל סיכה GPIO 17 ו 27 של פטל Pi. Driver Motor IC L293D מחובר פטל Pi 3 לנהיגה מנועים של הרובוט. סיכות הקלט של נהג המנוע 2, 7, 10 ו -15 מחוברות לסיכה של Raspberry Pi GPIO מספר 12, 16, 20 ו- 21 בהתאמה. כאן השתמשנו בשני מנועי DC כדי להניע את הרובוט שבו מנוע אחד מחובר לסיכת הפלט 3 & 6 של IC של מנוע המנוע ומנוע אחר מחובר בסיכה 11 & 14 של IC IC של מנוע.
איך זה עובד:
העבודה של הרובוט האוטונומי הזה קלה מאוד. כאשר הרובוט מופעל ומתחיל לפעול, Raspberry Pi מודד את מרחקי האובייקטים, לפניו, באמצעות מודול חיישן אולטראסוני ומאחסן במשתנה. ואז RPi משווה ערך זה עם ערכים מוגדרים מראש ומקבלת החלטות בהתאם להזיז את הרובוט שמאלה, ימינה, קדימה או אחורה.
כאן בפרויקט זה בחרנו מרחק 15 ס"מ לצורך קבלת כל החלטה של פטל פאי. עכשיו בכל פעם שפטל פאי ייקח פחות ממרחק 15 ס"מ מכל אובייקט אז פטל פפי עוצר את הרובוט ומעביר אותו לאחור ואז מסובב אותו שמאלה או ימינה. כעת לפני שמעבירים אותו שוב קדימה, Raspberry Pi שוב בודק אם מכשול כלשהו קיים בטווח של 15 ס"מ מרחק, אם כן אז שוב יחזור על התהליך הקודם, אחרת הזיזו את הרובוט קדימה עד שהוא יגלה מכשול או אובייקט שוב.
הסבר על תכנות:
אנו משתמשים כאן בשפת פיתון לצורך התוכנית. לפני קידוד, המשתמש צריך להגדיר את Raspberry Pi. אתה יכול לבדוק את ההדרכות הקודמות שלנו בנושא התחלת העבודה עם Raspberry Pi והתקנה והגדרת תצורה של Raspbian Jessie OS ב- Pi.
לחלק התכנותי של פרויקט זה תפקיד חשוב מאוד לביצוע כל הפעולות. ראשית כל, אנו כוללים ספריות נדרשות, מאתחלים משתנים ומגדירים סיכות לחיישן קולי, מנוע ורכיבים.
ייבא RPi.GPIO כ GPIO זמן יבוא # ספריית זמן יבוא GPIO.setwarnings (שקר) GPIO.setmode (GPIO.BCM) TRIG = 17 ECHO = 27……………..
אחרי זה, יצרנו כמה פונקציות def קדימה (), def אחורה (), def שמאל (), def ימינה () כדי להזיז את הרובוט בכיוון קדימה, אחורה, שמאלה או ימינה בהתאמה ו def עצירה () כדי לעצור את הרובוט, בדוק את הפונקציות בקוד המופיע להלן.
ואז, בתוכנית הראשית, יזמנו את חיישן האולטרסאונד וקראנו את הזמן בין שידור לקליטת האות וחישבנו את המרחק. כאן חזרנו על תהליך זה 5 פעמים לקבלת דיוק טוב יותר. כבר הסברנו על תהליך חישוב המרחק באמצעות חיישן אולטרה סאונד.
i = 0 ממוצע מרחק = 0 עבור i בטווח (5): זמן תפוקה GPIO (TRIG, לא נכון). שינה (0.1) זמן תפוקה GPIO (זמן אמת), שינה (0.00001) זמן תפוקה GPIO (TRIG, לא נכון) בעוד GPIO.input (ECHO) == 0: GPIO.output (led, False) pulse_start = time.time () בעוד GPIO.input (ECHO) == 1: # בדוק אם ה- ECHO הוא גבוה GPIO.output (led, False) pulse_end = time.time () pulse_duration = pulse_end - pulse_start distance = pulse_duration * 17150 מרחק = עגול (מרחק, 2) ממוצע מרחק = ממוצע מרחק + מרחק
לבסוף אם הרובוט ימצא מכשול כלשהו לפניו, לאחר שנמצא מרחק מהמכשול, תכנתנו את הרובוט לנקוט בדרך אחרת.
אם ממוצע מרחק <15: ספירה = ספירה + עצירה אחת () זמן. שינה (1) חזרה () זמן. שינה (1.5) אם (ספירה% 3 == 1) & (דגל == 0): ימין () דגל = 1 אחר: דגל שמאל () = 0 זמן. שינה (1.5) עצירה () זמן. שינה (1) אחר: דגל קדימה () = 0
הקוד המלא לרובוט הימנעות ממכשולי פטל זה ניתן להלן עם סרטון הדגמה.