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

זרוע רובוטית פשוטה וחכמה באמצעות Arduino !!!: 5 שלבים (עם תמונות)
זרוע רובוטית פשוטה וחכמה באמצעות Arduino !!!: 5 שלבים (עם תמונות)

וִידֵאוֹ: זרוע רובוטית פשוטה וחכמה באמצעות Arduino !!!: 5 שלבים (עם תמונות)

וִידֵאוֹ: זרוע רובוטית פשוטה וחכמה באמצעות Arduino !!!: 5 שלבים (עם תמונות)
וִידֵאוֹ: 10 лучших проектов по робототехнике для детей — творче... 2024, יוני
Anonim
Image
Image
דברים שתצטרכו
דברים שתצטרכו

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

אז בואו נתחיל….

שלב 1: דברים שתצטרך:-

דברים שתצטרכו
דברים שתצטרכו
דברים שתצטרכו
דברים שתצטרכו

להלן רשימת הדברים שתזדקק להם:-

1. מנועי סרוו x 5 קישור לארה ב:- https://amzn.to/2OxbSH7Link לאירופה:-

2. פוטנציומטרים x 5 (השתמשתי ב- 100k.) קישור לארה ב:- https://amzn.to/2ROjhDMLink לאירופה:-

3. ארדואינו UNO. (אתה יכול להשתמש גם בארדואינו ננו) קישור לארה ב:- https://amzn.to/2DBbENWLink לאירופה:-

4. לוח לחם. (אני מציע ערכה זו) קישור לארה ב:- https://amzn.to/2Dy86w4Link לאירופה:-

5. סוללה. (אופציונלי, אני משתמש במתאם 5V)

6. קרטון/עץ/קרש שמש/אקריליק מה שיש או קל למצוא.

וגם תצטרך Arduino IDE מותקן.

שלב 2: הכנת הזרוע:-

ביצוע הזרוע
ביצוע הזרוע
ביצוע הזרוע
ביצוע הזרוע

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

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

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

ההתייחסות לתמונות תיתן לך רעיון טוב יותר.

הרמתי הכל על לוח בד בגודל A4 המשמש כבסיס.

שלב 3: יצירת חיבורים:-

יצירת חיבורים
יצירת חיבורים
יצירת חיבורים
יצירת חיבורים
יצירת חיבורים
יצירת חיבורים

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

  • תחילה חבר את כל סרוווס במקביל לאספקת החשמל (החוט האדום ל- +ve ו- Wire Black or Brown to Gnd)
  • לאחר מכן חבר את חוטי האות כלומר חוט צהוב או כתום לסיכת PWM של ארדואינו.
  • כעת חבר את הפוטנציומטרים ל- +5v ו- Gnd של arduino במקביל.
  • חבר את המסוף האמצעי לסיכה האנלוגית של ardunio.

כאן משמשים פינים דיגיטליים 3, 5, 6, 9 & 10 לשליטה בסרווואים

סיכות אנלוגיות A0 עד A4 משמשות לקלט מפוטנציומטרים.

סרוו המחובר לסיכה 3 נשלט על ידי פוטנציומטר המחובר ל- A0

סרוו המחובר לסיכה 5 נשלט על ידי סיר על A1, וכן הלאה …

הערה:- למרות שה- Servos אינם מופעלים על ידי arduino, הקפד לחבר את ה- Gnd של סרוווס ל- arduino או שהזרוע לא תעבוד.

שלב 4: קידוד:-

קידוד
קידוד

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

קוד:- (קובץ להורדה מצורף להלן.)

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

#לִכלוֹל

// סרוו אובייקטים סרוו סרוו_0; סרוו סרוו_1; סרוו סרוו_2; סרוו סרוו_3; סרוו סרוו_4; // פוטנציומטר אובייקטים int Pot_0; int Pot_1; int Pot_2; int Pot_3; int Pot_4; // משתנה לאחסון Servo Position int Servo_0_Pos; int Servo_1_Pos; int Servo_2_Pos; int Servo_3_Pos; int Servo_4_Pos; // משתנה לאחסון ערכי המיקום הקודם int Prev_0_Pos; int Prev_1_Pos; int Prev_2_Pos; int Prev_3_Pos; int Prev_4_Pos; // משתנה לאחסון ערכי המיקום הנוכחי int Current_0_Pos; int Current_1_Pos; int Current_2_Pos; int Current_3_Pos; int Current_4_Pos; int Servo_Position; // מאחסן את הזווית int Servo_Number; // לא מאחסן מספר servo int אחסון [600]; // מערך לאחסון נתונים (הגדלת מערך המערך תצרך יותר זיכרון) int Index = 0; // אינדקס מערך מתחיל ממיקום החמישי של נתוני char = 0; // משתנה לאחסון נתונים מתוך קלט סידורי.

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

הגדרת חלל ()

{Serial.begin (9600); // לתקשורת סדרתית בין arduino ו- IDE. // אובייקטים של סרוו מחוברים לסיכות PWM. Servo_0.attach (3); Servo_1.attach (5); סרוו_2.צירוף (6); Servo_3.attach (9); Servo_4.attach (10); // Servos מוגדרים למיקום 100 בעת האתחול. Servo_0.write (100); Servo_1.write (100); Servo_2.write (100); Servo_3.write (100); Servo_4.write (100); Serial.println ("הקש 'R' להקלטה ו- 'P' להפעלה"); }

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

בטל Map_Pot ()

{ / * סרווס מסתובבים ב -180 מעלות אבל השימוש בו לגבולות הוא לא רעיון טוב מכיוון שהוא גורם לסרסים לזמזם ברציפות וזה מעצבן ולכן אנו מגבילים את הסרוו לנוע בין: 1-179 * / Pot_0 = analogRead (A0); // קרא קלט מהסיר ושמור אותו בסיר המשתנה_0. Servo_0_Pos = מפה (Pot_0, 0, 1023, 1, 179); // מפה סרוו לפי הערך שבין 0 ל- 1023 Servo_0.write (Servo_0_Pos); // העבר את הסרוו למיקום זה. Pot_1 = analogRead (A1); Servo_1_Pos = מפה (Pot_1, 0, 1023, 1, 179); Servo_1.write (Servo_1_Pos); Pot_2 = analogRead (A2); Servo_2_Pos = מפה (Pot_2, 0, 1023, 1, 179); Servo_2.write (Servo_2_Pos); Pot_3 = analogRead (A3); Servo_3_Pos = מפה (Pot_3, 0, 1023, 1, 179); Servo_3.write (Servo_3_Pos); Pot_4 = analogRead (A4); Servo_4_Pos = מפה (Pot_4, 0, 1023, 1, 179); Servo_4.write (Servo_4_Pos); }

כעת נכתוב את פונקציית הלולאה:

לולאת חלל ()

{Map_Pot (); // קריאת פונקציה לקריאת ערכי סיר בעוד (Serial.available ()> 0) {data = Serial.read (); if (data == 'R') Serial.println ("הקלטה זזה …"); if (data == 'P') Serial.println ("משחק מהלכים מוקלטים …"); } if (data == 'R') // אם הזינו 'R', התחל להקליט. {// אחסן את הערכים במשתנה Prev_0_Pos = Servo_0_Pos; Prev_1_Pos = Servo_1_Pos; Prev_2_Pos = Servo_2_Pos; Prev_3_Pos = Servo_3_Pos; Prev_4_Pos = Servo_4_Pos; Map_Pot (); // פונקציית מפה נזכרת להשוואה אם (abs (Prev_0_Pos == Servo_0_Pos)) // ערך אבסולוטי מתקבל על ידי השוואת {Servo_0.write (Servo_0_Pos); // אם הערכים תואמים סרוו ממוקמים מחדש אם (Current_0_Pos! = Servo_0_Pos) // אם הערכים אינם תואמים {Storage [Index] = Servo_0_Pos + 0; // ערך נוסף למערך אינדקס ++; // ערך אינדקס מוגדל ב- 1} Current_0_Pos = Servo_0_Pos; } /* באופן דומה השוואת הערכים מתבצעת עבור כל השירותים, +100 מתווספים כל כניסה כערך דיפרנציאלי. */ if (abs (Prev_1_Pos == Servo_1_Pos)) {Servo_1.write (Servo_1_Pos); if (Current_1_Pos! = Servo_1_Pos) {Storage [Index] = Servo_1_Pos + 100; אינדקס ++; } Current_1_Pos = Servo_1_Pos; } if (abs (Prev_2_Pos == Servo_2_Pos)) {Servo_2.write (Servo_2_Pos); אם (Current_2_Pos! = Servo_2_Pos) {Storage [Index] = Servo_2_Pos + 200; אינדקס ++; } Current_2_Pos = Servo_2_Pos; } if (abs (Prev_3_Pos == Servo_3_Pos)) {Servo_3.write (Servo_3_Pos); אם (Current_3_Pos! = Servo_3_Pos) {Storage [Index] = Servo_3_Pos + 300; אינדקס ++; } Current_3_Pos = Servo_3_Pos; } if (abs (Prev_4_Pos == Servo_4_Pos)) {Servo_4.write (Servo_4_Pos); אם (Current_4_Pos! = Servo_4_Pos) {Storage [Index] = Servo_4_Pos + 400; אינדקס ++; } Current_4_Pos = Servo_4_Pos; } / * ערכים מודפסים על צג טורי, '\ t' מיועד להצגת ערכים בפורמט טבלאי * / Serial.print (Servo_0_Pos); Serial.print ("\ t"); Serial.print (Servo_1_Pos); Serial.print ("\ t"); Serial.print (Servo_2_Pos); Serial.print ("\ t"); Serial.print (Servo_3_Pos); Serial.print ("\ t"); Serial.println (Servo_4_Pos); Serial.print ("אינדקס ="); Serial.println (אינדקס); עיכוב (50); } אם (data == 'P') // אם הזינו 'P', התחל לשחק מהלכים מוקלטים. {for (int i = 0; i <Index; i ++) // חצו את המערך באמצעות לולאה {Servo_Number = Storage /100; // מוצא מספר servo Servo_Position = אחסון % 100; // מוצא מיקום מתג סרוו (Servo_Number) {מקרה 0: Servo_0.write (Servo_Position); לשבור; מקרה 1: Servo_1.write (Servo_Position); לשבור; מקרה 2: Servo_2.write (Servo_Position); לשבור; מקרה 3: Servo_3.write (Servo_Position); לשבור; מקרה 4: Servo_4.write (Servo_Position); לשבור; } עיכוב (50); }}}

לאחר שהקוד מוכן, העלה אותו כעת ללוח הארדואינו

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

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

עם זאת, בואו נעבור לבדיקות …

שלב 5: בדיקה:-

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

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

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

מוּמלָץ: