فهرست مطالب:
- مرحله 1: اجزای مورد نیاز
- مرحله 2: تنظیم آهنگ ها
- مرحله 3: تنظیم محیط
- مرحله 4: برنامه نویسی GiggleBot
- مرحله 5: اجازه دهید اجرا شود
تصویری: دنبال کننده خط GiggleBot با استفاده از پایتون: 5 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:54
این بار ، ما در MicroPython Dexter Industries GiggleBot برنامه ریزی می کنیم تا با استفاده از سنسور دنبال کننده خط داخلی خط مشکی را دنبال کند.
GiggleBot باید با یک میکرو بی بی جفت شود: بیت به منظور کنترل مناسب آن.
اگر این آموزش برای شما بسیار پیشرفته است و برنامه نویسی GiggleBot در حال حاضر بیش از حد زیاد است ، همیشه می توانید آموزش اولیه را که به شما نشان می دهد چگونه می توان ربات را در MakeCode در اینجا برنامه ریزی کرد ، مرور کنید. آموزش پیوندی اصول اولیه را به شما آموزش می دهد.
مرحله 1: اجزای مورد نیاز
اجزای سخت افزاری زیر مورد نیاز است:
- x3 باتری AA - در مورد من از باتری های قابل شارژ استفاده می کنم که در کل ولتاژ پایینی دارند.
- ربات Dexter Industries GiggleBot برای micro: bit.
- میکرو بی بی سی: کمی.
البته ، برای برنامه ریزی میکرو BBC: بیت ، به کابل micro USB نیز احتیاج دارید - این کابل به طور کلی در بسته میکرو BBC: bit قرار دارد یا همیشه می توانید از آن برای شارژ تلفن های هوشمند (Android) استفاده کنید.
GiggleBot را برای micro: bit اینجا دریافت کنید
مرحله 2: تنظیم آهنگ ها
شما باید چاپ برخی کاشی ها و طراحی آهنگ های دلخواه خود را انجام دهید. می توانید از کاشی های خود ما استفاده کنید تا 100٪ مطمئن باشید که شرایط ما را تکرار می کنید. یا اگر احساس می کنید ماجراجو هستید ، می توانید از نوار سیاه استفاده کنید و خودتان آن را بسازید. در اینجا پی دی اف کاشی هایی است که استفاده کرده ایم.
آهنگ بالا از تعداد زیر کاشی های مختلف تشکیل شده است:
- 12 کاشی از نوع #1.
- 5 کاشی از نوع #2.
- 3 قالب از نوع کاشی شماره 5.
- 3 قالب از نوع کاشی شماره 6 - در اینجا ، با یک کاشی اضافی به پایان خواهید رسید.
در مرحله بعد ، آنها را چاپ کرده و برش دهید. سعی کنید آنها را مانند عکس بالا قرار دهید و به خاطر داشته باشید که در سمت راست بالای مسیر ، 2 کاشی باید با یکی دیگر همپوشانی داشته باشند - این مورد در صورتی پیش می آید که می خواهید بدانید در حال انجام کار اشتباهی هستید.
مرحله 3: تنظیم محیط
برای اینکه بتوانید برنامه BBC micro: bit را در MicroPython برنامه ریزی کنید ، باید یک ویرایشگر برای آن (Mu Editor) تنظیم کرده و GiggleBot MicroPython Runtime را به عنوان زمان اجرا تنظیم کنید. برای این کار ، باید دستورالعمل های این صفحه را دنبال کنید. در حال حاضر ، نسخه v0.4.0 زمان اجرا استفاده می شود.
مرحله 4: برنامه نویسی GiggleBot
قبل از شروع به کار ، زمان اجرای GiggleBot MicroPython شامل زمان اجرای کلاسیک برای میکرو بی بی سی است: بیت و کتابخانه های دیگر برای پشتیبانی از GiggleBot و دیگر سنسورهای صنایع دکستر.
پس از تنظیم ، اسکریپت زیر را در ویرایشگر Mu باز کنید و روی Flash کلیک کنید. با این کار GiggleBot MicroPython Runtime و اسکریپتی که به تازگی روی میکرو بی بی سی خود باز کرده اید چشمک می زند. اسکریپت نیز در زیر نشان داده شده است.
پس از اتمام فرآیند چشمک زن ، میکرو بی بی سی: بیت را در GiggleBot با نئوپیکسل های صفحه رو به جلو قرار دهید ، آن را در مسیر قرار دهید و روشن کنید.
توجه کنید که در اسکریپت ، PID و 2 ثابت دیگر (نقطه تنظیم سرعت و ثابت ثابت سرعت) از قبل تنظیم شده اند.
توجه: در اسکریپت زیر ممکن است فضاهای خالی وجود داشته باشد و به نظر می رسد این به دلیل مشکل در نمایش GitHub Gists باشد. روی اصل مطلب کلیک کنید تا شما را به صفحه GitHub منتقل کند ، جایی که می توانید کد را کپی و جایگذاری کنید.
GiggleBot PID Line Follower - تنظیم شده با NeoPixels
از واردات microbit* |
از واردات gigglebot* |
از utime import sleep_ms ، ticks_us |
ustruct وارد کنید |
# مقداردهی اولیه نئوپیکسل های GB |
neo = init () |
# زمان سنجی |
نرخ_بهروزرسانی = 50 |
# افزایش/ثابت (با فرض ولتاژ باتری حدود 4.0 ولت) |
Kp = 25.0 |
کی = 0.5 |
Kd = 35.0 |
trigger_point = 0.3 |
min_speed_percent = 0.3 |
base_speed = 70 |
نقطه تنظیم = 0.5 |
last_position = نقطه تنظیم |
انتگرال = 0.0 |
run_neopixels = درست است |
center_pixel = 5# جایی که پیکسل مرکزی لبخند در GB قرار دارد |
# turquoise = tuple (map (lambda x: int (x / 5)، (64، 224، 208))) # رنگ برای ترسیم خطا با نئوپیکسل ها |
# فیروزه = (12 ، 44 ، 41) # که دقیقاً فیروزه فوق در بالا توضیح داده شده است |
error_width_per_pixel = 0.5/3# حداکثر خطا تقسیم بر تعداد قطعات بین هر نئوپیکسل |
defupper_bound_bound_speed_reducer (abs_error ، trigger_point ، above_bound ، small_motor_power ، high_motor_power): |
مبنای_سرعت جهانی |
اگر abs_error> = trigger_point: |
# x0 = 0.0 |
# y0 = 0.0 |
# x1 = محدوده_بالایی - نقطه_تحریک |
# y1 = 1.0 |
# x = abs_error - نقطه_تحریک |
# y = y0 + (x - x0) * (y1 - y0) / (x1 - x0) |
# مثل |
y = (abs_error - trigger_point) / (above_bound - trigger_point) |
قدرت_حرکتی = سرعت_پایه * (کوچکترین_قدرت_حرکتی + (1- سال) * (بالاترین_قدرت_حرکتی - کوچکترین_قدرت_حرکتی)) |
بازگشت موتور_قدرت |
دیگری: |
بازگشت پایه پایه * بالاترین_قدرت_حرکتی |
اجرا = غلط |
previous_error = 0 |
whileTrue: |
# اگر دکمه a فشار داده شده است ، دنبال کنید |
if button_a.is_pressed (): |
اجرا = درست |
# اما اگر دکمه b فشار داده شود ، دنبال کننده خط را متوقف کنید |
if button_b.is_pressed (): |
اجرا = غلط |
انتگرال = 0.0 |
previous_error = 0.0 |
pixels_off () |
متوقف کردن() |
sleep_ms (500) |
اگر اجرا شود isTrue: |
# سنسورهای خط را بخوانید |
زمان شروع = ticks_us () |
راست ، چپ = سنسور_خوان (LINE_SENSOR ، BOTH) |
خط # در سمت چپ است هنگامی که موقعیت <0.5 |
وقتی موقعیت> 0.5 باشد ، خط # در سمت راست است |
# خط در وسط است وقتی موقعیت = 0.5 است |
# میانگین حسابی وزنی است |
تلاش كردن: |
موقعیت = راست /شناور (چپ + راست) |
onlyZeroDivisionError: |
موقعیت = 0.5 |
# محدوده باید (0 ، 1) باشد نه [0 ، 1] |
اگر موقعیت == 0: موقعیت = 0.001 |
اگر موقعیت == 1: موقعیت = 0.999 |
# از کنترلر PD استفاده کنید |
خطا = موقعیت - نقطه تنظیم |
انتگرال += خطا |
تصحیح = Kp * error + Ki * انتگرال + Kd * (error - previous_error) |
previous_error = خطا |
# محاسبه سرعت موتور |
motor_speed = above_bound_linear_speed_reducer (abs (error) ، point set * trigger_point ، setpoint ، min_speed_percent ، 1.0) |
leftMotorSpeed = سرعت_موتور + تصحیح |
rightMotorSpeed = motor_speed - تصحیح |
با توجه به خطای داده شده ، # نئوپیکسل ها را روشن کنید |
if run_neopixels isTrueand total_counts٪ 3 == 0: |
برای i inb '\ x00 / x01 / x02 / x03 / x04 / x05 / x06 / x07 / x08': |
neo = (0 ، 0 ، 0) |
برای i inb '\ x00 / x01 / x02 / x03': |
ifabs (error)> error_width_per_pixel * i: |
اگر خطا <0: |
# neo [center_pixel + i] = فیروزه ای |
neo [center_pixel + i] = (12 ، 44 ، 41) |
دیگری: |
# neo [center_pixel - i] = فیروزه ای |
neo [center_pixel + i] = (12 ، 44 ، 41) |
دیگری: |
درصد = 1- (error_width_per_pixel * i -abs (error)) / error_width_per_pixel |
# پیکسل فعلی را روشن کنید |
اگر خطا <0: |
# neo [center_pixel + i] = tuple (نقشه (lambda x: int (x * درصد) ، فیروزه ای)) |
neo [center_pixel + i] = (int (64* درصد /5) ، int (224* درصد /5) ، int (208* درصد /5)) |
دیگری: |
# neo [center_pixel - i] = tuple (نقشه (lambda x: int (x * درصد) ، فیروزه ای)) |
neo [center_pixel - i] = (int (64* درصد /5) ، int (224* درصد /5) ، int (208* درصد /5)) |
زنگ تفريح |
neo.show () |
تلاش كردن: |
# سرعت موتور را کلیپ کنید |
در صورت باقی ماندن موتور سرعت> 100: |
leftMotorSpeed = 100 |
rightMotorSpeed = rightMotorSpeed - leftMotorSpeed +100 |
if rightMotorSpeed> 100: |
rightMotorSpeed = 100 |
leftMotorSpeed = leftMotorSpeed - rightMotorSpeed +100 |
اگر leftMotorSpeed <-100: |
leftMotorSpeed = -100 |
if rightMotorSpeed <-100: |
rightMotorSpeed = -100 |
# موتورها را فعال کنید |
set_speed (leftMotorSpeed ، rightMotorSpeed) |
راندن() |
# چاپ ((خطا ، سرعت موتور)) |
جز: |
# در صورت برخورد با مشکل غیر قابل رفع |
عبور |
# و فرکانس حلقه را حفظ کنید |
end_time = ticks_us () |
delay_diff = (زمان پایان - زمان شروع) /1000 |
if1000.0/ update_rate - delay_diff> 0: |
خواب (1000.0/ update_rate - delay_diff) |
مشاهده rawgigglebot_tuned_line_follower.py میزبانی شده توسط ❤ توسط GitHub
مرحله 5: اجازه دهید اجرا شود
روی دکمه میکرو بی بی سی 2 دکمه وجود دارد: بیت: دکمه A و دکمه B:
- با فشار دادن دکمه A ، GiggleBot تنظیم می شود که خط را دنبال کند (در صورت وجود).
- با فشار دادن دکمه B ، GiggleBot متوقف می شود و همه چیز ریست می شود تا بتوانید دوباره از آن استفاده کنید.
توصیه می شود GiggleBot را در حالی که خطی را دنبال می کند بلند نکنید و سپس دوباره روی آن قرار دهید زیرا خطایی که محاسبه می شود می تواند تجمع یابد و مسیر روبات را کاملاً به هم بزند. اگر می خواهید آن را بلند کنید ، دکمه B را فشار دهید و هنگامی که آن را دوباره قرار می دهید دوباره A را فشار دهید.
توصیه شده:
ربات دنبال کننده انسان با استفاده از آردوینو Uno زیر 20 دلار: 9 مرحله
ربات دنبال کننده انسان با استفاده از آردوینو Uno زیر 20 دلار: بنابراین من این ربات را حدود یک سال پیش ساختم و دوست داشتم که می تواند شما را در هر جا و همه جا دنبال کند. این بهترین جایگزین برای سگ است. هنوز با من است من همچنین یک کانال یوتیوب دارم که در آن می توانید مراحل ساخت آن را در vi مشاهده کنید
دنبال کننده خط ساده با استفاده از آردوینو: 5 مرحله
در این آموزش ، ما در مورد کار یک خط ربات زیر آردوینو صحبت خواهیم کرد که از خط سیاه در پس زمینه سفید پیروی می کند و هر زمان که به منحنی های مسیر خود برسد ، چرخش درست را انجام می دهد. شرکت دنبال کننده خط آردوینو
دنبال کننده خط با استفاده از آردوینو - پروژه DIY آسان: 6 مرحله
دنبال کننده خط با استفاده از آردوینو | Easy DIY Project: در این آموزش ، ما یک دنبال کننده خط با استفاده از ArduinoParts مورد نیاز خواهیم ساخت: Chasis: BO Motors and Wheels: https://amzn.to/2Yjh9I7 L298n موتور درایور: https://amzn.to/2IWNMWF IR sensor : https://amzn.to/2FFtFu3 Arduino Uno: https://amzn.to/2FyTrjF J
ربات دنبال کننده با استفاده از میکروکنترلر TIVA TM4C1233H6PM: 3 مرحله
ربات دنبال کننده خط با استفاده از میکروکنترلر TIVA TM4C1233H6PM: ربات زیر یک ماشین همه کاره است که برای تشخیص و گرفتن خطوط تیره روی سطح سفید استفاده می شود. از آنجا که این ربات با استفاده از تخته نان تولید می شود ، ساخت آن بسیار آسان خواهد بود. این سیستم را می توان در هم آمیخت
دنبال کننده نور با استفاده از اسمبلی و ریزتراشه PIC16F690: 3 مرحله
Sequencer Light با استفاده از اسمبلی و ریزتراشه PIC16F690: هدف از این پروژه ساخت یک دنبال کننده نور برای آزمایش سرعت واکنش بازیکن است. رابط کاربری این تنظیم کننده نور از 8 LED و یک دکمه تشکیل شده است. از نظر فنی ، ما قصد داریم کد نوشته شده به زبان اسمبلی را با wi ارسال کنیم