איך לבנות זרוע רובוטית עם מעט כסף

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

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

מהי זרוע רובוטית

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

פונקציות של זרוע רובוטית

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

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

חומרים הדרושים לבנייתו

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

  1. צלחת  Arduino UNO REV3 ומעלה.
  2. שני לוחות פיתוח.
  3. שני סרוו צירים במקביל
  4. שני מיקרו סרוו
  5. שני פקדים אנלוגיים במקביל
  6. כבלים מגשרים ללוחות פיתוח.
  7. סרט דבק
  8. קרטון או לוח קצף למעמד.
  9. חותך ומספריים.
  10. הרבה סבלנות.

הַרכָּבָה

הרכבת הזרוע הרובוטית הזו היא די פשוטה. ראשית עלינו לחתוך שני מלבנים עם הקצף; כל אחד מהמלבנים הללו יהיה חלק מהזרוע הרובוטית. כפי שניתן לראות בתמונות, המלבנים הללו יצטרכו להיות בגודל הרצוי לנו, אם כי מומלץ גודלו של אחד מהם הוא 16,50 x 3,80 ס"מ. והמלבן השני בגודל הבא 11,40 x 3,80 ס"מ.
מיקום הסרום על הזרוע הרובוטית.

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

הצטרפות לחלקי הזרוע הרובוטית

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

בסיס זרועות רובוטי

כעת עלינו לחבר את כל המנועים ללוח הארדואינו. אך ראשית, עלינו לחבר את החיבורים ללוח הפיתוח וזה ללוח הארדואינו. נחבר את החוט השחור לסיכה GND, את החוט האדום נחבר לסיכה 5V ואת החוטים הצהובים ל -11, -10, 4 ו -3. אנו נחבר גם את הג'ויסטיקים או את הפקדים של הזרוע הרובוטית ללוח הארדואינו, במקרה זה כפי שהתמונה מציינת:

תרשים חיבור זרוע רובוטית

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

תוכנה הנדרשת להפעלה

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

זה נפתר על ידי חיבור לוח הארדואינו למחשב שלנו ואנחנו פותחים את התוכנית Arduino IDE, אנו מחברים את המחשב ללוח וכותבים את הקוד הבא בקובץ ריק:

#include <Servo.h>

const int servo1 = 3;       // first servo

const int servo2 = 10;      // second servo

const int servo3 = 5;       // third servo

const int servo4 = 11;      // fourth servo

const int servo5 = 9;       // fifth servo

const int joyH = 2;        // L/R Parallax Thumbstick

const int joyV = 3;        // U/D Parallax Thumbstick

const int joyX = 4;        // L/R Parallax Thumbstick

const int joyP = 5;        // U/D Parallax Thumbstick

const int potpin = 0;      // O/C potentiometer

int servoVal;           // variable to read the value from the analog pin

Servo myservo1;  // create servo object to control a servo

Servo myservo2;  // create servo object to control a servo

Servo myservo3;  // create servo object to control a servo

Servo myservo4;  // create servo object to control a servo

Servo myservo5;  // create servo object to control a servo

void setup() {

// Servo

myservo1.attach(servo1);  // attaches the servo

myservo2.attach(servo2);  // attaches the servo

myservo3.attach(servo3);  // attaches the servo

myservo4.attach(servo4);  // attaches the servo

myservo5.attach(servo5);  // attaches the servo

// Inizialize Serial

Serial.begin(9600);

}

void loop(){

servoVal = analogRead(potpin);

servoVal = map(servoVal, 0, 1023, 0, 179);

myservo5.write(servoVal);

delay(15);

// Display Joystick values using the serial monitor

outputJoystick();

// Read the horizontal joystick value  (value between 0 and 1023)

servoVal = analogRead(joyH);

servoVal = map(servoVal, 0, 1023, 0, 180);     // scale it to use it with the servo (result  between 0 and 180)

myservo2.write(servoVal);                         // sets the servo position according to the scaled value

// Read the horizontal joystick value  (value between 0 and 1023)

servoVal = analogRead(joyV);

servoVal = map(servoVal, 0, 1023, 70, 180);     // scale it to use it with the servo (result between 70 and 180)

myservo1.write(servoVal);                           // sets the servo position according to the scaled value

delay(15);                                       // waits for the servo to get there

// Read the horizontal joystick value  (value between 0 and 1023)

servoVal = analogRead(joyP);

servoVal = map(servoVal, 0, 1023, 70, 180);     // scale it to use it with the servo (result between 70 and 180)

myservo4.write(servoVal);                           // sets the servo position according to the scaled value

delay(15);                                       // waits for the servo to get there

// Read the horizontal joystick value  (value between 0 and 1023)

servoVal = analogRead(joyX);

servoVal = map(servoVal, 0, 1023, 70, 180);     // scale it to use it with the servo (result between 70 and 180)

myservo3.write(servoVal);                           // sets the servo position according to the scaled value

delay(15);                                       // waits for the servo to get there

/**

* Display joystick values

*/

void outputJoystick(){

Serial.print(analogRead(joyH));

Serial.print ("---");

Serial.print(analogRead(joyV));

Serial.println ("----------------");

Serial.print(analogRead(joyP));

Serial.println ("----------------");

Serial.print(analogRead(joyX));

Serial.println ("----------------");

}

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

יש לי כבר רכוב אותו, עכשיו מה?

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

עוד מידע - Instructables