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

פלטפורמת רובוטיקה פשוטה של Arduino !: 5 שלבים
פלטפורמת רובוטיקה פשוטה של Arduino !: 5 שלבים

וִידֵאוֹ: פלטפורמת רובוטיקה פשוטה של Arduino !: 5 שלבים

וִידֵאוֹ: פלטפורמת רובוטיקה פשוטה של Arduino !: 5 שלבים
וִידֵאוֹ: Lesson 1: What is Arduino? Types of Arduino Boards and SunFounder Kit | SunFounder Robojax 2024, נוֹבֶמבֶּר
Anonim
פלטפורמת רובוטיקה פשוטה של Arduino!
פלטפורמת רובוטיקה פשוטה של Arduino!
פלטפורמת רובוטיקה ארדואינו פשוטה!
פלטפורמת רובוטיקה ארדואינו פשוטה!

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

הצלחתי להשיג פרוטוקול סדרתי הגון ודוגמה פשוטה שמניעה את הרובוט באמצעות בקר Xbox 360 המחובר למחשב Linux.

שלב 1: מה זה יכול לעשות …

מה זה יכול לעשות…
מה זה יכול לעשות…
מה זה יכול לעשות…
מה זה יכול לעשות…

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

שלב 2: חלקים

חלקים
חלקים
חלקים
חלקים
חלקים
חלקים

עבור הרובוט שלי השתמשתי בכמה חלקים שונים. רוב החלקים היו מדברים ישנים שהיו לי סביב המרתף שלי. עם זאת, הקוד מספיק קטן כדי שיתאים בקלות לכל ארדואינו. זה כנראה יכול להתאים אפילו ל- ATTiny (אם אני בונה בקר רובוט מלבד ה- Arduino, ה- ATTiny 2313 נראה כמו בחירה טובה, הוא קטן וזול יותר אך עדיין יש לו הרבה יציאות וממשק UART טורי) 2) פלטפורמת Vex Robotics קיבלתי ערכת Vex לפני כמה שנים לבנות רובוט מבוקר רדיו לאסוף דברים לתחרות בתיכון. בניתי את בסיס ה"בוט המרובע "הבסיסי בעל 4 גלגלים המונעים על ידי שני מנועים. אתה יכול להחליף בסיסי רובוט אחרים אם יש לך פלטפורמה אחרת שאתה רוצה לנהוג בה. הדבר החשוב שצריך לציין הוא שמנועי Vex הם בעצם סרוו סיבוב רציף, הם משתמשים באפנון ברוחב הדופק כדי לסמן כמה מהר ובאיזה כיוון לפנות. מנועי Vex נחמדים מכיוון שיש להם טווח גבוה של מתח הפעלה, איפשהו בין 5 ל -15 וולט. אני משתמש ב- 12V מכיוון שהייתה לי סוללה של 12V. עבור רוב סרוו תחביבים סטנדרטיים, תזדקק למתח נמוך יותר (לרוב 6 וולט).3) סוללה רובוט אינו מועיל ללא ספק כוח. לבדיקה אני משתמש במתאם סטנדרטי 9V ליבלת קיר מ- RadioShack, אך להפעלה אלחוטית מצאתי מארז סוללות 12V NiMH במחשב נייד עתיק. למרות שהוא אינו מחזיק מספיק תשלום להפעלת המחשב הנייד, הוא מניע את רובוט ה- Vex שלי בסדר גמור. הוא יכול גם להפעיל את הארדואינו באמצעות סיכת הכניסה Vin במחבר החשמל, הארדואינו יסדיר את ה -12 וולט עד 5 ואפילו יוציא אותו מפין הפלט 5V במחבר החשמל. לחבר הכל. בסופו של דבר אני אקבל לוח אב טיפוס נחמד יותר והלחמה בכמה חיבורים קבועים יותר, אבל כרגע לוח הלחם מקל על שינוי דברים. לוח הלחם שלי הוא "קרש הלחם הבסיסי" של SparkFun, רק לוח לחם על לוח מתכת עם 3 מסופים. 5) ממיר RS232-TTL מבוסס MAX232 אם ברצונך להניע את הרובוט שלך באמצעות חיבור יציאה טורית RS-232 (בניגוד למבנה Arduino ב- USB) אתה יכול להשתמש בממיר RS232-TTL. אני משתמש ב- MAX232 כי היו לי כמה מהם מונחים והלחמתי אותו על פיסת לוח טיפוס קטנה עם הקבלים הנדרשים. אני צריך RS-232 כי למחשב הנייד הישן שלי יש רק יציאת USB אחת ואני משתמש בזה לבקר משחק כדי להניע את הרובוט. קיבלתי אחד עם ההזמנה הארדואינית שלי כי הם נשמעו מגניבים). הנורית מהבהבת באדום, ירוק, כחול ברצף כאשר הארדואינו מגפיש כדי להראות שהרובוט אתחל מחדש ואז נדלק ירוק כאשר התקבלה חבילת מנוע, כחול כאשר התקבלה חבילת מאוורר ואדום כאשר חבילה גרועה או לא ידועה החבילה התקבלה. כדי להניע את המאוורר השתמשתי בטרנזיסטור NPN רגיל (אותם הדגמתי במדריך האחרון שלי) ונגד בין הטרנזיסטור לארדואינו (הטרנזיסטור משך יותר מדי זרם וחימם את הארדואינו, אז שמתי מגבלה הנגד כדי לעצור אותו).

שלב 3: תכנות Arduino ו- PC

תכנות ארדואינו ו- PC
תכנות ארדואינו ו- PC

כדי לתכנת את Arduino, ברור שתצטרך את תוכנת Arduino וכבל USB. אתה יכול גם לתכנת את Arduino באמצעות יציאה טורית וממיר רמות TTL אם למחשב שלך יש יציאה טורית. שים לב שממשק ה- USB הטורי לא יתקשר עם מעבד ה- ATMega של Arduino אם יש ממיר רמות המחובר לפינים הסידוריים של Arduino (סיכות 0 ו -1) אז נתק אותו לפני השימוש ב- USB. על Arduino נזדקק לממשק טורי המאפשר מחשב לשלוט במנועים. נצטרך גם מערכת כונן סרוו PWM כדי לשלוח את האותות הנכונים למנועי Vex ולוודא שהם הולכים לכיוונים הנכונים כאשר מקבלים את הערכים הנכונים. הוספתי גם כמה מהבהבי LED פשוטים, בעיקר לצורך חיווי סטטוס אבל גם כי זה נראה מגניב.במחשב האישי נצטרך לפתוח את היציאה הטורית ולשלוח מסגרות נתונים שתוכנית Arduino תבין. המחשב צריך גם להמציא ערכים מוטוריים. דרך קלה לעשות זאת היא באמצעות משטח משחק USB או ג'ויסטיק, אני משתמש בבקר Xbox 360. אפשרות נוספת היא להשתמש במחשב מרושת (נטבוק או לוח מיני ITX קטן) על הרובוט עצמו כדי לנהוג באופן אלחוטי. עם נטבוק, אתה יכול אפילו להשתמש במצלמת האינטרנט המשולבת כדי להזרים אחורה הזנת וידאו ולהניע את הרובוט שלך מרחוק. השתמשתי במערכת sockets של Linux לביצוע תכנות רשת עבור ההתקנה שלי. תוכנית אחת ("שרת הג'ויסטיק") מופעלת במחשב נפרד המחובר אליו בקר, ותוכנית נוספת ("הלקוח") מופעלת ברשת ה- netbook המחוברת ל- Arduino. זה מקשר בין שני המחשבים ושולח מידע ג'ויסטיק ל- netbook, ולאחר מכן שולח חבילות סדרתיות לארדואינו שמניע את הרובוט. כדי להתחבר ל- Arduino באמצעות מחשב לינוקס (ב- C ++) עליך לפתוח תחילה את היציאה הטורקית הנכונה קצב שידור ולאחר מכן שלח את הערכים באמצעות פרוטוקול שבו השתמשת גם בקוד של הארדואינו. הפורמט הסדרתי שלי פשוט ויעיל. אני משתמש ב -4 בתים לכל "מסגרת" כדי לשלוח את שתי מהירויות המנוע (כל אחת היא בתים אחת). הבייט הראשון והאחרון הם ערכים מקודדים המשמשים כדי למנוע מהארדואינו לשלוח את הבייט הלא נכון לקוד ה- PWM ולגרום למנועים להשתגע. זוהי המטרה העיקרית של נורית ה- RGB, היא מהבהבת באדום כשהמסגרת הסדרתית לא הושלמה. ארבעת הבייטים הם כדלקמן: 255 (בתים "התחל" מקודדים קשים),, 200 (בתים "סוף" מקודדים קשים) כדי להבטיח קליטה מהימנה של הנתונים, הקפד לשים מספיק עיכוב בין לולאות התוכנית. אם תפעיל את קוד המחשב שלך מהר מדי, הוא יציף את היציאה והארדואינו עלול להתחיל לרדת או אפילו לקרוא בתים. גם אם זה לא יוריד מידע זה יכול גם להציף את מאגר היציאות הטוריות של Arduino. עבור מנועי Vex השתמשתי בספריית ה- Servo של Arduino. מכיוון שמנועי Vex הם רק מנועים של סיבוב רציף, הם משתמשים בדיוק באותו איתות בו משתמשים סרווס. עם זאת, במקום ש- 90 מעלות יהיו נקודת המרכז, היא נקודת העצירה שבה המנוע אינו מסתובב. הורדת ה"זווית "גורמת למנוע להתחיל להסתובב בכיוון אחד, בעוד שהרמת הזווית גורמת לו להסתובב בכיוון השני. ככל שתתרחקו מהנקודה המרכזית, המנוע יסתובב מהר יותר. למרות שזה לא ישבור כלום אם תשלח למנועים ערכים גדולים מ -180 מעלות, הייתי ממליץ להגביל את הערכים מ -0 ל -180 מעלות (שהם במקרה זה תוספות מהירות). מכיוון שרציתי יותר שליטה ופחות שליטה בנהיגה ברובוטים, הוספתי לתוכנית שלי "מגבלת מהירות" שאינה מאפשרת למהירות לעלות מעל 30 "מעלות" לשני הכיוונים (הטווח הוא 90 +/- 30). אני מתכוון להוסיף פקודת יציאה טורית המשנה את מגבלת המהירות, כך שהמחשב יוכל להסיר את המגבלה תוך כדי תנועה אם אתה רוצה לעבור מהר (בדקתי בחדרים קטנים כדי שלא ארצה להאיץ ולהתרסק לקיר, במיוחד עם נטבוק עליו). למידע נוסף, הורד את הקוד המצורף בסוף מדריך זה.

שלב 4: הוסף Netbook כדי לחקור עולמות לא ידועים ממרחק

הוסף Netbook כדי לחקור עולמות לא ידועים ממרחק
הוסף Netbook כדי לחקור עולמות לא ידועים ממרחק
הוסף Netbook כדי לחקור עולמות לא ידועים ממרחק
הוסף Netbook כדי לחקור עולמות לא ידועים ממרחק

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

ישנן דרכים רבות לגרום לזה לפעול, רבות מן הסתם הרבה יותר קלות משלי, אם כי אינני מכיר עיבוד או שפות מבוססות סקריפט ולכן בחרתי להשתמש ב- Linux ו- C ++ ליצירת קישור שליטה אלחוטי בין תחנת הבסיס שלי (aka ThinkPad הישן) והנטבוק החדש שלי של Lenovo IdeaPad שמחובר לבסיס הכונן של Arduino. שני המחשבים פועלים עם אובונטו. ה- ThinkPad שלי מחובר לרשת ה- LAN של בית הספר שלי וה- IdeaPad שלי מחובר לנקודת הגישה שלי ל- WiFi המחוברת גם ל- LAN של בית הספר (לא יכולתי לקבל זרם וידאו אמין מ- WiFi בית הספר מכיוון שכולם משתמשים בו, אז קבעתי על הנתב שלי כדי לספק חיבור טוב). חיבור טוב חשוב במיוחד במקרה שלי מכיוון שלא יישמתי בדיקת שגיאות או פסק זמן. אם חיבור הרשת פתאום יורד, הרובוט ממשיך ללכת עד שהוא מתנגש במשהו או שאני רץ ועוצר אותו. זהו הגורם העיקרי מאחורי ההחלטה שלי להאט את מערכת ההנעה הן על ידי כיוון המנועים והטמעת מגבלת מהירות תוכנה.

שלב 5: קבל הזנת וידאו

לאחר שהחוקר הרובוטי שלך יכול לנהוג באופן אלחוטי, סביר להניח שתרצה לקבל הזנת וידאו מהנטבוק כך שתוכל לדעת היכן נמצא הרובוט שלך. אם אתה משתמש באובונטו (או אפילו אם אינך עושה זאת!) אני ממליץ להשתמש ב- VLC Media Player כדי להזרים. אם לא התקנת אותו, אתה באמת מפסיד, אז התקן אותו באמצעות הפקודה "sudo apt-get install vlc", חפש VLC במרכז התוכנה של אובונטו (9.10 בלבד) או הורד את ההתקנה ב- videolan. org אם אתה משתמש ב- Windows. תצטרך VLC פועל על שני המחשבים האישיים. VLC מסוגל להזרים כמו גם להפעיל זרמים ברשת. ב- netbook (רובוט מחשב) ודא תחילה שמצלמת האינטרנט שלך (מובנית או מחוברת USB) פועלת על ידי לחיצה על פתח מכשיר לכידה וניסוי וידאו עבור לינוקס 2 (חלק מהתקנים ישנים יותר עשויים להזדקק לווידאו עבור לינוקס ולא לגרסה 2 החדשה). אתה אמור לראות את תצוגת המצלמה במסך ה- netbook. כדי להזרים אותו, בחר הזרמה מתפריט קובץ ולאחר מכן בחר בכרטיסיה מכשיר לכידה בחלק העליון של החלון שמופיע. זכור כי אובונטו (והפצות לינוקס רבות אחרות) מאפשרות לך ללחוץ על Alt כדי ללחוץ ולגרור חלונות גדולים מדי למסך שלך (שימושי במיוחד ב- netbooks ישנים יותר, אם כי אפילו ל- IdeaPad שלי יש רזולוציה מוזרה של 1024x576 ללא סיבה נראית לעין). כדי לצמצם את העיכוב, לחץ על "הצג אפשרויות נוספות" והוריד את ערך המטמון. הסכום שתוכל להוריד אותו תלוי לפעמים במכשיר, הוא הופך להיות לא יציב אם אתה מוריד אותו יותר מדי. ב 300ms אתה עשוי לקבל עיכוב קל אבל זה לא נורא.

לאחר מכן, לחץ על זרם כדי לעבור לתפריט הבא. לחץ על הבא ולאחר מכן בחר והוסף HTTP כיעד חדש. כעת הגדר את ההמרה כדי להפוך את הזרם לקטן יותר. הכנתי פרופיל מותאם אישית המשתמש ב- M-JPEG במהירות 60kb/s ו -8 fps. הסיבה לכך היא ששימוש בקודק מתקדם כמו MPEG או תאורה יאכל זמן מעבד עצום במעבד Atom של נטבוק וזה יכול להוביל להפסקת הזנת הווידאו שלך ללא סיבה נראית לעין. MJPEG הוא קודק פשוט וקל לשימוש בקצב ביט נמוך. לאחר הפעלת הזרם, פתח את VLC במחשב השני שלך, פתח זרם רשת, בחר HTTP ולאחר מכן הקלד את כתובת ה- IP של ה- netbook שלך (מקומי או אינטרנט בהתאם לאופן החיבור שלך) ואחריו ": 8080". אתה צריך לציין את היציאה מסיבה מוזרה כלשהי, אחרת זה נותן לך שגיאות. אם יש לך חיבור הגון, אתה אמור לראות את ההזנה של מצלמת האינטרנט שלך במחשב השני שלך, אך יהיה לה עיכוב קל (כשנייה). אני לא יודע למה בדיוק מתרחש העיכוב הזה, אבל אני לא מצליח להבין איך להיפטר ממנו. כעת פתח את אפליקציית הבקרה והתחל לנהוג ברובוט ה- netbook שלך. קבל תחושה כיצד העיכוב פועל בעת נהיגה, כך שלא תתנגש בשום דבר. אם זה עובד, רובוט ה- netbook שלך סיים.

מוּמלָץ: