תוכן עניינים:

רובוט נוכחות וירטואלית: 15 שלבים
רובוט נוכחות וירטואלית: 15 שלבים

וִידֵאוֹ: רובוט נוכחות וירטואלית: 15 שלבים

וִידֵאוֹ: רובוט נוכחות וירטואלית: 15 שלבים
וִידֵאוֹ: מבוא למערכות מידע - המרכז האקדמי פרס - קב׳ 8:00 הרצאה 3, 24.11.2023 2024, נוֹבֶמבֶּר
Anonim
Image
Image
מכונית רובוט ניידת
מכונית רובוט ניידת

רובוט נייד זה מתקשר עם הסביבה הפיזית שלו, על ידי ייצוג ה"נוכחות הווירטואלית "של האדם השולט בו מרחוק. כל אחד מכל מקום בעולם יכול לגשת אליו כדי להגיש פינוקים ולשחק איתך.

העבודה כאן מפותחת על ידי שני אנשים (אחד בגרמניה ואחד בארה ב) כניסיון לעבור מעבר לאמצעים מסורתיים של תקשורת מבוססת אינטרנט על ידי יצירת ממשק פיזי לאינטראקציה מרחוק. מכיוון ש- COVID-19 ממשיך להשפיע על העולם, וכולם אחראים להגביל את החשיפה הפיזית שלנו לאנשים, אנו מנסים להחזיר את הקשר המוחשי המהווה חלק מהאינטראקציה הפיזית.

הוא מבוסס על יכולת ESP32-מצלמה-רובוט-FPV-מורה-כניסה הניתנת להוראה ושונתה כך שתכלול חיישן מרחק, מתקן טיפולים ויכולת "שליטה מכל מקום בעולם", בתנאי שיש לך חיבור אינטרנט יציב במקצת.

אספקה

לפרויקט 4 חלקים עיקריים - מכונית רובוט ניידת, מתקן שבבים, ג'ויסטיק והתקנת תקשורת רשת.

מכונית רובוט ניידת

  • לוח לחם
  • ערכת רובוט של מנוע 2 וגלדה של שלדה (כולל גלגלים, מנועי DC, לוח הרכבה וברגים)
  • Arduino Mega 2560 (אם אתה בונה ללא חיישן המרחק או מתקן השבבים לאנו יהיו מספיק סיכות)
  • (3) סוללות 9V (יש עוד כמה בסביבה מכיוון שתרוקן אותן באגים)
  • מודול ספק כוח LM2596 DC/DC Buck 3A (או דומה)
  • מודול Wifi ESP32-CAM
  • ממיר סידורי FTDI USB ל- TTL FT232RL (לתכנות ה- ESP32-CAM)
  • חיישן מרחק אולטרסאונד HC-SR04
  • נהג מנוע L298N
  • (3) נוריות (בכל צבע)
  • (3) 220 נגדי אוהם

מתקן צ'יפס

  • (2) סרווס SG90
  • קרטון / קרטון

מַקֵל נוֹעַם

  • ארדואינו אונו
  • מודול ג'ויסטיק
  • לוח קרש מיני, (1) LED, (1) הנגד 220 אוהם (אופציונלי)

אַחֵר

הרבה חוטי מגשר ללוח קרטון / קרטון סרטים מספריים סרגל / מדידה קל מברג פיליפס מברג קטן שטוח

סבלנות =)

שלב 1: מכונית רובוט ניידת

מארז רובוט קאר משמש כפלטפורמה ניידת, עם Arduino MEGA כבקר המיקרו העיקרי המניע את המנועים, קורא את ערכי החיישנים ומפעיל את הסרווואים. רוב הפעולות מתבצעות על ידי כך שה- Arduino MEGA יקבל פקודות באמצעות תקשורת טורית, שנשלחות מה- ESP32-CAM. בעוד ש- ESP32 מספק זרם חי של מצלמה לשליטה ברובוט, תפקידו הנוסף הוא לנהל חיבור אלחוטי בין הרובוט לשרת, ולכן מאפשר למשתמשים לשלוט בו מכל מקום בעולם. ה- ESP32 מקבל פקודות מדף האינטרנט באמצעות מקשים ושולח אותן אל ערכי MEGA של Arduino כערכי char. בהתבסס על הערך שהתקבל המכונית תלך קדימה, אחורה וכו '. מכיוון ששלט רחוק דרך האינטרנט תלוי בהרבה גורמים חיצוניים, כולל חביון גבוה, איכות זרם ירודה ואפילו ניתוקים, משולב חיישן מרחק כדי שהרובוט לא יתרסק. *בגלל דרישות ההספק הגבוהות והמתנודדות של שבב ESP32, מומלץ להשתמש בווסת אספקת חשמל לשימוש בסוללה (ראה תרשים חיווט).

שלב 2: מכונית רובוט ניידת - תרשים מעגלים

מכונית רובוט ניידת - תרשים מעגלים
מכונית רובוט ניידת - תרשים מעגלים

אנו נלווה אותך בהרכבת שלב זה שלב.

שלב 3: מכונית רובוט נייד - הרכבה (מנועים)

רכב רובוט נייד - הרכבה (מנועים)
רכב רובוט נייד - הרכבה (מנועים)

לאחר הרכבת מארז 2WD, אנו מתחילים בחיבור המנועים והסוללה ל- Arduino MEGA באמצעות מנהל ההתקן L298N.

שלב 4: מכונית רובוט נייד - הרכבה (חיישן מרחק)

רכב רובוט נייד - הרכבה (חיישן מרחק)
רכב רובוט נייד - הרכבה (חיישן מרחק)

מכיוון שיש לא מעט רכיבים לחיבור, נוסיף לוח לחם, כך שנוכל לחבר את החשמל והקרקע המשותפת ביתר קלות. לאחר שנארגן מחדש את החוטים, חבר את חיישן המרחק ונתקן אותו בחזית הרובוט.

שלב 5: מכונית רובוט נייד - הרכבה (ESP32 CAM)

רכב רובוט נייד - הרכבה (ESP32 CAM)
רכב רובוט נייד - הרכבה (ESP32 CAM)

לאחר מכן, חבר את מודול ESP32-CAM ותקן אותו ליד חיישן המרחק ליד חזית הרובוט. זכור כי רכיב די חשוף לכוח זה דורש סוללה משלו וויסת DC.

שלב 6: רכב רובוט נייד - הרכבה (מתקן שבבים)

רכב רובוט נייד - הרכבה (מתקן שבבים)
רכב רובוט נייד - הרכבה (מתקן שבבים)

כעת, נוסיף את מתקן השבבים (עוד על כך בסעיף "מתקן שבבים"). חברו את שני הסרוו על פי תרשים Fritzing, ותקנו את המתקן בזנב הרובוט.

שלב 7: רכב רובוט נייד - הרכבה (עוגיות!)

רכב רובוט נייד - הרכבה (עוגיות!)
רכב רובוט נייד - הרכבה (עוגיות!)

לבסוף, אנו מוסיפים פינוקים למכשיר!

שלב 8: רכב רובוט נייד - קוד ארדואינו

RobotCar_Code הוא הקוד שתצטרך לטעון על ה- Arduino Mega.

כך זה עובד: הארדואינו מקשיב לבייטים שנשלחים מה- ESP32 באמצעות תקשורת טורית בפס 115200. בהתבסס על הבייט שהתקבל, המכונית תנוע קדימה, אחורה, שמאלה, ימין וכו 'על ידי שליחת מתח גבוה או נמוך למנועים כדי לשלוט בכיוון, כמו גם משתנה PWM בין 0-255 לשליטה על המהירות. כדי להימנע מהתנגשויות קוד זה קורא גם את הערכים הנכנסים מחיישן המרחק ואם המרחק קטן מסף שצוין, הרובוט לא יזוז קדימה. לבסוף, אם הארדואינו יקבל פקודה לחלק פינוק, הוא יפעיל את סרוווס במתקן השבבים.

שלב 9: רכב רובוט נייד - קוד ESP32

ה- ESP32 מאפשר תקשורת בין השרת ל- Arduino באמצעות Wifi. הוא מתוכנת בנפרד מהארדואינו, ויש לו קוד משלו:

  • ESP32_Code.ino הוא הקוד של ESP32 לשליחת מידע ל- Arduino
  • app_httpd.cpp הוא הקוד הדרוש עבור שרת האינטרנט ESP32 המוגדר כברירת מחדל והגדר את הפונקציה להאזין ללחיצות מקשים. טוב לאיתור באגים ובדיקות ב- wifi מקומי. הוא אינו משמש לתקשורת מחוץ לרשת המקומית.
  • camera_index.h הוא קוד ה- HTML של יישום האינטרנט המוגדר כברירת מחדל
  • camera_pins.h מגדיר את הסיכות בהתאם לדגם ה- ESP32

קוד ESP32 משתמש בספריית Wifi וכן בתוסף ESP32, אותו ניתן להתקין ב- Arduino IDE על ידי ביצוע השלבים הבאים:

  1. ב- Arduino IDE עבור אל קובץ> העדפות
  2. לאחר מכן בכרטיסייה הגדרות תחת כתובת URL נוספת של מנהל לוחות הזן את "https://dl.espressif.com/dl/package_esp32_index.json" הבא:
  3. כעת פתח את מנהל הלוחות ועבור אל כלים> לוח> מנהל לוחות וחפש את ESP32 על ידי הקלדת "ESP32"
  4. אתה אמור לראות את "esp32 by Espressif Systems". לחץ על התקן.
  5. כעת יש להתקין את התוסף ESP32. כדי לבדוק חזור ל- Arduino IDE ועבור אל כלים> לוח ובחר את "מודול ה- ESP32 Wrover".
  6. לך שוב אל כלים> מהירות העלאה והגדר אותו ל- "115200".
  7. לבסוף, עבור אל כלים> תוכנית מחיצות והגדר אותו ל- "ענק APP (3MB ללא OTA/1MB SPIFFS)
  8. לאחר שתשלים את זה, אני ממליץ לעקוב אחר הדרכה זו של RandomNerdTutorials המסבירה בפירוט כיצד לסיים את הגדרת ה- ESP32 ולהעלות קוד באמצעות מתכנת FTDI תכנות ה- ESP32

שלב 10: מתקן צ'יפס

מתקן צ'יפס
מתקן צ'יפס

מכשיר הצ'יפס הוא תוספת זולה לרובוט הנייד המאפשרת לו להשפיע על הסביבה המקומית ולתקשר עם אנשים / בעלי חיים על ידי השארת פינוק טעים. הוא מורכב מקופסה חיצונית מקרטון עם 2 סרוויים המותקנים בפנים, כמו גם ממחסנית קרטון פנימית המחזיקה פריטים (כגון ממתקים או פינוקים לכלבים) כדי להוציא אותם. סרוו אחד משמש כשער בעוד השני דוחף את הפריט החוצה.

*כל המידות הן במילימטרים

שלב 11: ג'ויסטיק

מַקֵל נוֹעַם
מַקֵל נוֹעַם

אמנם זה יכול להיות כיף לשלוט ברובוט באמצעות המקלדת, אך אפילו יותר כיף ואינטואיטיבי להשתמש בג'ויסטיק, בו הרובוט מגיב ישירות על פי הכיוון שאתה לוחץ עליו. מכיוון שרובוט זה מופעל באמצעות לחיצות מקשים המוקלטות בדף האינטרנט היינו זקוקים לג'ויסטיק שלנו כדי לחקות מקלדת. בדרך זו משתמשים ללא ג'ויסטיק עדיין יכולים לשלוט ברובוט ישירות ממקלדת, אך אחרים יכולים להשתמש בג'ויסטיק.

לשם כך היה לנו רק Arduino Uno שאין לו את היכולת להשתמש בספרייה ולכן תיכנתנו אותו ישירות באמצעות פרוטוקול USB המכונה עדכון קושחת התקנים (DFU) המאפשר להבהב את הארדואינו באמצעות קושחה כללית של USB HID מקלדת USB. במילים אחרות, כאשר הארדואינו מחובר ל- usb הוא כבר אינו מוכר כארדואינו אלא כמקלדת!

שלב 12: ג'ויסטיק - תרשים מעגלים

ג'ויסטיק - תרשים מעגלים
ג'ויסטיק - תרשים מעגלים

כך חיברנו את הג'ויסטיק.

שלב 13: ג'ויסטיק - אמולטור מקלדת

על מנת שחברת Arduino Uno שלך תחקה מקלדת, עליך לתכנת ישירות את שבב Atmega16u2 בארדואינו באמצעות עדכון קושחה ידני של המכשיר (DFU). השלבים הבאים יתארו את התהליך של מכונת Windows, ובתקווה שיעזרו לך להימנע מכמה מהבעיות שנתקלנו בהן.

השלב הראשון הוא לכתוב ידנית את מנהל ההתקן usb של Atmel ל- Arduino כך שהוא מוכר כ- USB ולא כ- Arduino המאפשר להבהב אותו עם מתכנת FLIP.

  1. הורד את תוכנת FLIP של Atmel מכאן
  2. חבר את ה- Arduino Uno שלך
  3. עבור אל מנהל ההתקנים ומצא את ה- Arduino. זה יהיה תחת COM או מכשיר לא ידוע. חבר אותו והיכנס כדי לוודא שמדובר בהתקן הנכון.
  4. לאחר שמצאת את ה- Arduino Uno במנהל ההתקנים, לחץ עליו באמצעות לחצן העכבר הימני ובחר מאפיינים> מנהל התקן> עדכן מנהל התקן> דפדף במחשב שלי אחר תוכנת מנהל התקן> תן לי לבחור מתוך רשימת מנהלי ההתקנים הזמינים במחשב שלי> יש דיסק> דפדף אל קובץ "atmel_usb_dfu.inf" ובחר אותו. זה אמור להיות בתיקייה שבה הותקן תוכנת Atmel FLIP שלך. במחשב שלי הוא נמצא כאן: C: / Program Files (x86) Atmel / Flip 3.4.7 / usb / atmel_usb_dfu.inf
  5. התקן את מנהל ההתקן
  6. עכשיו תחזור למנהל ההתקנים, אתה אמור לראות "התקני USB של Atmel" עם ה- Arduino Uno המסומן כעת כ- ATmega16u2!

כעת, כשהמחשב מזהה את ה- Arduino Uno כמכשיר USB, אנו יכולים להשתמש במתכנת FLIP כדי להבהב אותו עם 3 קבצים נפרדים ולהפוך אותו למקלדת.

אם ניתקת את ה- Arduino Uno מהפרק לאחר החלק הראשון, חבר אותו שוב.

  1. פתח את FLIP
  2. אפס את ה- Arduino Uno על ידי חיבור קצר של כוח לאדמה.
  3. לחץ על בחירת התקנים (סמל כמו שבב) ובחר ATmega16U2
  4. לחץ על בחר אמצעי תקשורת (סמל כמו כבל USB) ובחר USB. אם השלמת את החלק הראשון בצורה נכונה, הכפתורים האחרים האפורים אמורים להיות שימושיים.
  5. עבור אל קובץ> טען קובץ Hex> והעלה את הקובץ Arduino-usbserial-uno.hex
  6. בחלון FLIP אתה אמור לראות שלושה חלקים: זרימת פעולות, מידע על מאגר FLASH ו- ATmega16U2. בזרם הפעולות סמן את התיבות מחיקה, תכנית ואימות ולאחר מכן לחץ על הפעלה.
  7. לאחר השלמת תהליך זה, לחץ על התחל יישום בקטע ATmega16U2.
  8. חבר את המחבר לארדואינו על ידי ניתוק המחשב מהחשמל וחבר אותו מחדש.
  9. אפס את ה- Arduino Uno על ידי חיבור קצר של החשמל לקרקע.
  10. פתח את מזהה Arduino והעלה את הקובץ JoyStickControl_Code.ino ללוח.
  11. חבר את המחבר לארדואינו על ידי ניתוק המחשב מהחשמל וחבר אותו מחדש.
  12. אפס את הארדואינו על ידי חיבור קצר של כוח לאדמה.
  13. חזור ל- FLIP, וודא שבחירת ההתקנים כתוב Atmega16U2
  14. לחץ על בחר אמצעי תקשורת ובחר USB.
  15. עבור אל קובץ> טען קובץ Hex> והעלה את הקובץ Arduino-keyboard-0.3.hex
  16. בחלון FLIP אתה אמור לראות שלושה חלקים: זרימת פעולות, מידע על מאגר FLASH ו- ATmega16U2. בזרם הפעולות סמן את התיבות מחיקה, תכנית ואימות ולאחר מכן לחץ על הפעלה.
  17. לאחר השלמת תהליך זה, לחץ על התחל יישום בקטע ATmega16U2.
  18. חבר את המחבר לארדואינו על ידי ניתוק המחשב מהחשמל וחבר אותו שוב.
  19. עכשיו כשאתה עובר למנהל ההתקנים אמור להיות מכשיר מקלדת HID חדש מתחת למקלדות.
  20. פתח פנקס רשימות או כל עורך טקסט והתחל להזיז את הג'ויסטיק. אתה אמור לראות מספרים מוקלדים!

אם אתה רוצה לשנות את הקוד בסקיצה של Arduino, למשל כתיבת פקודות חדשות לג'ויסטיק, יהיה עליך להבהב אותו עם כל 3 הקבצים בכל פעם.

כמה קישורים שימושיים: Arduino DFUAtLibUsbDfu.dll לא נמצא

אמולטור מקלדת זה מבוסס על הדרכה זו של מייקל ב -24 ביוני 2012.

שלב 14: תקשורת רשת

תקשורת רשת
תקשורת רשת

כדי לקבל זרם וידאו ולשלוח פקודות לרובוט מכל מקום בעולם, אנו זקוקים לדרך להעביר נתונים אל ה- ESP32-CAM וממנו. הדבר מתבצע בשני חלקים, מטפל בחיבורים ברשת המקומית ושרת ציבורי. הורד את שלושת הקבצים כדי להשיג זאת:

  • Handlers.py: מעביר מידע מ- ESP32-CAM והשרת הציבורי (נבדק ב- Python 3.8)
  • Flask_app.py: מגדיר כיצד האפליקציה שלך מגיבה לבקשות נכנסות.
  • Robot_stream.html: מעביר וידאו בדפדפן שלך ומאזין לפקודות באמצעות מקלדת / ג'ויסטיק (נבדק ב- Chrome)

אתה יכול לקודד זאת ישירות ב- app_httpd.cpp, אך לשם איתור באגים קל יותר אנו משתמשים בסקריפט Python הפועל במחשב המחובר לאותה רשת. פתח את handlers.py ועדכן את כתובת ה- IP ושם המשתמש שלך, ואתה מוכן לצאת לדרך. הזרם יתחיל בעת הפעלת קובץ זה.

שרת ציבורי כדי לגשת לכל דבר באינטרנט, תוכל להפעיל שרת עם PaaS לבחירתך. ב- pythonanywhere (PA) ההגדרה אורכת פחות מחמש דקות:

  1. הירשם לחשבון והיכנס
  2. עבור לכרטיסייה "אינטרנט" ולחץ על "הוסף יישום אינטרנט חדש", בחר Flask ו- Python 3.6
  3. העתק flask_app.py לספריית /mysite
  4. העתק robot_stream.html לספריית /mysite /templates
  5. לחץ על "טען מחדש"

ו … אתה מוכן!

כתב ויתור: זרימת עבודה זו ברשת היא מהירה ופשוטה אך רחוקה מאוד מלהיות אידיאלית. RTMP או שקעים יהיו מתאימים יותר לסטרימינג, אך הם אינם נתמכים ברשות הרשות הפלסטינית ודורשים ניסיון כלשהו ברשתות ובהגדרת שרתים. כמו כן, מומלץ להוסיף מנגנון אבטחה כלשהו לשליטה בגישה.

שלב 15: לשים את הכל ביחד

כעת, הפעל את הרובוט שלך, הפעל handlers.py במחשב (מחובר לאותה רשת כמו הרובוט), ותוכל לשלוט ברובוט מתוך דפדפן המבוסס על כתובת ה- URL שהגדרת מכל מקום שתרצה. (למשל

מוּמלָץ: