فهرست مطالب:
- مرحله 1: اجزای مورد نیاز
- مرحله 2: مونتاژ ربات
- مرحله 3: پیچ و خم خود را ایجاد کنید - اختیاری
- مرحله 4: تنظیم محیط
- مرحله 5: برنامه نویسی GiggleBot - قسمت اول
- مرحله 6: برنامه نویسی از راه دور - قسمت دوم
- مرحله 7: تفسیر صفحه از راه دور
تصویری: با GiggleBot یک ربات با راهنمای Lidar بسازید: 8 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:55
در این آموزش ، ما داریم GiggleBot را با مشکلات پیچ و خم مقابله می کنیم.
در حال نصب سروو بر روی GiggleBot هستیم که سنسور فاصله را روی آن متصل می کنیم. در حین کار ، سروو به جلو و عقب می چرخد تا سنسور فاصله بتواند فاصله را تا هر مانع اندازه گیری کند. این شبیه به یک سنسور LIDAR عمل می کند که معمولاً بسیار گرانتر است.
در همان زمان ، GiggleBot این داده ها را به میکرو بی بی سی از راه دور ارسال می کند: بیتی که روی ماتریس 5 در 5 LED خود موقعیت نسبی آن را با موانع نشان می دهد.
وظیفه شما این است که بتوانید GiggleBot را تنها با مشاهده آنچه در دیگر میکرو BBC: bit نشان داده شده است حرکت کنید. برای کنترل GiggleBot ، از دکمه های میکرو BBC: bit از راه دور استفاده می شود.
به نظر می رسد سرگرم کننده است! بیایید به موضوع بپردازیم ، نه؟
مرحله 1: اجزای مورد نیاز
ما نیاز داریم:
- GiggleBot.
- یک بسته باتری برای میکرو بی بی سی: بیت. این بسته به همراه میکرو BBC: bit در بسته آن ارائه می شود.
- x3 باتری AA برای GiggleBot.
- کابل Grove برای اتصال سنسور فاصله به GiggleBot.
- کیت سرو از DexterIndustries.
- x3 BBC میکرو: بیت. یکی برای GiggleBot و دیگری برای کنترل ربات از راه دور.
- سنسور فاصله از DexterIndustries.
ربات GiggleBot را برای میکرو بی بی سی تهیه کنید: کمی اینجا!
مرحله 2: مونتاژ ربات
برای آماده سازی GiggleBot برای برنامه نویسی ، باید آن را جمع آوری کنیم ، اگرچه کار زیادی لازم نیست انجام شود.
3 باتری AA را در قسمت زیر GiggleBot قرار دهید.
بسته سروو را مونتاژ کنید. در بازوی چرخشی سروو ، از آخرین سوراخ آن برای اتصال سروو به کانکتورهای جلویی GiggleBot استفاده کنید. می توانید از پیچ و/یا مقداری سیم برای پایداری بیشتر در جای خود استفاده کنید. یا می توانید آن را داغ به تخته بچسبانید. در مورد من ، من از پیچ و سیم کوتاه برای اتصال بازوی سروو به برد GiggleBot استفاده کردم.
هنگام نصب بازوی سروو روی سروو ، مطمئن شوید که سروو از قبل روی موقعیت 80 تنظیم شده است. این کار را می توانید با فراخوانی gigglebot.set_servo (gigglebot. RIGHT ، 80) انجام دهید. شما می توانید بیشتر در مورد آن در اینجا بخوانید.
در مرحله بعد ، سنسور فاصله را در قسمت جلویی سروو بسته قرار دهید و آن را مانند مثال بالا ثابت کنید.
در نهایت ، سنسور فاصله را با یک کابل Grove به هر یک از 2 پورت I2C و سرو موتور را به پورت سمت راست GiggleBot وصل کنید - پورت سمت راست روی آن ذکر شده است.
مرحله 3: پیچ و خم خود را ایجاد کنید - اختیاری
در این مورد ، من از مجموعه ای از جعبه ها برای ایجاد یک مسیر حلقه بسته ، شبیه به یک مورد NASCAR استفاده کرده ام.
در این مرحله ، می توانید واقعاً خلاق باشید و آنقدر که می خواهید پیچیده شود یا آن را بسیار طولانی کنید ، زیرا واقعاً به شما بستگی دارد.
یا اگر به هیچ وجه آهنگ نمی خواهید ، می توانید GiggleBot را به عنوان مثال در آشپزخانه یا اتاق نشیمن قرار دهید - این باید به اندازه کافی خوب باشد زیرا دیوارها و موانع زیادی وجود دارد که باید از آنها اجتناب کنید.
مرحله 4: تنظیم محیط
برای اینکه بتوانید برنامه BBC micro: bit را در MicroPython برنامه ریزی کنید ، باید یک ویرایشگر برای آن (Mu Editor) تنظیم کرده و GiggleBot MicroPython Runtime را به عنوان زمان اجرا تنظیم کنید. برای این کار ، باید دستورالعمل های این صفحه را دنبال کنید. در حال حاضر ، نسخه v0.4.0 زمان اجرا استفاده می شود.
مرحله 5: برنامه نویسی GiggleBot - قسمت اول
ابتدا اجازه دهید اسکریپت GiggleBot را تنظیم کنیم. این اسکریپت باعث می شود GiggleBot موتور سروو خود را 160 درجه (در هر جهت 80 درجه) بچرخاند در حالی که در هر نوبت 10 قرائت از سنسور فاصله می گیرد.
هنگامی که روشن است ، GiggleBot تا زمانی که فرمان را از کنترل از راه دور دریافت نکند ، در حالت ایستاده است. فقط 3 فرمان می تواند وجود داشته باشد: حرکت به جلو ، به چپ یا راست.
توجه: در اسکریپت زیر ممکن است فضاهای خالی وجود داشته باشد و به نظر می رسد این به دلیل مشکل در نمایش GitHub Gists باشد. روی اصل مطلب کلیک کنید تا شما را به صفحه GitHub منتقل کند ، جایی که می توانید کد را کپی و جایگذاری کنید.
GiggleBot مبتنی بر LIDAR از راه دور
از واردات gigglebot* |
from distance_sensor وارد کردن DistanceSensor |
از خواب واردات microbit |
از utime import ticks_us ، sleep_us |
ustruct وارد کنید |
وارد کردن رادیو |
اگر روبات در حال حرکت است # متوقف کنید |
متوقف کردن() |
# فعال کردن رادیو |
radio.on () |
# شیء حسگر فاصله |
ds = DistanceSensor () |
ds.start_continuous () |
زمان چرخش = 0.7# در ثانیه اندازه گیری می شود |
rotate_span = 160# با درجه اندازه گیری می شود |
rotate_steps = 10 |
overhead_compensation = 1.05# در درصد تعریف شده است |
time_per_step = 10 ** 6* rotate_time / (rotate_steps* overhead_compensation) |
last_read_time = 0 |
رادار = bytearray (rotate_steps) |
servo_rotate_direction = 0# 0 برای بالا رفتن (0-> 160) و 1 در غیر این صورت |
radar_index = 0 |
set_servo (راست ، 0) |
whileTrue: |
# از رادار بخوانید |
if ticks_us () - last_read_time> time_per_step: |
# خواندن از سنسور فاصله |
رادار [radar_index] = int (ds.read_range_continuous () /10) |
last_read_time = ticks_us () |
چاپ (radar_index) |
# منطق چرخاندن سروو از چپ به راست را انجام دهید |
if radar_index == rotate_steps -1 و servo_rotate_direction == 0: |
set_servo (راست ، 0) |
servo_rotate_direction = 1 |
elif radar_index == 0 و servo_rotate_direction == 1: |
set_servo (RIGHT ، rotate_span) |
servo_rotate_direction = 0 |
دیگری: |
radar_index += 1 اگر servo_rotate_direction == 0else-1 |
# و مقادیر رادار را ارسال کنید |
radio.send_bytes (رادار) |
تلاش كردن: |
# دستورات ربات را بخوانید |
lmotor، rmotor = ustruct.unpack ('bb'، radio.receive_bytes ()) |
# و در صورت وجود دستورات دریافتی ، موتورها را فعال کنید |
set_speed (lmotor، rmotor) |
راندن() |
onlyTypeError: |
عبور |
مشاهده rawgigglebot_lidar_robot.py میزبانی شده توسط ❤ توسط GitHub
مرحله 6: برنامه نویسی از راه دور - قسمت دوم
آنچه باید انجام شود برنامه نویسی دومین میکرو بی بی سی است: بیتی که به عنوان یک کنترل از راه دور عمل می کند.
از راه دور برای نمایش فاصله نسبی موانع بر روی صفحه نمایش 5 در 5 پیکسلی آن استفاده می شود. حداکثر 10 پیکسل روشن می شود.
در عین حال ، کنترل از راه دور به شما این امکان را می دهد که GiggleBot را با فشار دادن 2 دکمه کنترل کنید: حرکت به جلو ، به چپ و راست.
توجه: در اسکریپت زیر ممکن است فضاهای خالی وجود داشته باشد و به نظر می رسد این به دلیل مشکل در نمایش GitHub Gists باشد. روی اصل مطلب کلیک کنید تا شما را به صفحه GitHub منتقل کند ، جایی که می توانید کد را کپی و جایگذاری کنید.
GiggleBot مبتنی بر LIDAR از راه دور - کد از راه دور
از واردات microbit خواب ، صفحه نمایش ، button_a ، button_b |
ustruct وارد کنید |
وارد کردن رادیو |
واردات ریاضی |
radio.on () |
rotate_steps = 10 |
rotate_span = 160# درجه |
rotate_step = rotate_span / rotate_steps |
max_distance = 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) |
سرعت موتور = 50 |
whileTrue: |
وضعیت = radio.receive_bytes_into (رادار) |
اگر وضعیت نیست هیچکدام: |
# display.clear () |
برای c ، val inenumerate (رادار): |
اگر رادار [c] <= max_distance: |
# مختصات دو بعدی هر فاصله را محاسبه کنید |
angle = 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 += (side_length_leds -1) |
y_c = (side_length_leds +1) - y_c |
# دور مختصات را دقیقا در جایی که LED ها یافت می شوند |
اگر x_c - math.floor (x_c) <0.5: |
x_c = math.floor (x_c) |
دیگری: |
x_c = math.ceil (x_c) |
اگر y_c - math.floor (y_c) <0.5: |
y_c = math.floor (y_c) |
دیگری: |
y_c = math.ceil (y_c) |
xar [c] = x_c |
یار [c] = y_c |
دیگری: |
xar [c] = 0 |
یار [c] = 0 |
display.clear () |
برای x ، y inzip (xar ، yar): |
display.set_pixel (x ، y ، 9) |
# چاپ (لیست (zip (xar، yar، radar))) |
stateA = button_a. فشرده شده است () |
stateB = button_b.is_pressed () |
if stateA و stateB: |
radio.send_bytes (ustruct.pack ('bb'، motor_speed، motor_speed)) |
چاپ ('جلو') |
if stateA و نه stateB: |
radio.send_bytes (ustruct.pack ('bb'، motor_speed، -motor_speed)) |
چاپ ("چپ") |
ifnot حالت A و stateB: |
radio.send_bytes (ustruct.pack ('bb'، -motor_speed، motor_speed)) |
چاپ ("راست") |
ifnot حالت یک و نه stateB: |
radio.send_bytes (ustruct.pack ('bb'، 0، 0)) |
چاپ ("توقف") |
مشاهده rawgigglebot_lidar_remote.py میزبانی شده توسط ❤ توسط GitHub
مرحله 7: تفسیر صفحه از راه دور
"loading =" lazy "GiggleBot را کنترل می کنید ، گزینه های زیر را دارید:
- دکمه A و B را فشار دهید تا GiggleBot به جلو حرکت کند.
- دکمه A را فشار دهید تا GiggleBot به چپ بچرخد.
- دکمه B را فشار دهید تا GiggleBot به سمت راست بچرخد.
برای مشاهده نزدیکترین موانع به کدام سمت ، فقط به صفحه کنترل از راه دور (میکرو بی بی سی از راه دور: بیتی که در دست دارید) نگاه کنید. شما باید بتوانید GiggleBot را از راه دور بدون نگاه کردن به آن کنترل کنید.
توصیه شده:
راهنمای پروژه Photojojo DIY: پنجره رنگ آمیزی بسازید: 5 مرحله
راهنمای پروژه Photojojo DIY: پنجره ای رنگ آمیزی کنید: علاوه بر دستورالعمل ها ، یکی از وب سایت های مورد علاقه من Photojojo.com است (اگر نام این افراد فوق العاده را نشنیده اید ، باید به آنها سر بزنید.) یک هفته یا بیشتر آنها پست کردند ، http://content.photojojo.com/diy/diy-make-stained-glass-instagram-window
ربات شادی (Robô Da Alegria) - ربات منبع باز 3D چاپ شده ، ربات Arduino !: 18 مرحله (همراه با تصاویر)
ربات شادی (Robô Da Alegria) - ربات منبع باز سه بعدی ، ربات قدرتمند Arduino!: جایزه اول در مسابقه چرخ های دستورالعمل ، جایزه دوم در مسابقه دستورالعمل های آردوینو و دومین مسابقه در طراحی برای کودکان. با تشکر از همه کسانی که به ما رای دادند! روبات ها به همه جا می رسند. از کاربردهای صنعتی تا
ربات متعادل کننده / ربات 3 چرخ / ربات STEM: 8 مرحله
ربات متعادل کننده / ربات 3 چرخ / ربات STEM: ما یک ربات متعادل کننده و 3 چرخ ترکیبی برای استفاده آموزشی در مدارس و برنامه های آموزشی بعد از مدرسه ساخته ایم. این ربات بر اساس Arduino Uno ، یک سپر سفارشی (تمام جزئیات ساخت ارائه شده است) ، یک باتری لیتیوم یون (همه ساخت
[ربات آردوینو] چگونه می توان یک ربات ضبط حرکتی ساخت - ربات انگشت شست - سرو موتور - کد منبع: 26 مرحله (همراه با تصاویر)
[ربات آردوینو] چگونه می توان یک ربات ضبط حرکتی ساخت | ربات انگشت شست | سرو موتور | کد منبع: ربات انگشت شست از پتانسیومتر سروو موتور MG90S استفاده شده است. بسیار سرگرم کننده و آسان است! کد بسیار ساده است. فقط در حدود 30 خط است. به نظر می رسد یک حرکت ضبط است. لطفاً هر گونه سوال یا بازخوردی بگذارید! [دستورالعمل] کد منبع https: //github.c
ساخت یک ربات بسیار کوچک: کوچکترین ربات چرخ دار جهان را با گریپر بسازید .: 9 مرحله (همراه با تصاویر)
یک ربات بسیار کوچک بسازید: کوچکترین ربات چرخدار جهان را با یک گریپر بسازید .: یک ربات 1/20 اینچی مکعبی با یک گریپر بسازید که می تواند اجسام کوچک را برداشته و جابجا کند. توسط میکروکنترلر Picaxe کنترل می شود. در این برهه زمانی ، من معتقدم که این ممکن است کوچکترین ربات چرخ دار جهان با گریپر باشد. بدون شک این امر باعث