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

רובוט סומו ארדואינו: 5 שלבים
רובוט סומו ארדואינו: 5 שלבים

וִידֵאוֹ: רובוט סומו ארדואינו: 5 שלבים

וִידֵאוֹ: רובוט סומו ארדואינו: 5 שלבים
וִידֵאוֹ: robot race. line follower robot with arduino program 2024, יולי
Anonim
רובוט סומו ארדואינו
רובוט סומו ארדואינו

לפני שאנחנו מתחילים

מהו רובוט הסומו?

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

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

הרעיון:

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

אז בואו נסתכל על חוקי תחרות הרובוטים של סומו:

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

1. מידות: רוחב מקסימלי 20 ס"מ, אורך מקסימלי 20 ס"מ, גובה לא צוין.

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

3. משקל: אינו עולה על 3 ק ג.

4. הרובוט חייב להיות בעל שליטה עצמית.

שלב 1: רכיבים

Image
Image
שימושים לכל רכיב
שימושים לכל רכיב

1 ארדואינו אנו 3

מנוע 2 DC

1 גשר L298N כפול H עבור Arduino

חיישן 1 קולי

2 IR TCRT5000

סוללה אחת 9v

סוללת AA 4 * 1.5 v יחידות + בית סוללות

4 גלגלי רובוט

חוטי מגשר

שלב 2: שימושים לכל רכיב

שימושים לכל רכיב
שימושים לכל רכיב
שימושים לכל רכיב
שימושים לכל רכיב

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

1- ארדואינו אנו 3

זהו לוח ראשי השולט בכל החלקים ומקשר אותו יחד

מנוע 2- DC

מה שעוזר לרובוט לתמרן ולנוע בתוך טבעת התחרות

4- L298N גשר כפול H עבור Arduino

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

5- חיישן קולי

החיישן הקולי משמש לאיתור הרובוט של היריב והוא ממוקם בדרך כלל בחלק העליון של הרובוט.

6- IR TCRT5000

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

7- סוללה 9v

הוא תומך בלוח הראשי (Arduino) עם המתח החשוב.

8- סוללת AA 4 * 1.5 v חלקים + בית סוללות

הוא תומך בשני המנועים (מנוע DC) במתח החשוב ויש להפריד אותו בכדי לתת את מלוא הכוח לגלגלים.

9- חוטי מגשר

שלב 3: עיצוב

לְעַצֵב
לְעַצֵב
לְעַצֵב
לְעַצֵב

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

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

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

הורד את עיצוב 1 מכאן

הורד את עיצוב 2 מכאן

תוכל גם להוריד תבנית דגם נייר

פתח את קובץ ה- PDF באמצעות Adobe Acrobat Reader (תוכנה מומלצת)

שלב 4: משחק אסטרטגיה

Image
Image
לשחק אסטרטגיה
לשחק אסטרטגיה

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

אסטרטגיית משחק (1):

· אנו נהפוך את הרובוט סביב עצמו ברציפות.

· הרובוט תמיד מודד את המרחק ברציפות במהלך הסיבוב.

· אם מרחק היריב הנמדד נמוך מ (10 ס מ למשל), המשמעות היא שהיריב נמצא מול הרובוט ישירות אלינו.

· הרובוט חייב להפסיק להסתובב ואז להתחיל את ההתקפה (להתקדם במהירות במלוא העוצמה).

· הרובוט חייב לקחת את הקריאות מחיישני ה- IR תמיד כדי להיות בטוח שלא עברנו את גבול הטבעת.

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

אסטרטגיית משחק (2):

· ברובוט ההתחלה מודדים את המרחק מלפנים.

· רובוט זז אחורה באותו המרחק הנמדד.

· הרובוט מפסיק להסתובב ואז מתחיל לתקוף בפתאומיות (להתקדם במלוא העוצמה).

· במקרה של יריב לצרף רובוט חייב לסובב 45 מעלות תוך כדי לשרוד את עצמו אם נופל מהטבעת.

· הרובוט חייב לקחת את הקריאות מחיישני ה- IR תמיד כדי להיות בטוח שלא עברנו את גבול הטבעת.

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

שלב 5: תכנות

תִכנוּת
תִכנוּת

אנא בדוק את המעגל ואת הקוד

* עדכון 2019-03-26

הורד את הספרייה האולטרא סאונד מכאן תחילה והתקן אותה:

github.com/ErickSimoes/Ultrasonic/blob/mas…

/*

מאת אחמד אזוז

www.instructables.com/id/How-to-Make-Ardu…

הורד את הליב מכאן תחילה

github.com/ErickSimoes/Ultrasonic/blob/ma…

*/

#כלול Ultrasonic.h

אולטרסאונד קולי (4, 3);

const int IN1 = 5;

const int IN2 = 6; const int IN3 = 9; const int IN4 = 10; #הגדר IR_sensor_front A0 // חיישן קדמי #הגדרת IR_sensor_back A1 // מרחק int senson האחורי;

הגדרת חלל ()

{Serial.begin (9600); עיכוב (5000); // לפי תפקידי תאימות סומו} לולאת חלל () {int IR_front = analogRead (IR_sensor_front); int IR_back = analogRead (IR_sensor_back); distance = ultrasonic.read (); ROTATE (200); // התחל rotete אם (מרחק <20) {Stop (); while (מרחק 650 || IR_back> 650) {הפסקה;} עיכוב (10); } אם (IR_front <650) // <650 פירושו קו לבן {Stop (); עיכוב (50); אחורה (255); עיכוב (500); } if (IR_back <650) // {Stop (); עיכוב (50); קדימה (255); עיכוב (500); } /* ----------- איתור באגים ---------------- Serial.print (קולי (סאונד) (CM)); Serial.println ("ס"מ"); Serial.println ("חזית IR:"); Serial.println (IR_front); Serial.println ("גב אחורי:"); Serial.println (IR_back); */

} //--------------------------------------------

void FORWARD (int Speed) {// כשאנחנו רוצים לתת ל- Motor To להתקדם, // פשוט בטל חלק זה בקטע הלולאה. analogWrite (IN1, מהירות); analogWrite (IN2, 0); analogWrite (IN3, 0); analogWrite (IN4, מהירות); } // -------------------------------------------- בטל בחזרה (int Speed) {// כשאנחנו רוצים לתת ל- Motor To להתקדם, // פשוט בטל חלק זה בקטע הלולאה. analogWrite (IN1, 0); analogWrite (IN2, מהירות); analogWrite (IN3, מהירות); analogWrite (IN4, 0); } // -------------------------------------------- בטל ROTATE (int Speed) {// כשאנחנו רוצים לתת ל- Motor To Rotate, // פשוט לבטל חלק זה בקטע הלולאה. analogWrite (IN1, מהירות); analogWrite (IN2, 0); analogWrite (IN3, מהירות); analogWrite (IN4, 0); } // -------------------------------------------- עצירת חלל () {// כשאנחנו רוצים למנוע לעצור, // פשוט בטל חלק זה בקטע הלולאה. analogWrite (IN1, 0); analogWrite (IN2, 0); analogWrite (IN3, 0); analogWrite (IN4, 0); }

מוּמלָץ: