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

בנה את רובוט הזרמת הוידאו הנשלט שלך באינטרנט עם Arduino ו- Raspberry Pi: 15 שלבים (עם תמונות)
בנה את רובוט הזרמת הוידאו הנשלט שלך באינטרנט עם Arduino ו- Raspberry Pi: 15 שלבים (עם תמונות)

וִידֵאוֹ: בנה את רובוט הזרמת הוידאו הנשלט שלך באינטרנט עם Arduino ו- Raspberry Pi: 15 שלבים (עם תמונות)

וִידֵאוֹ: בנה את רובוט הזרמת הוידאו הנשלט שלך באינטרנט עם Arduino ו- Raspberry Pi: 15 שלבים (עם תמונות)
וִידֵאוֹ: 🚀 RUTUBE ונקודה. פיתוח RUTUBA תוך 5 שעות *ללא מים* [הבא / תגובה / Nest / PostgreSQL / Redux] 2024, יולי
Anonim
בנה את רובוט הזרמת הוידאו הנשלט שלך באינטרנט עם Arduino ו- Raspberry Pi
בנה את רובוט הזרמת הוידאו הנשלט שלך באינטרנט עם Arduino ו- Raspberry Pi
בנה את רובוט הזרמת הוידאו הנשלט שלך באינטרנט עם Arduino ו- Raspberry Pi
בנה את רובוט הזרמת הוידאו הנשלט שלך באינטרנט עם Arduino ו- Raspberry Pi
בנה את רובוט הזרמת הוידאו הנשלט שלך באינטרנט עם Arduino ו- Raspberry Pi
בנה את רובוט הזרמת הוידאו הנשלט שלך באינטרנט עם Arduino ו- Raspberry Pi

אני @RedPhantom (הידוע גם בשם LiquidCrystalDisplay / Itay), תלמיד בן 14 מישראל הלומד בבית הספר התיכון מקס שיין למדעים ומתמטיקה. אני מכין את הפרויקט הזה לכולם ללמוד ולשתף!

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

ה- Raspberry Pi מושלם לכל שימוש: היום נפרט את היכולות של המיקרו-מחשב הזה לייצר רובוט. הרובוט הזה יכול:

  • סעו והיו נשלטים באמצעות LAN (WiFi) באמצעות כל מחשב המחובר לאותה רשת WiFi כמו Raspberry Pi.
  • הזרמת וידאו בשידור חי באמצעות מודול המצלמה Raspberry Pi
  • שלח נתוני חיישנים באמצעות Arduino

כדי לראות מה אתה צריך עבור פרויקט האור הנחמד הזה פשוט קרא את השלב הבא (אזהרות) ואחריו את שלב מבוקשים: רכיבים.

להלן ריפו GitHub: GITHUB REPO BY ME

הנה אתר הפרויקט: PROJECT SITE BY ME

שלב 1: אזהרה: היו זהירים כשאתם מנסים את זה בבית

זְהִירוּת:

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

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

שלב 2: רכיבים

חיבורים
חיבורים
חיבורים
חיבורים
חיבורים
חיבורים
חיבורים
חיבורים

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

התמונה בנויה כך שתוכל להתקרב ולראות ברזולוציה מלאה ולקרוא את הטקסט.

שלב 6: כתובת ה- Pi

הארדואינו מדבר עם הפי לפי התוכנית. והפי מדבר עם המחשב, אז איך כל זה עובד?

בואו נסתכל על רצף התחלת החיבור שלנו:

  1. פטל פאי מתחיל
  2. ארדואינו מתחיל
  3. Raspberry Pi מפעיל את Client TCP. הוא יורה את כתובת ה- IP שלו באמצעות LED.
  4. Raspberry Pi מתחיל שירות תקשורת סידורי ומתחבר ל- Arduino

לכן יצרנו איזושהי תקשורת:

מחשב פטל ארדואינו

השתמשתי ב- Visual Basic. NET (Microsoft Visual Studio 2013 Community) בכתיבת התוכנית המדברת עם ה- Raspberry Pi ו- Python לכתיבת פרוטוקול Arduino/Raspberry Pi.

כל שעליך לעשות כדי לדעת את כתובת ה- IP של Pi שלך, הוא לחבר אותה למסך HDMI, להיכנס למעטפת ולהקליד את הפקודה:

שם מארח -אני

שלב 7: התוכנית

כעת, לאחר שקיבלנו את כתובת ה- IP של Pi, אנו נכניס אליה SSH (SSH הוא מעטפת מאובטחת - אנו מתחברים מרחוק למעטפת לינוקס) וכותבים קובץ המציג את כתובת ה- IP של השרת. ה- Pi, בעת ההפעלה יעשה זאת גם כן ויכתוב את הפורט אליו הוא מאזין. כאן אתן רק כמה דוגמאות מהקוד אך ניתן להוריד אותו משלב זה ומענף GitHub שיצרתי. פרטים על כך בהמשך.

זה עובד כך:

  1. RPi מתחיל.
  2. RPi מפעיל את תוכנית Tcp על ה- IP המקומי שלה ויציאה ייעודית.
  3. RPI מתחיל להזרים וידאו
  4. RPI נכבה.

שלב 8: מעבר פיזי

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

מומלץ לקרוא את ההוראות המאזינות ברשימת הקריאה.

הורד את ערכת החיבורים משלב "חיבורים".

מנועים

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

H-BRIDGE

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

לד

הנורה הקטנה הזו יכולה לפעול ממתח לוגי רק בגלל שהיא כמעט ולא דורשת זרם, ומתח של 3V-5V 4mA-18mA. אופציונאלי.

ארדואינו

Arduino יקבל אותות ופקודות באמצעות חיבור סידורי מ- Raspberry Pi. אנו משתמשים בארדואינו לשליטה במנועים שלנו מכיוון שפטל פי לא יכול להוציא ערכים אנלוגיים באמצעות ה- GPIO.

שלב 9: הפעלה אוטומטית של פטל פטל

בכל פעם שתפעיל את Raspberry Pi, יהיה עליך להקליד את שם המשתמש והסיסמה. אנחנו לא רוצים לעשות את זה כי לפעמים אנחנו פשוט לא יכולים לחבר מקלדת ל- Pi, לכן נעקוב אחר השלבים הבאים מהדרכה הזו כדי להפעיל אוטומטית את התוכנית שמכינה את ה- Pi. אם הוא יתקבל לולאה תמיד נוכל Ctrl+C להפריע לו.

  • sudo crontab -e
  • ואז נזין את הפקודה המוסיפה את הקובץ הזה לאתחול אוטומטי במנהל cron.

אנו נקרא לקובץ pibot.sh שייתן פקודות להפעלת כל מיני סקריפטים של פייתון להפעלת הרובוט. בואו נעבור על זה: (אנו sudo עם תוכנות פייתון וילון כדי לאפשר לתוכנית גישה ל- GPIO)

raspivid -o --t 0 -hf -w 640 -h 360 -fps 25 | cvlc -vvv stream: /// dev/stdin --sout '#rtp {sdp = rtsp: //: 8554}': demux = h264

הקוד שמבצע את כל העבודה בצד ה- pi ייקרא upon_startup.sh.

זהו סקריפט פשוט שמריץ הכל.

שלב 10: Houeston, הייתה לנו בעיה … מנועי DC הם לא אותו דגם

כבר בדקתי את ה- H-Bridge וזה עובד מצוין, אבל כשאני מחבר את המנועים שקיבלתי מפלטפורמת הרובוטים הזמנתי באינטרנט שני המנועים האלה מסתובבים במהירות שונה ומשמיעים קולות שונים. שיניתי את המצערת ל -100% על המנועים. שניהם לא יכלו לרוץ ביכולתם המרבית.

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

בשלב זה, מה שיש לי הוא שהתוכנית הסדרתית ב- Arduino עובדת בסדר גמור, אך שרת ה- Tcp במחשב הלקוח ו- Tcp ב- Pi עדיין לא מקודד. ב אני צריך להשלים ערך זה לתחרות. מה אני עושה?

  1. ראשית, אני משלש את המתח של המנועים. בגליון הנתונים נכתב כי 3V, 6V לא הזיזו אותם. אז זה 9V. חיברתי סוללות teo במקביל להכפלת הזרם והמתח נשאר זהה.
  2. האם יש לי מנועים אחרים המתאימים לתושבת על הרציף? אולי אני יכול לראות אם הם דגמים דומים.
  3. אני יכול להחליף ל- Servos אם השוקולד באמת פוגע במאוורר.

בית הספר התחיל. אצטרך לראות מה לעשות.

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

הפתרון:

אז עשיתי בדיקה נוספת. התאמתי את ההבדל במהירות בקוד הארדואינו.

הערה: המנועים עשויים להסתובב במהירויות שונות עבורך! שנה את הערכים בסקיצה של Arduino.

שלב 11: [TCP]: מדוע Tcp ו- Not Secure Shell? מהו TCP?

יש לי שני הסברים מדוע להשתמש ב- Tcp ולא ב- SSH עבור ה- P. C. - תקשורת פי.

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

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

(מתוך ויקיפדיה)

אז יתרונות TCP הם:

  • לבטח
  • מָהִיר
  • עובד בכל מקום ברשת
  • מספק שיטות לבדיקת העברת הנתונים הנכונה
  • בקרת זרימה: יש הגנה למקרה ששולח הנתונים שולח נתונים מהר מדי מכדי שהלקוח יכול להירשם ולעבד אותו.

והחסרונות הם:

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

למה שלא תשתמש ב- UDP, אתה עשוי לשאול? ובכן, בניגוד ל- TCP, UDP לא מוודא שהלקוח שלך מקבל את הנתונים לפני שליחת יותר. כמו לשלוח מייל ולא לדעת אם הלקוח מקבל אותו. חוץ מזה, UDP פחות מאובטח. למידע נוסף, קרא פוסט זה מ- Stack Exchange Super User

מאמר זה טוב ומומלץ.

שלב 12: [TCP]: מאפשר ליצור לקוח

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

המאמר של Python Wiki TcpCommunication מראה שזה כל כך פשוט לבצע תקשורת כזו עם כמה שורות קוד באמצעות מודול השקע המובנה. תהיה לנו תוכנית במחשב האישי ותוכנית נוספת ב- Pi.

נעבוד עם הפרעות. למידע נוסף בשלב ההסברים אודותיהם. קרא גם שם על מאגרים. עכשיו, אנחנו יכולים לקרוא את הנתונים שיש לנו באמצעות data = s.recv (BUFFER_SIZE) אבל זה יהיה כמה תווים שהגדרנו עם עקיצות ריקות. האם נוכל להשתמש בהפרעות? שאלה נוספת: האם המאגר יהיה ריק או שהוא יחכה שהשרת ישלח נתונים נוספים ובמקרה זה השרת/הלקוח יזרקו חריגה מפסק זמן?

בואו נתמודד עם זה בכל פעם. לפני שנעשה זאת, חיפשתי את מאמר ויקיפדיה זה המפרט יציאות TCP ו- UDP משומשות. לאחר מבט מהיר החלטתי כי פרויקט זה יתקשר ביציאה 12298 מכיוון שהוא אינו בשימוש על ידי מערכת ההפעלה והשירותים המקומיים.

שלב 13: נסה את תקנות ה- Tcp שלנו

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

  1. הפעל תוכנית ששולחת טקסט באמצעות Tcp בלולאה דרך יציאת וילון
  2. התחל תוכנית אחרת (במקביל) שקוראת את כל הטקסט בלולאה ומדפיסה את זה למסך.

יוצגו רק חלקים מהתוכנית. כל התוכניות הפועלות עם Python 3. כל התוכניות האלה הן לשלוח את הפקודה הטורית מהמקלדת של משתמש המחשב אל ה- Arduino דרך ה- Pi.

  • SBcontrolPC.py - להפעלה במחשב האישי. מתחיל חיבור TCP בכתובת המקומית וביציאה שצוינה (אני משתמש ביציאה 12298, ראה שלב קודם מדוע)
  • SBcontrolPi.py - להפעלה ב- Pi. קורא את המאגר שלו כל חצי שנייה (0.5 שניות). מתחיל סקריפט מעטפת שמנהל דברים כגון הזרמת וידאו וכו '.

מוּמלָץ: