תוכן עניינים:
- שלב 1: דרושה חומרה
- שלב 2: הרכבת המארז
- שלב 3: הרכבת האלקטרוניקה
- שלב 4: הוספת מצלמת האינטרנט
- שלב 5: חיווט הכל
- שלב 6: הגדרת ה- RPI
- שלב 7: הגדרת היציאה הטורית של RPI
- שלב 8: התקנת מודולי פייתון
- שלב 9: הגדרת RoboClaw
- שלב 10: התקנת תוכנית/קבצים של רובר
- שלב 11: הפעלת Bot Up
- שלב 12: גישה לדף בקרת הבוט
- שלב 13: קוד Python/Flask
- שלב 14: שימוש בחומרה אחרת
וִידֵאוֹ: רובר מבוקר אינטרנט: 14 שלבים (עם תמונות)
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:15
בנייה ומשחק עם רובוטים היא ההנאה העיקרית שלי באשמה בחיים. אחרים משחקים גולף או סקי, אבל אני בונה רובוטים (כיוון שאני לא יכול לשחק גולף או לעשות סקי:-). אני מוצא את זה מרגיע ומהנה! כדי להכין את רוב הבוטים שלי, אני משתמש בערכות שלדה. שימוש בערכות עוזר לי לעשות את מה שאני אוהב לעשות יותר, את התוכנה והאלקטרוניקה וגם יוצר שלדה טובה יותר לעצמי של כל האגודלים.
במדריך זה נבדוק מה נדרש כדי ליצור רובר פשוט אך חזק, המבוסס על רשת Wifi/אינטרנט. המארז המשמש הוא ה- Actobotics Gooseneck. בחרתי בו בגלל גודלו, יכולת ההרחבה והמחיר, אך ניתן להשתמש בכל מארז אחר שתבחר.
לפרויקט כזה נזדקק למחשב לוח יחיד מוצק טוב ובשביל הבוט הזה בחרתי להשתמש ב- Raspberry Pi (RPI) מחשב מבוסס לינוקס. ה- RPI (ו- Linux) נותן לנו הרבה אפשרויות קידוד ופייתון ישמש את הצד לקידוד. עבור ממשק האינטרנט אני משתמש ב- Flask, מסגרת אינטרנט קלילה עבור Python.
כדי להניע את המנועים, בחרתי ב- RoboClaw 2x5a. היא מאפשרת תקשורת סדרתית פשוטה לפיקוד עליה ועובדת היטב עם ה- RPI והמנועים על הגוזן.
לבסוף, יש לה מצלמת אינטרנט למשוב וידאו מסוג POV לנהיגה מרחוק. אעסוק בכל נושא ביתר פירוט בהמשך.
שלב 1: דרושה חומרה
- מארז Actobotics Gooesneck או תחליף מתאים לבחירתכם
- פטל פאי לבחירתך (או שיבוט) - דגם RPI B משמש בבוט זה, אך כל אחד עם לפחות שתי יציאות USB יעבוד
- צלחת סרוו סטנדרטית B x1
- סוגר תעלת זווית אחת 90 ° x1
- נהג מנוע RoboClaw 2x5a
- סרוו S3003 או דומה בגודל סטנדרטי
- קרש לחם קטן או מיני לחם
- חוטי מגשר נקבה לנקבה
- חוטי מגשר זכר לנקבה
- מצלמת אינטרנט (אופציונלי) - אני משתמש ב- Logitech C110, והנה רשימה של מצלמות נתמכות עבור ה- RPI
- מקור כוח 5v-6v עבור כוח סרוו
- סוללת 7.2v-11.1v להפעלת מנוע הכונן
- 5V 2600mah (ומעלה) בנק כוח USB ל- RPI
- מתאם Wifi USB
בבוט שלי אני משתמש בגלגלים בגודל 4 אינץ 'כדי להפוך אותו לקצת יותר שטח-פנימי. בשביל אפשרות זו תזדקק ל:
- 4 "גלגל כבד x2
- רכזת בורג סט 4 מ"מ (0.770 אינץ ') x2
שלב 2: הרכבת המארז
ראשית הרכיב את המארז בהתאם להוראות המצורפות לשלדה או לסרטון. לאחר סיום צריך להיות משהו כמו התמונה. הערה: בעת הרכבת חלק הצוואר, השאר את תושבת ההרכבה כבויה.
בבוט שלי בחרתי להחליף את הגלגלים שאיתם הגיע השלדה לגלגלים כבדים בגודל 4 אינץ '. זה אופציונלי ואין צורך אלא אם כן אתה רוצה לעשות את אותו הדבר.
שלב 3: הרכבת האלקטרוניקה
לגוזן יש הרבה מקום ואפשרויות להתקנת האלקטרוניקה שלך. אני נותן לך את התמונות האלה כקו מנחה, אבל אתה יכול לבחור כיצד תרצה לפרוס את הכל. אתה יכול להשתמש בסטנד-אפים, סרט דו-צדדי, סקוטש או סרוו-טייפ להרכבת הלוח והסוללות.
שלב 4: הוספת מצלמת האינטרנט
קח את סוגר 90 מעלות, רכזת סרוו קלה וארבעה (4) מברגי.3125 לשלב זה:
- קח את רכזת סרוו והנח אותו בצד אחד של התושבת והדק אותם יחד עם הברגים.2125 "כפי שמוצג בתמונה
- לאחר מכן הרכיב את הסרוו לתושבת הסרוו
- חבר את סוגר ה 90 מעלות עם קרן הסרוו לעמוד השדרה של הסרוווס והשתמש בבורג הצופר שהגיע עם הסרוו כדי לחבר אותם יחד.
- כעת הרכיב את סרוו בסוגר על החלק העליון של צוואר האווז עם הברגים הנותרים
- הרכבו את המצלמה עם קשרים או סרט דו צדדי על סוגר 90 מעלות
השתמש בתמונות למדריכים במידת הצורך.
שלב 5: חיווט הכל
החיווט די קדימה עבור הרובוט הזה.
המוטורים:
הלחמות מוליכות על שני המנועים אם עדיין לא עשית זאת
כשהחזית של הרובוטים (הקצה עם צוואר האווז) פונה ממך:
- חבר את חוטי המנוע במנוע השמאלי לערוץ M1A ו- M1B
- חבר את חוטי המנוע במנוע הימני לערוץ M2A ו- M2B
חיבורי קרקע (GND):
- חבר סיכת הארקה אחת על RoboClaw ללוח המגשר הקרקע. קו הסיכה הקרקע ברובוקלו הכי קרוב למרכז (ראה תמונה)
- חבר את PIN 6 ב- RPI ללוח המגשר. עיין בתמונת הכותרת של RPI לצורך הקצאת סיכות.
- חבר את ה- GND מחבילת סוללות הסרוו לאחד הפינים בלוח המגשר.
- הפעל חוט מגשר מלוח המגשר אל חוט ה- GND של סרוווס.
RPI ל- RoboClaw:
חבר את סיכת TXP RIO GPIO14 לסיכה של RoboClaw S1
כּוֹחַ:
- חבר את חוט ה- POS מסוללת הסרווו אל מוביל ה- POS של ה- servos
- חבר את חוט ה- POS מסוללת המנוע ל- POS (+) של מסוף הכניסה של מנוע RoboClaw. נשאיר את מסוף ה- GND מנותק לעת עתה.
שלב 6: הגדרת ה- RPI
אני מניח שהמשתמש כאן יודע קצת על לינוקס ועל ה- RPI. אני לא מפרט כיצד להתקין או להתחבר לאחד. אם אתה צריך עזרה עם זה, השתמש בדפים הבאים.
כדי לקבל את הגדרת ה- RPI שלך, עיין בדפים הבאים:
- התקנה בסיסית של RPI
- מדריך התחלה מהירה של RPI
- NOOBS הגדרת גילדה
לדפי קפיצה כלליים, הדף הראשי של RPI ודפי eLinux הם מקומות מצוינים להתחיל בהם.
עיין בקישור זה להתקנת Wi -Fi כללית של RPI.
אם אתה מתכנן להשתמש במצלמה או במצלמת אינטרנט כלשהי בבוט, עיין בדפים אלה כדי לקבל את הקבצים הבסיסיים הדרושים.
- הגדרת מצלמת RPI
- התקנת מצלמת eLinix RPI
הזרמת וידאו:
יש כמה דרכים לגרום להזרמת וידאו לעבוד על RPI, אבל השיטה שאני מעדיף היא באמצעות Motion.
כדי להתקין אותו ב- RPI שלך הפעל זאת: sudo apt-get install motion
מדריך זה עובר על הגדרת אותו גם לסטרימינג.
שלב 7: הגדרת היציאה הטורית של RPI
נצטרך להשבית את מצב קונסולת לינוקס לשימוש ב- RX ו- TX מכיוון שנרצה לדבר עם בקר המנוע RoboClaw מהיציאה הזו. לשם כך, תוכל להשתמש בשיטה זו או בכלי זה. הבחירה היא שלך בשיטה מכיוון ששניהם עושים את אותו הדבר בסופו של דבר.
שלב 8: התקנת מודולי פייתון
יהיה עליך להתקין פייתון ב- RPI כמו גם על פיפ ההתקנה של חבילת פייתון.
כדי להתקין pip לעשות:
- sudo apt-get להתקין python-setuptools
- sudo easy_install pip
לאחר מכן:
- בקבוק ההתקנה של sudo pip
- sudo pip התקן pyserial
- sudo pip התקן RPIO
אלה יהיו כל המודולים הדרושים להפעלת הקוד.
שלב 9: הגדרת RoboClaw
יש לי את קוד הרובוט מדבר עם RoboClaw במצב סידורי סטנדרטי ב -19200 שידור.
כדי להגדיר את RoboClaw לשם כך בצע:
- לחץ על כפתור "MODE" ברובוקלאו
- לחץ על כפתור ההגדרה עד שהנורית מהבהבת 5 (חמש) פעמים בין העיכובים
- לחץ על כפתור "LIPO" לאחסון
- לאחר מכן לחץ על כפתור "SET" עד שהנורית מהבהבת 3 (שלוש) פעמים בין העיכובים
- לחץ על כפתור LIPO לאחסון
זהו זה להגדרת בקר המנוע. עיין בקובץ ה- pdf המקושר למעלה לעיל למידע נוסף במידת הצורך.
שלב 10: התקנת תוכנית/קבצים של רובר
הורד והעתק את הקובץ rover.zip ל- RPI שלך בספריית המשתמש שלך ב- pi.
אם אתה מפעיל Linux או Mac, תוכל לעשות זאת באמצעות 'scp':
scp ~/location/of/the/file/rover.zip pi@your_rpi_ip:/~
עבור Windows, תוכל להוריד ולהשתמש ב- pscp ולאחר מכן בצע:
pscp /location/of/the/file/rover.zip pi@your_rpi_ip:/~
לאחר העתקת ה- zipfile ל- RPI, היכנס אליו כמשתמש pi.
עכשיו רץ:
לפתוח rover.zip
פעולה זו תפתח את הקבצים לתיקיה בשם 'רובר' ותכלול את הפריטים הבאים מתחת לתיקיה זו:
- restrover.py (קוד הפיתון של הרובוט)
- סטטי (מחזיק את קבצי התמונות של הכפתורים בדף הבקרה)
- תבניות (מכיל את קובץ index.htlm, דף האינטרנט של הפקד)
אם אתה משתמש במצלמת אינטרנט, שנה את השורה הקרובה לתחתית הקובץ index.html בתיקיית התבנית. שנה את כתובת האתר בשורת IFRAME כך שתתאים לכתובת ה- src של זרם הווידאו שלך.
שלב 11: הפעלת Bot Up
חבר את מתח ה- USB ל- RPI.
כדי להפעיל את קוד הבוט, היכנס כמשתמש pi והפעל:
- תקליטור רובר
- sudo python restrover.py
אם הכל בסדר, אתה אמור לראות מסך הדומה לתמונה בשלב זה
אם אתה רואה שגיאות או בעיות, יהיה עליך לתקן אותן לפני שתמשיך.
כעת, חבר את חוט ה- GND (-) למסוף NEG (-) בכניסת החשמל של מנוע RoboClaw.
שלב 12: גישה לדף בקרת הבוט
לאחר הפעלת סקריפט הפיתון של הרובוט, הפעל את RoboClaw ולאחר מכן נווט אל ה- IP של ה- RPI שלך כמו:
your_rpi_ip
אתה אמור לראות את דף בקרת האינטרנט צץ כמו בתמונות. אם לא, בדוק את מסוף הפלט RPI שלך וחפש שגיאות ותקן אותן.
לאחר שנמצא בדף, אתה מוכן לשלוט בבוט.
הרובוט יתחיל בהגדרת "ריצת מד" ובמהירות בינונית.
ניתן לשלוט בבוט באמצעות הכפתורים בדף או באמצעות מקשים במקלדת.
המפתחות הם:
- w - קדימה
- z - הפוך/לאחור
- א - פנייה שמאלה ארוכה
- s - סיבוב ימינה ארוך
- q - סיבוב קצר שמאלה
- e - סיבוב קצר ימינה
- 1 - מצלמת פאן שמאלה
- 2 - מצלמת פאן ימינה
- 3 - מחבת מלאה שמאל
- 4 - מחבת ימנית מלאה
- / - מצלמה ביתית/ מרכזית
- h - עצור/עצור רובוט
יש חיץ עיכוב של חצי שניות בין הפקודות שנשלחות. עשיתי זאת כדי לחסל פקודות חוזרות ולא רצויות. אתה כמובן יכול להסיר את זה מהקוד אם תרצה (ב- index.html)
שאר הפקדים ושליטה בהם צריכים להיות מסבירים את עצמם.
שלב 13: קוד Python/Flask
בוט זה משתמש ב- Python ובמסגרת האינטרנט Flask. תוכל ללמוד עוד על בקבוק כאן אם אתה מעוניין בכך.
ההבדל הגדול מאפליקציית Flask ומסקריפט Python רגיל הוא @app.route class/שיטה המשמשת לביצוע הטיפול ב- URI. חוץ מזה זה פייתון די רגיל לרוב.
#!/usr/bin/env python
# # רובר Wifi/אינטרנט מונע # # נכתב על ידי סקוט ביזלי - 2015 # # משתמש ב- RPIO, pyserial ובבקבוק # זמן ייבוא סדרתי של ייבוא מ- RPIO ייבוא PWM מתוך בקבוק ייבוא בקבוקים, render_template, בקשת אפליקציה = בקבוק (_name_, static_url_path = ") # התחבר ליציאת הקומקום כדי לדבר עם בקר המנוע של רובוקלאו נסה: # שנה את קצב השידור כאן אם הוא שונה מ- 19200 roboclaw = serial. Serial ('/dev/ttyAMA0', 19200) למעט IOError: print ("יציאת Comm לא נמצא ") sys.exit (0) # משתני בקרת מהירות והנעה last_direction = -1 speed_offset = 84 turn_tm_offset = 0.166 run_time = 0.750 # Servo_pos = home servo_pos = 1250 servo = PWM. Servo () servo.set_servo (18, servo_pos) # התעכבות קטנה ליישוב זמן הזמן. שינה (3) # # מטפלים ב- URI - כל פעולות דף הבוט נעשות כאן # # שלח את דף הבקרה של הרובוטים (דף הבית) @app.route ("/") def index (): return render_template ('index.html', name = None) @app.route ("/קדימה") def forward (): global_direction global, run_ti אני מדפיס "קדימה" go_forward () last_direction = 0 # שינה 100ms + ריצה_זמן time.sleep (0.100 + run_time) # אם לא רציף, אז עצור לאחר עיכוב אם run_time> 0: last_direction = -1 עצור () החזר "בסדר" @ app.route ("/לאחור") def לאחור (): global_direction global, run_time הדפסה "אחורה" go_backward () last_direction = 1 # שינה 100 ms + run_time time.sleep (0.100 + run_time) # אם לא רציף, אז עצור לאחר עיכוב אם run_time> 0: last_direction = -1 halt () החזר "בסדר" @app.route ("/left") def left (): global_direction global, turn_tm_offset print "Left" go_left () last_direction = -1 # sleep @1 /2 שניות time.sleep (0.500 - turn_tm_offset) # stop stop () time.sleep (0.100) החזר "בסדר" @app.route ("/ימין") def right (): global_direction global, turn_tm_offset הדפס "ימין" go_right () # שינה @1/2 פעם השנייה. שינה (0.500 - turn_tm_offset) last_direction = -1 # עצור עצירה () time.sleep (0.100) החזר "בסדר" @app.route ("/ltforward") def ltforward (): כיוון אחרון_גלובלי, turn_t הדפס m_offset "סיבוב שמאלה קדימה" go_left () # שינה @1/8 פעם שניה. שינה (0.250 - (turn_tm_offset / 2)) last_direction = -1 # עצור עצירה () time.sleep (0.100) חזור "בסדר" @app.route ("/rtforward") def rtforward (): global_direction global, turn_tm_offset הדפסה "פנייה ימינה קדימה" go_right () # sleep @1/8 פעם שניה. שינה (0.250 - (turn_tm_offset/2)) last_direction = -1 # stop stop () time.sleep (0.100) return "ok" @app.route ("/stop") def stop (): global last_direction הדפס "עצור" stop () last_direction = -1 # שינה 100ms time.sleep (0.100) החזר "ok" @app.route ("/panlt") def panlf (): servo_pos העולמי הדפס "Panlt" servo_pos -= 100 אם servo_pos 2500: servo_pos = 2500 servo.set_servo (18, servo_pos) # שינה 150ms זמן. sleep (0.150) החזר "בסדר" @app.route ("/home") def home (): servo_pos העולמי הדפס "Home" servo_pos = 1250 servo.set_servo (18, servo_pos) # שינה 150ms time.sleep (0.150) חזרה "בסדר" @app.route ("/panfull_lt") def panfull_lt (): הדפסה servo_pos גלובלית "פאן מלא l eft "servo_pos = 500 servo.set_servo (18, servo_pos) # שינה 150ms time.sleep (0.150) החזר" בסדר " @app.route ("/panfull_rt ") def panfull_rt (): servo_pos גלובלי הדפס" pan full right "servo_pos = 2500 servo.set_servo (18, servo_pos) # שינה 150ms time.sleep (0.150) החזר "בסדר" @app.route ("/speed_low") def speed_low (): global_offset, last_direction, turn_tm_offset speed_offset = 42 turn_tm_offset = 0.001 # עדכן את הכיוון הנוכחי כדי לקבל מהירות חדשה אם last_direction == 0: go_forward () if last_direction == 1: go_backward () # sleep 150ms time.sleep (0.150) return "ok" @app.route ("/speed_mid") def speed_mid (): speed_offset גלובלי, last_direction, turn_tm_offset speed_offset = 84 turn_tm_offset = 0.166 # עדכן את הכיוון הנוכחי כדי לקבל מהירות חדשה אם last_direction == 0: go_forward () אם last_direction == 1: go_backward () # שינה 150ms זמן. שינה (0.150)) החזר "בסדר" @app.route ("/speed_hi") def speed_hi (): global_offset, last_direction, turn_tm_offset speed_offset = 126 tur n_tm_offset = 0.332 # עדכן את הכיוון הנוכחי כדי לקבל מהירות חדשה אם last_direction == 0: go_forward () if last_direction == 1: go_backward () # שינה 150ms time.sleep (0.150) החזר "בסדר" @app.route ("/רציף ") def continu (): הדפסה מקיפה של run_time" ריצה מתמשכת "run_time = 0 # שינה 100ms time.sleep (0.100) החזרה" בסדר " @app.route ("/mid_run ") def mid_run (): הדפסה_הפעלה של זמן ריצה" אמצע run "run_time = 0.750 halt () # sleep 100ms time.sleep (0.100) return" ok " @app.route ("/short_time ") def short_time (): global run_time print" ריצה קצרה "run_time = 0.300 halt () # שינה 100 ms time.sleep (0.100) החזר "בסדר" # # פונקציות כונן המנוע # def go_forward (): speed_offset גלובלי אם speed_offset! = 42: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (128 + speed_offset)) else: roboclaw.write (chr (127 - speed_offset)) roboclaw.write (chr (255 - speed_offset)) def go_backward (): global_offset אם speed_offset! = 42: roboclaw.write (chr (127 - speed_offset)) roboclaw.wri te (chr (255 - speed_offset)) else: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (128 + speed_offset)) def go_left (): speed_offset גלובלי אם speed_offset! = 42: roboclaw.write (chr (127 - speed_offset)) roboclaw.write (chr (128 + speed_offset)) else: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (255 - speed_offset)) def go_right (): global_offset off speed_offset! = 42: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (255 - speed_offset)) else: roboclaw.write (chr (127 - speed_offset)) roboclaw.write (chr (128 + speed_offset)) def halt (): roboclaw.write (chr (0)) אם _name_ == "_main_": app.run (host = '0.0.0.0', port = 80, debug = True)
אם אינך רוצה או צריך מידע על איתור באגים מ- Flask, הגדר באגים ל- 'false' בשורת app.run.
אם _name_ == "_ עיקר_":
app.run (host = '0.0.0.0', port = 80, debug = False)
תוכל גם לשנות את היציאה בה שרת http הבקבוק מאזין גם כאן.
שלב 14: שימוש בחומרה אחרת
אם אתה רוצה להשתמש בחומרה אחרת, כמו סוג אחר של SBC (מחשב לוח יחיד), לא יהיו לך בעיות קטנות בהפעלת פייתון ובקבוק על לוחות אחרים כמו עצם הביגל, PCDuino וכו '… יהיה עליך לשנות את הקוד כך שיתאים ל- GPIO. פריסה והשתמש ביכולות נהיגת סרוו של הלוח החדש.
כדי להשתמש בנהג מנוע מסוג אחר, אתה רק צריך לשנות את הפונקציות go_forward, go_backward, go_left, go_right ולעצור את כל מה שהנהג המנוע החלופי צריך כדי לגרום למנוע לבצע את הפונקציה הספציפית הזו.
מוּמלָץ:
רובר מבוקר Bluetooth עם דקסטר: 9 שלבים
רובר מבוקר Bluetooth עם דקסטר: לוח דקסטר הוא ערכת מאמנים חינוכית שהופכת את לימוד האלקטרוניקה לכייף וקל. הלוח מאגד את כל החלקים הדרושים שמתחיל דורש כדי לשנות רעיון לאב טיפוס מוצלח. עם ארדואינו בלב, מספר עצום של
כיצד לבצע רובר מבוקר מחווה: 4 שלבים
כיצד להפוך רובר מבוקר מחווה: להלן ההנחיות לבניית רובר מבוקר מחוות (רובר מופעל בטלוויזיה). הוא מורכב מיחידת רוברים בעלת חיישן הימנעות מהתנגשות. המשדר במקום להיות שלט מגושם הוא כפפה מגניבה שניתן ללבוש אותה
כיצד להכין רובר מבוקר אנדרואיד: 8 שלבים (עם תמונות)
כיצד להכין רובר מבוקר אנדרואיד: במדריך זה אני הולך להראות לך כיצד לבנות מכונית או רובר נשלט על אנדרואיד. כיצד פועל הרובוט הנשלט על ידי אנדרואיד? הרובוט הנשלט על ידי יישומי אנדרואיד מתקשר באמצעות בלוטות 'למודול בלוטות' הנמצא ברובד
רובוט מבוקר ESP8266 WIFI AP מבוקר: 15 שלבים (עם תמונות)
ESP8266 WIFI AP נשלט רובוט מרובע: זהו הדרכה להכנת רובוט 12 DOF או ארבע רגליים (מרובע) באמצעות סרוו SG90 עם נהג סרוו וניתן לשלוט בו באמצעות שרת אינטרנט WIFI באמצעות דפדפן הסמארטפון העלות הכוללת של הפרויקט הוא בסביבות 55 דולר ארה"ב (עבור חלק אלקטרוני ושוד פלסטיק
כלב בוט: לגו רובוט רובר עם מצלמת אינטרנט: 17 שלבים (עם תמונות)
כלב בוט: רובו רובו לגו עם מצלמת רשת: כך תוכלו ליצור רובוט לגו עליו תוכלו לשלוט מכל מסך באמצעות wifi. יש לה גם מצלמת רשת כך שתוכל לראות לאן אתה נוסע ונורות LED לעיניים! זהו פרויקט נהדר לעשות עם ילדיכם מכיוון שהם יכולים לבנות את הלוגו ואתם יכולים לערב