תוכן עניינים:
- שלב 1: רכיבים נדרשים
- שלב 2: הרכבת הרובוט
- שלב 3: צור מבוך משלך - אופציונלי
- שלב 4: הגדרת הסביבה
- שלב 5: תכנות ה- GiggleBot - חלק א '
- שלב 6: תכנות השלט - חלק ב '
- שלב 7: פרשנות המסך המרוחק
וִידֵאוֹ: צור רובוט מודרך לידאר עם הצ'גלבוט: 8 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:15
במדריך זה אנו גורמים ל- GiggleBot להתמודד עם הקשיים של מבוך.
אנו מתקינים סרוו ב- GiggleBot שעליו אנו מצמידים חיישן מרחק. תוך כדי ריצה, סרוו עומד להסתובב קדימה ואחורה, כך שחיישן המרחק יכול למדוד את המרחק עד כל מכשול. זה עובד בערך כמו חיישן LIDAR שהוא בדרך כלל הרבה יותר יקר.
במקביל, ה- GiggleBot שולח נתונים אלה למיקרו ביט: BBC המרוחק המציג על מטריצת נוריות ה -5 על 5 שלו את מיקומו היחסי למכשולים.
התפקיד שלך הוא להיות מסוגל לנווט ב- GiggleBot רק על ידי התבוננות במה שהוא מוצג במיקרו: bit השני של ה- BBC. כדי לשלוט ב- GiggleBot, משתמשים בכפתורים במיקרו: ביט המרוחק של ה- BBC.
זה נשמע כיף! בואו נרד, נכון?
שלב 1: רכיבים נדרשים
אנחנו נצטרך:
- בוג צחקק.
- מארז סוללות ל- micro: bit של BBC. הוא מגיע יחד עם מיקרו: ביט של BBC בחבילה שלו.
- סוללות x3 ל- GiggleBot.
- כבל גרוב לחיבור חיישן המרחק ל- GiggleBot.
- ערכת סרוו של חברת DexterIndustries.
- x3 BBC מיקרו: ביטים. אחד עבור GiggleBot ואחד שנהג לשלוט ברובוט מרחוק.
- חיישן מרחק של חברת DexterIndustries.
קבל את הרובוט GiggleBot עבור המיקרו של BBC: קצת כאן!
שלב 2: הרכבת הרובוט
כדי להפוך את ה- GiggleBot מוכן לתכנות, עלינו להרכיב אותו, אם כי אין הרבה מה לעשות.
הכנס את 3 סוללות ה- AA לתא שלה מתחת ל- GiggleBot.
הרכיבו את חבילת הסרוו. לזרוע המסתובבת של הסרוו, השתמש בחור האחרון שלו כדי לתקן את הסרוו על המחברים הקדמיים של ה- GiggleBot. אתה יכול להשתמש בבורג ו/או חוט כלשהו כדי להפוך אותו ליציב יותר במקומו. או שאתה יכול להדביק אותו חם ללוח. במקרה שלי, השתמשתי בבורג ובחוט קצר כדי לקשור את זרוע הסרוו ללוח GiggleBot.
בעת הרכבה של זרוע הסרוו על הסרוו, ודא שהסרוו כבר מכוון למיקום 80. תוכל לעשות זאת על ידי התקשרות ל- gigglebot.set_servo (gigglebot. RIGHT, 80). תוכל לקרוא עוד על כך כאן.
לאחר מכן, הנח את חיישן המרחק בצד הקדמי של חבילת הסרוווו ותקן אותו כמו בדוגמה לעיל.
לבסוף, חבר את חיישן המרחק עם כבל Grove לכל אחת משתי יציאות I2C ומנוע הסרווו ליציאה הימנית היושבת ב- GiggleBot - היציאה הנכונה מוזכרת עליו.
שלב 3: צור מבוך משלך - אופציונלי
במקרה זה, השתמשתי בחבורה של קופסאות ליצירת מסלול לולאה סגורה, בדומה למסלול של NASCAR.
בשלב זה, אתה יכול להיות יצירתי באמת ולהפוך אותו לכמה שאתה מעוות או להפוך אותו לסופר ארוך כי זה באמת תלוי בך.
או אם אתה לא רוצה מסלול בכלל, אתה יכול לשים את GiggleBot במטבח או בסלון למשל - זה אמור להיות מספיק טוב כי יש הרבה קירות ומכשולים שעדיין עליך להימנע מהם.
שלב 4: הגדרת הסביבה
על מנת שתוכל לתכנת את ה- micro: bit של ה- BBC ב- MicroPython, עליך להגדיר עורך עבורו (עורך מו) ולהגדיר את Runtime GiggleBot MicroPython כזמן הריצה שלו. לשם כך עליך לעקוב אחר ההוראות המופיעות בדף זה. נכון לרגע זה, נעשה שימוש בגרסה v0.4.0 של זמן הריצה.
שלב 5: תכנות ה- GiggleBot - חלק א '
ראשית, בואו להגדיר את התסריט של GiggleBot. תסריט זה יגרום ל- GiggleBot לסובב את מנוע הסרוו שלו 160 מעלות (80 מעלות לכל כיוון) ובמקביל לקחת 10 קריאות מחיישן המרחק לכל סיבוב.
כשהוא מופעל, ה- GiggleBot יעמוד ליד עד שהוא יקבל פקודה מהשלט הרחוק. יכולות להיות רק 3 פקודות: קדימה, שמאלה או ימינה.
הערה: ייתכן שהתסריט הבא חסר מרחבים לבנים ונראה שזה נובע מבעיה כלשהי בהצגת רשימות GitHub. לחץ על התמצית כדי להעביר אותך לדף GitHub שלו, שבו תוכל להעתיק ולהדביק את הקוד.
GiggleBot מבוסס LIDAR בשלט רחוק
מיבוא gigglebot* |
מאת distance_sensor יבוא DistanceSensor |
משינה של ייבוא מיקרוביט |
מאת utime יבוא ticks_us, sleep_us |
ייבוא מבנה |
ייבוא רדיו |
# עצור את הרובוט אם הוא כבר זז |
תפסיק() |
# אפשר רדיו |
radio.on () |
אובייקט חיישן מרחק # |
ds = DistanceSensor () |
ds.start_continuous () |
rotate_time = 0.7# נמדד בשניות |
rotate_span = 160# נמדד במעלות |
rotate_steps = 10 |
תקרה_תקורה = 1.05# המוגדרת באחוזים |
time_per_step = 10 ** 6* rotate_time / (rotate_steps* overhead_compensation) |
שעון אחרון = 0 |
מכ"ם = bytearray (rotate_steps) |
servo_rotate_direction = 0# 0 לעלייה כלפי מעלה (0-> 160) ו- 1 אחרת |
radar_index = 0 |
set_servo (RIGHT, 0) |
whileTrue: |
# קראו מהרדאר |
אם ticks_us () - שעון_קריאה אחרון> זמן_פעם_צעד: |
# נקרא מחיישן המרחק |
מכ"ם [radar_index] = int (ds.read_range_continuous () /10) |
אחרון_קרי_זמן = ticks_us () |
הדפס (radar_index) |
# עשו את ההיגיון לסיבוב הסרוו משמאל לימין |
אם radar_index == rotate_steps -1and servo_rotate_direction == 0: |
set_servo (RIGHT, 0) |
servo_rotate_direction = 1 |
elif radar_index == 0and servo_rotate_direction == 1: |
set_servo (RIGHT, rotate_span) |
servo_rotate_direction = 0 |
אַחֵר: |
radar_index += 1if servo_rotate_direction == 0else-1 |
# ושלח את ערכי המכ"ם |
radio.send_bytes (מכ"ם) |
לְנַסוֹת: |
# קרא פקודות רובוט |
lmotor, rmotor = ustruct.unpack ('bb', radio.receive_bytes ()) |
# והפעל את המנועים אם יהיו פקודות שהתקבלו |
set_speed (lmotor, rmotor) |
נהיגה() |
exceptTypeError: |
לַעֲבוֹר |
הצג rawgigglebot_lidar_robot.py המתארח אצל ❤ על ידי GitHub
שלב 6: תכנות השלט - חלק ב '
מה שנותר לעשות הוא לתכנת את ה- micro: bit השני של ה- BBC שפועל כשלט.
השלט משמש להצגת המסך מתוצרת 5 על 5 פיקסלים שלו על המרחק היחסי למכשולים. לכל היותר יהיו 10 פיקסלים מופעלים.
במקביל, השלט נותן לך את היכולות לשלוט מרחוק ב- GiggleBot על ידי לחיצה על 2 הכפתורים שלו: לנוע קדימה, שמאלה וימינה.
הערה: ייתכן שהתסריט הבא חסר מרחבים לבנים ונראה שזה נובע מבעיה כלשהי בהצגת רשימות GitHub. לחץ על התמצית כדי להעביר אותך לדף GitHub שלו, שבו תוכל להעתיק ולהדביק את הקוד.
GiggleBot מבוסס LIDAR נשלט מרחוק - קוד מרחוק
מ- microbit יבוא שינה, תצוגה, button_a, button_b |
ייבוא מבנה |
ייבוא רדיו |
מתמטיקה יבוא |
radio.on () |
rotate_steps = 10 |
rotate_span = 160# במעלות |
rotate_step = rotate_span / rotate_steps |
מרחק מקסימלי = 50# בסנטימטרים |
side_length_leds = 3 # נמדד במספר הפיקסלים |
מכ"ם = bytearray (rotate_steps) |
xar = bytearray (rotate_steps) |
yar = bytearray (rotate_steps) |
save_xar = bytearray (rotate_steps) |
save_yar = bytearray (rotate_steps) |
motor_speed = 50 |
whileTrue: |
status = radio.receive_bytes_into (מכ"ם) |
אם המצב אינו קיים: |
# display.clear () |
עבור c, val אינספור (מכ"ם): |
אם מכ"ם [c] <= max_distance: |
# חשב קואורדינטות 2d של כל מרחק |
זווית = rotate_steps / (rotate_steps -1) * rotate_step * c |
זווית += (180- rotate_span) /2.0 |
x_c = math.cos (זווית * math.pi /180.0) * מכ"ם [c] |
y_c = math.sin (זווית * math.pi /180.0) * מכ"ם [c] |
# קנה מידה את המרחקים כך שיתאימו לתצוגת המיקרוביט בגודל 5x5 |
x_c = x_c * (side_length_leds -1) / max_distance |
y_c = y_c * (side_length_leds +1) / max_distance |
# קואורדינטות מיקום מחדש |
x_c += (צד_אורך_דורות -1) |
y_c = (side_length_leds +1) - y_c |
# קואורדינטות עגולות בדיוק היכן נמצאות הנורות |
אם x_c - רצפת מתמטיקה (x_c) <0.5: |
x_c = רצפה מתמטית (x_c) |
אַחֵר: |
x_c = math.ceil (x_c) |
אם y_c - רצפת מתמטיקה (y_c) <0.5: |
y_c = רצפת מתמטיקה (y_c) |
אַחֵר: |
y_c = math.ceil (y_c) |
xar [c] = x_c |
yar [c] = y_c |
אַחֵר: |
xar [c] = 0 |
yar [c] = 0 |
display.clear () |
עבור x, y inzip (xar, yar): |
display.set_pixel (x, y, 9) |
# הדפסה (רשימה (zip (xar, yar, radar))) |
stateA = button_a.is_pressed () |
stateB = button_b.is_pressed () |
אם stateA ו- stateB: |
radio.send_bytes (ustruct.pack ('bb', motor_speed, motor_speed)) |
הדפס ('קדימה') |
אם stateA ולא מצב B: |
radio.send_bytes (ustruct.pack ('bb', motor_speed, -motor_speed)) |
הדפס ('שמאל') |
ifnot stateA ו- state B: |
radio.send_bytes (ustruct.pack ('bb', -motor_speed, motor_speed)) |
הדפס ('מימין') |
ifnot stateA ו- not state B: |
radio.send_bytes (ustruct.pack ('bb', 0, 0)) |
הדפס ('עצור') |
הצג rawgigglebot_lidar_remote.py המתארח אצל ❤ על ידי GitHub
שלב 7: פרשנות המסך המרוחק
"loading =" עצלן "לשלוט ב- GiggleBot, יש לך את האפשרויות הבאות:
- לחץ על כפתור A ולחצן B כדי להזיז את ה- GiggleBot קדימה.
- לחץ על כפתור A כדי לסובב את ה- GiggleBot שמאלה.
- לחץ על כפתור B כדי לסובב את ה- GiggleBot ימינה.
כדי לראות לאיזה כיוון מזוהים המכשולים הקרובים ביותר, פשוט הסתכל על המסך של השלט (מיקרו ה- BBC המרוחק: ביט שאתה מחזיק). אתה אמור להיות מסוגל לשלוט ב- GiggleBot מרחוק מבלי להסתכל עליו.
מוּמלָץ:
צור רובוט אכילה עם Arduino Nano - בורג זהב: 5 שלבים
עשה רובוט אכילה עם Arduino Nano | בורג זהב: הרעיון לפרויקט הזה הגיע מבתי. היא רוצה רובוט, והרובוט הזה יכול לפתוח את הפה כדי שיוכל להכניס מזון לפה. אז חיפשתי בתוך הבית דברים זמינים: קרטון, ארדואינו ננו, חיישן קולי, מנוע סרוו
צור רובוט רוקד ללא מדפסת תלת מימד ו Arduino/#smartcreativity: 11 שלבים (עם תמונות)
הכינו רובוט רוקד ללא מדפסת תלת מימד ו Arduino/#smartcreativity: שלום חברים, במדריך זה אראה לכם כיצד להכין רובוט רוקד בבית ללא מדפסת תלת מימד וללא ארדואינו. הרובוט הזה מסוגל לרקוד, איזון אוטומטי, הפקת מוזיקה והליכה. וגם העיצוב של הרובוט נראה כל כך מגניב
רובוט איזון / רובוט 3 גלגלים / רובוט STEM: 8 שלבים
רובוט איזון / רובוט 3 גלגלים / רובוט STEM: בנינו רובוט איזון משולב ושלושה גלגלים לשימוש חינוכי בבתי ספר ובתוכניות חינוכיות לאחר הלימודים. הרובוט מבוסס על Arduino Uno, מגן מותאם אישית (כל פרטי הבנייה מסופקים), חבילת סוללות לי יון (כל מבנה
צור רובוט הימנעות מקיר !: 6 שלבים (עם תמונות)
צור רובוט הימנעות מקיר!: מטרה: ליצור מאפס רובוט עובד המסוגל להימנע מקירות ומכשולים. תמיד רצית לייצר רובוט שיכול לעשות משהו, אך מעולם לא היה לך זמן או ידע לעשות זאת? אל תפחד יותר, ההנחיה הזו היא בדיוק בשבילך
[רובוט ארדואינו] כיצד ליצור רובוט לכידת תנועה - רובוט אגודל - מנוע סרוו - קוד מקור: 26 שלבים (עם תמונות)
[רובוט ארדואינו] כיצד ליצור רובוט לכידת תנועה | רובוט אגודל | מנוע סרוו | קוד מקור: רובוט אגודל. השתמש בפוטנציומטר של מנוע סרוו MG90S. זה מאוד כיף וקל! הקוד פשוט מאוד. זה בסביבות 30 קווים בלבד. זה נראה כמו לכידת תנועה. אנא השאר כל שאלה או משוב! [הוראה] קוד מקור https: //github.c