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

זרוע רובוטית עם מודולי Zio חלק 2: 11 שלבים
זרוע רובוטית עם מודולי Zio חלק 2: 11 שלבים

וִידֵאוֹ: זרוע רובוטית עם מודולי Zio חלק 2: 11 שלבים

וִידֵאוֹ: זרוע רובוטית עם מודולי Zio חלק 2: 11 שלבים
וִידֵאוֹ: CS50 Live, Episode 007 2024, יולי
Anonim
זרוע רובוטית עם מודולי Zio חלק 2
זרוע רובוטית עם מודולי Zio חלק 2

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

פוסט זה בבלוג הוא חלק מסדרת ה- Zio Robotics.

מבוא

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

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

שלב 1: סקירת הפרויקט

רמת קושי:

זיו פדוואן

משאבים מועילים:

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

Zio Zuino M UNO Qwiic מדריך התחלה

שלב 2: תרשימים

סכמטים
סכמטים

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

שלב 3: תרשים בקר PS2

תרשים בקר PS2
תרשים בקר PS2

שלב 4: הגדרת חיבור מודולי Zio

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

שלב 5: חבר את סרוו הזרוע הרובוטית לבקר סרוו Zio 16

חבר את סרוו הזרוע הרובוטית לבקר סרוו Zio 16
חבר את סרוו הזרוע הרובוטית לבקר סרוו Zio 16

שלב 6: חבר את סרוו 16 ל- Booster DC/DC והגדר אותו ל -6.0 וולט

חבר את סרוו 16 ל- Booster DC/DC והגדר אותו ל- 6.0V
חבר את סרוו 16 ל- Booster DC/DC והגדר אותו ל- 6.0V

אנו משתמשים במגבר DC/DC כדי להגביר ולהתאים את מתח אספקת הסוללה ל -6.0.

השתמש בפוטנציומטר במגבר DC כדי להתאים את המתח עד שתקבל 6.0. לחץ על כפתור הכניסה/יציאה עד שהתצוגה תראה 6.0. עליך לספק מתח (סוללת 3.7V) תחילה למגבר DC/DC שלך בכדי להתאים את המתח.

שלב 7: חבר את Zuino M Uno לבקר סרוו Zio 16

חבר את Zuino M Uno לבקר ה- Servo Zio 16
חבר את Zuino M Uno לבקר ה- Servo Zio 16

Qwiic חבר את Zuino M Uno לבקר ה- Zio Servo עם כבל qwiic.

שלב 8: חיבור Uno למקלט PS2

חיבור Uno למקלט PS2
חיבור Uno למקלט PS2

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

שלב 9: קוד לזרוע רובוטית

אנו נשתמש בספריית PS2 Arduino כדי לקודד את בקר ה- PS2 האלחוטי שלנו לעבודה עם הזרוע הרובוטית שלנו. אתה יכול למצוא ולהוריד את קוד המקור לפרויקט הזרוע הרובוטית הזו חלק 2 בדף Github שלנו.

הורד והתקן את הספריות הבאות ושמור אותן בתיקיה הספריות המקומיות של Arduino IDE:

  • ספריית נהגי סרוו של Adafruit PWM
  • ספריית ארדואינו PS2

כדי להתקין את הספריות פתח את Arduino IDE שלך, עבור לכרטיסייה סקיצה, בחר כלול ספרייה -> הוסף ספריית zip. בחר את הספריות הנ"ל שיכללו ב- IDE שלך.

ל- Arduino מדריך שימושי כיצד להתקין ספריות ל- IDE של Arduino. בדוק אותם כאן!

שלב 10: הפעל את הקוד שלך

הפעל את הקוד שלך
הפעל את הקוד שלך

פתח את Arduino IDE. תחת קבצים> דוגמאות> PS2_Arduino_Library, בחר PS2X_Servo

הערה: לפני שתוכל לשלוט בזרוע הרובוטית שלך באמצעות בקר PS2 בדוק את השלבים הבאים: הפעל את בקר ה- PS2 שלך. בדוק שנורית ה- Mode דולקת. אם לא, לחץ על כפתור המצב בבקר שלך. לאחר ביצוע האמור לעיל, עליך ללחוץ על כפתור האיפוס ב- Zuino M Uno שלך כדי לקרוא את הגדרות הבקר שלך. עליך ללחוץ על L1 ועל הג'ויסטיק כדי להזיז את הזרוע הרובוטית שלך.

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

שלב 11: הסבר קוד

השימוש בספריית PS2X Arduino הוא פשוט, ודורש רק אתחול, התקנה ולאחר מכן פקודת קריאה.

כדי להגדיר את החיבור לבקר PS2 שלך עם ה- Uno שלך, להלן הסיכות שאתה צריך להגדיר בקוד שלך:

/********************************************** ****************סיכות סט מחוברות לבקר PS2:* - טור 1e: מקורי* - 2e colmun: סטף? *החלף את מספרי הסיכה במספרים שבהם אתה משתמש **************************************** *********************/#הגדר PS2_DAT 13 // 14#הגדר PS2_CMD 11 // 15#הגדר PS2_SEL 10 // 16#הגדר PS2_CLK 12 // 17

החלפנו את הסיכות לאלה שבהם אנו משתמשים כדי להתחבר ל- Uno שלנו כפי שמתואר בתרשים הסיכות למעלה.

/********************************************** ***************** מצבי בחירה של בקר PS2:* - לחצים = קריאה אנלוגית של לחצני לחיצה* - רעש = רעש מוטורי*uncomment 1 של השורות עבור כל בחירת מצב ** ********************************************** ************///#הגדרת לחצים אמת#הגדרת לחצים לא נכונים //#הגדרת רעם נכון#הגדרת רעם שקר

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

אנו נשתמש רק בפקודת הג'ויסטיק של הבקר ו- L1 כדי לשלוט בתנועת הזרוע הרובוטית שלנו.

void loop () {/* עליך לקרוא Gamepad כדי לקבל ערכים חדשים ולהגדיר ערכי רטט ps2x.read_gamepad (מנוע קטן/כבוי, עוצמת מנוע גדולה יותר מ-0-255) אם אינך מפעיל את הרעש, השתמש ב- ps2x.read_gamepad (); ללא ערכים עליך לקרוא לזה לפחות פעם בשנייה*/if (error == 1) // לדלג על לולאה אם לא נמצא בקר; אחר {// בקר DualShock ps2x.read_gamepad (שקר, רטט); // קרא בקר והגדר מנוע גדול להסתובב במהירות 'רטט' אם (ps2x. Button (PSB_START)) // יהיה נכון כל עוד הכפתור נלחץ על Serial.println ("ההתחלה מוחזקת"); if (ps2x. Button (PSB_SELECT)) Serial.println ("הבחירה מוחזקת"); רטט = ps2x. Analog (PSAB_CROSS); // זה יקבע את מהירות הרטט של המנוע הגדול על סמך מידת הלחיצה שלך על הכפתור הכחול (X) אם (ps2x. Button (PSB_L1) || ps2x. Button (PSB_R1)) {// הדפס ערכי מקל אם אחד מהם הוא RY_Value TRUE = ps2x. Analog (PSS_RY); RX_Value = ps2x. Analog (PSS_RX); LY_Value = ps2x. Analog (PSS_LY); LX_Value = ps2x. Analog (PSS_LX); Serial.print ("ערכי Stick:"); Serial.print (RX_Value); Serial.print (""); Serial.print (RY_Value); Serial.print (""); Serial.print (LY_Value); Serial.print (""); Serial.println (LX_Value);

הקוד שלהלן הוא המקום בו אנו מקודדים את סרוונו השולטים בזרוע הרובוטית שלנו אותה אנו כוללים בשיחת הפונקציה תחת ps2x.button (PSB_L1) || כפתור ps2x. (PSB_R1).

עליך ללחוץ על כפתור L1 או R1 יחד עם הג'ויסטיק כדי לשלוט בזרוע הרובוטית שלך.

סרוו השליטה של הג'ויסטיק השמאלי 2 ו -3 לחלק הזרוע - שולטים בכיפוף כלפי מעלה ומטה של הזרוע בהתאמה, בעוד שמג'ויסטיק הימני שולט בסרבים 0 ו -1 בטופר הזרוע הרובוטית לפתיחה או סגירה ולסיבוב שמאלה או ימינה.

SERVO 0, 1 - טופר SERVO 2, 3 - זרוע

תוכל לבצע שינויים בערכים בסעיף זה כדי לשלוט במידת זווית הזרוע הרובוטית שלך:

pulselen0 = map (RY_Value, 0, 127, SERVOMIN0, SERVOMAX0); pulselen1 = מפה (RX_Value, 0, 127, SERVOMIN0, SERVOMAX0); pulselen2 = מפה (LY_Value, 0, 127, SERVOMIN2, SERVOMAX2); pulselen3 = מפה (LX_Value, 0, 255, SERVOMIN3, SERVOMAX3);

מוּמלָץ: