
אין ספק שרבים מכם ראיתם בסרטי מדע בדיוני כיצד למדען או לחנון יש זרוע רובוטית השולטת בכל דבר ויכולה להרים חפצים או לבצע פונקציות כאילו מדובר באדם אנושי. משהו שהופך אפשרי יותר ויותר בזכות חומרה בחינם ופרויקט Arduino. אבל מהי זרוע רובוטית? אילו פונקציות יש לגאדג'ט הזה? כיצד בונים זרוע רובוטית? בהמשך אנו נענה על כל השאלות הללו.
מהי זרוע רובוטית
זרוע רובוטית היא זרוע מכנית עם בסיס אלקטרוני המאפשרת לתכנות באופן מלא. בנוסף, זרוע מסוג זה יכולה להיות אלמנט יחיד אך היא יכולה להיות גם חלק מרובוט או ממערכת רובוטית אחרת. האיכות של זרוע רובוטית בהשוואה לסוגים אחרים של אלמנטים מכניים היא זו זרוע רובוטית ניתנת לתכנות לחלוטין ואילו שאר המכשיר אינו. פונקציה זו מאפשרת לנו זרוע רובוטית אחת לפעולות שונות ולבצע פעילויות שונות ושונות שונות, פעילויות שניתן לבצע בזכות לוחות אלקטרוניים כגון לוחות ארדואינו.
פונקציות של זרוע רובוטית
אולי הפונקציה הבסיסית ביותר של זרוע רובוטית היא פונקציית זרוע העזר. בחלק מהפעולות נצטרך זרוע שלישית שתומכת באלמנט כלשהו, כך שאדם יכול לבנות או ליצור משהו. עבור פונקציה זו אין צורך בתכנות מיוחד ונצטרך לכבות רק את המכשיר עצמו.
ניתן לבנות זרועות רובוטיות עם חומרים שונים המאפשרים להשתמש בהן כתחליף לפעולות מסוכנות. כמו מניפולציה של יסודות כימיים מזהמים. זרוע רובוטית יכולה גם לעזור לנו לבצע משימות כבדות או כאלה שדורשות לחץ הולם, כל עוד היא בנויה מחומר חזק ועמיד.
חומרים הדרושים לבנייתו
בהמשך אנו נלמד אותך כיצד לבנות זרוע רובוטית בצורה מהירה, פשוטה וחסכונית לכולם. עם זאת, זרוע רובוטית זו לא תהיה עוצמתית או שימושית כמו הזרועות שאנו רואים בסרטים אלא תשמש ללמוד על פעולתה והקמתה. אז זה, החומרים שנצטרך לבנות מכשיר זה הם:
- צלחת Arduino UNO REV3 ומעלה.
- שני לוחות פיתוח.
- שני סרוו צירים במקביל
- שני מיקרו סרוו
- שני פקדים אנלוגיים במקביל
- כבלים מגשרים ללוחות פיתוח.
- סרט דבק
- קרטון או לוח קצף למעמד.
- חותך ומספריים.
- הרבה סבלנות.
הַרכָּבָה
הרכבת הזרוע הרובוטית הזו היא די פשוטה. ראשית עלינו לחתוך שני מלבנים עם הקצף; כל אחד מהמלבנים הללו יהיה חלק מהזרוע הרובוטית. כפי שניתן לראות בתמונות, המלבנים הללו יצטרכו להיות בגודל הרצוי לנו, אם כי מומלץ גודלו של אחד מהם הוא 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



