כיצד להכין זרוע רובוטית מבוקרת באמצעות Arduino ו- Bluetooth?

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



זרוע רובוטית

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



כיצד לשלוט בזרוע רובוטית באמצעות ארדואינו?

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



שלב 1: איסוף הרכיבים

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



  • משדר סידורי אלחוטי Bluetooth HC-05
  • מתאם 6V
  • חוטי מגשר
  • קרש לחם

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

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

ארדואינו ננו הוא לוח מיקרו-בקר שמבצע פעולות שונות במעגלים שונים. זה דורש קוד C זה אומר ללוח אילו משימות לבצע ואיך. יש לו 13 סיכות קלט / פלט דיגיטליות שמשמעותן שאנחנו יכולים להפעיל 13 מכשירים שונים. ל- Arduino Nano יש בדיוק אותה פונקציונליות כמו ל- Arduino Uno אבל בגודל די קטן. המיקרו-בקר על לוח ה- Arduino Nano הוא ATmega328p. אם ברצונך לשלוט ביותר מ -13 מכשירים, השתמש ב- Arduino Mega.

ארדואינו ננו



משדר סידורי אלחוטי Bluetooth HC-05 : אנו זקוקים לתקשורת אלחוטית בפרויקט זה, ולכן נשתמש בטכנולוגיית Bluetooth ולמודול זה שישמש הוא HC-05. למודול זה מספר קצב שידור לתכנות אך קצב שידור ברירת המחדל הוא 9600 bps. ניתן להגדיר אותו כמאסטר או כעבד, ואילו מודול אחר HC-06 יכול לעבוד רק במצב עבדים. למודול זה ארבעה פינים. אחד עבור VCC (5V) ושלושת הנותרים עבור GND, TX ו- RX. סיסמת ברירת המחדל של מודול זה היא 1234 אוֹ 0000 . אם אנו רוצים לתקשר בין שני מיקרו-בקרים או לתקשר עם כל מכשיר עם פונקציונליות Bluetooth כמו טלפון או מחשב נייד HC-05 עוזר לנו לעשות זאת. מספר יישומי אנדרואיד כבר זמינים מה שמקל מאוד על תהליך זה.

מודול Bluetooth HC-05

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

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

שלב 3: הרכבת הרכיבים

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

  1. . חבר את לוח הארדואינו ננו על קרש הלחם. ה- Arduino יופעל באמצעות החוט החיובי והשלילי של המתאם.
  2. הנח גם את מודול ה- Bluetooth על לוח הלחם. הפעל את מודול ה- Bluetooth דרך Arduino. חבר את סיכת ה- Tx של מודול ה- Bluetooth לסיכת ה- Rx של לוח Arduino Nan וחבר את סיכת ה- Rx של מודול ה- Bluetooth לסיכת ה- Tx של לוח ה- Arduino Nano.
  3. כידוע ישנם 4 מנועי צעד. לכל אחד מהם יש שם טכני. הם נקראים מַרְפֵּק , כָּתֵף , בסיס, ו תפסן . ה- Vcc וה- Ground של כל המנועים יהיו משותפים ומחוברים לחיובי ולשלילי של מתאם 6V. סיכת האות של כל ארבעת המנועים תחובר ל- pin5, pin6, pin9 ו- pin11 של Arduino Nano.
  4. וודא כי החיבורים שביצעת הם על פי תרשים המעגל הבא.

    תרשים מעגל

שלב 4: תחילת העבודה עם Arduino

אם אינך מכיר את ה- Arduino IDE, אל תדאג מכיוון שמתואר בהליך שלב אחר שלב להגדרת ולהשתמש ב- Arduino IDE עם לוח מיקרו-בקר.

  1. הורד את הגרסה האחרונה של Arduino IDE מ ארדואינו.
  2. חבר את לוח ה- Arduino Nano למחשב הנייד שלך ופתח את לוח הבקרה. לאחר מכן לחץ על חומרה וסאונד . כעת לחץ על מכשירים ומדפסות. כאן מצא את היציאה שאליה מחובר לוח המיקרו שלך. במקרה שלי זה כן COM14 אבל זה שונה במחשבים שונים.

    מציאת נמל

  3. לחץ על תפריט הכלים והגדר את הלוח ל- ארדואינו ננו מהתפריט הנפתח.

    לוח הגדרה

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

    הגדרת נמל

  5. באותו תפריט כלים, הגדר את המעבד ל ATmega328P (Bootloader ישן).

    מעבד

  6. כדי לכתוב קוד להפעלת מנועי סרוו, אנו זקוקים לספרייה מיוחדת שתעזור לנו לכתוב מספר פונקציות עבור מנועי סרוו. ספרייה זו מצורפת יחד עם הקוד בקישור למטה. כדי לכלול את הספרייה לחץ על סקיצה> כלול ספרייה> הוסף ZIP. סִפְרִיָה.

    כלול ספרייה

  7. הורד את הקוד המצורף למטה והדבק אותו ב- ID Arduino שלך. הקלק על ה להעלות כפתור לצריבת הקוד בלוח המיקרו-בקר שלך.

    העלה

להורדת הקוד, לחץ כאן.

שלב 5: הורדת האפליקציה

כפי שהרכבנו כעת את כל המעגלים והעלינו את הקוד בלוח המיקרו-בקר. מאפשר להוריד אפליקציה ניידת שתעבוד כשלט רחוק לזרוע הרובוטית. אפליקציה חינמית זמינה בחנות Google Play. שם האפליקציה הוא שליטת רובוט זרוע קטנה . כדי ליצור חיבור Bluetooth, הפעל את ה- Bluetooth בנייד שלך. עבור אל ההגדרות והתאם את הנייד שלך עם מודול HC-05. לאחר שתעשה זאת, לחץ על כפתור ה- Bluetooth באפליקציה. אם הוא הופך לירוק, המשמעות היא שהאפליקציה מחוברת ומוכנה להפעלת הזרוע הרובוטית. ישנם מחוונים לקביעת הפעולה של הזרוע הרובוטית לפי הצורך.

אפליקציה

שלב 6: הבנת הקוד

הקוד מגיב היטב וקל להבנה. בר עדיין, מוסבר בקצרה להלן.

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

# כלול // ספריית ארדואינו # כלול // ספריית c סטנדרטית # הגדר PI 3.141 Servo baseServo; כתף סרוו סרוו; מרפק סרוו סרבו; תפס סרוו סרבו; פקודה int;

2. ואז מכריזים על מבנה שלוקח ערכים עבור מנועי סרוו הבסיס, הכתף והמרפק.

struct jointAngle {// declairing a int int base; כתף int; מרפק int; };

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

int wantedGrip; int gripperPos; int wantedDelay; int servoSpeed ​​= 15; int מוכן = 0; מבנה משותף זווית רצויה זווית; // זוויות רצויות של סרוו

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

הגדרת חלל () {Serial.begin (9600); baseServo.attach (9); // מצמיד את סרוו הבסיס על סיכה 9 לאובייקט סרוו כתףServo.attach (10); // מצמיד את סרוו הכתף על סיכה 9 לאובייקט סרוו elbowServo.attach (11); // מצמיד את סרוו המרפק על סיכה 9 לאובייקט סרוו gripperServo.attach (6); // מצמיד את סרוו האחיזה על סיכה 9 לאובייקט הסרו Serial.setTimeout (50); // מבטיח שהארדואינו לא יקרא סדרתי זמן רב מדי Serial.println ('התחיל'); baseServo.write (90); // עמדות ראשוניות של כתף סרוו סרוו.רייט (150); elbowServo.write (110); מוכן = 0; }

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

int servoParallelControl (int thePos, Servo theServo, int theSpeed) {int startPos = theServo.read (); // קרא את המיקום הנוכחי int newPos = startPos; // int theSpeed ​​= מהירות; // הגדירו היכן המיקום הוא ביחס לפקודה // אם המיקום הנוכחי הוא פחות מהעלייה בפועל אם (startPos (thePos + 5)) {newPos = newPos - 1; theServo.write (newPos); עיכוב (theSpeed); החזר 0; } אחר {להחזיר 1; }}

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

loop loop () {if (Serial.available ()) {ready = 1; wantedAngle.base = Serial.parseInt (); wantedAngle.shoulder = Serial.parseInt (); רצוי Angle.elbow = Serial.parseInt (); wantedGrip = Serial.parseInt (); wantedDelay = Serial.parseInt (); אם (Serial.read () == ' n') {// אם הבית האחרון הוא 'd', הפסק את הקריאה והפעל את הפקודה 'd' מייצגת את Serial.flush (); // נקה את כל הפקודות האחרות הנערמות במאגר // שלח השלמת הפקודה Serial.print ('d'); }} int status1 = 0; int status2 = 0; int status3 = 0; int status4 = 0; int נעשה = 0; בעוד (נעשה == 0 && מוכן == 1) {// מעבירים את סרוו למצב הרצוי למיקום status2 = servoParallelControl (wantedAngle.shoulder, shoulderServo, wantedDelay); status3 = servoParallelControl (רצוי Angel.elbow, elbowServo, רצוי Delay); status4 = servoParallelControl (רצויגריפ, גריפרסרו, רצוידלי); אם (status1 == 1 & status2 == 1 & status3 == 1 & status4 == 1) {done = 1}} // סוף זמן}

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