</> Make for Iran – بسازیم برای ایران

پروژه‌ها، آموزش‌ها و ابزارها برای سازندگان و علاقه‌مندان الکترونیک

  • خانه
  • الکترونیک
  • پرینت سه‌بعدی
  • حکاکی و برش لیزری
  • ابزار کارگاهی
  • پهپاد
  • ربات زمینی UGV
  • ربات پرنده UAV
  • صنایع دستی
  • آموزش
  • پروژه‌ها
  • درباره ما
خانه›ربات‌های زمینی (UGV)›ساخت ربات زمینی بدون سرنشین (UGV) ارزان با آردوینو – راهنمای کامل مبتدیان
ربات‌های زمینی (UGV)

ساخت ربات زمینی بدون سرنشین (UGV) ارزان با آردوینو – راهنمای کامل مبتدیان

​ ژوئن 8, 2026 6 دقیقه مطالعه
ربات زمینی UGV با آردوینو

UGV و آردوینو یعنی چه؟

UGV یا Unmanned Ground Vehicle یعنی وسیله نقلیه زمینی بدون سرنشین. ساده‌ترین شکل آن یک ماشین کوچک است که یا با رادیو کنترل می‌کنید، یا با سنسور و برنامه‌نویسی، خودش مسیر را تشخیص می‌دهد. آردوینو هم یک برد الکترونیکی ارزان و ساده است که نقش مغز این ماشین را بازی می‌کند: فرمان‌های شما را می‌خواند، موتورها را می‌چرخاند، و می‌تواند از سنسورها اطلاعات بگیرد.

در این پست، شما یک UGV کامل و ارزان با شاسی آماده، دو موتور DC، درایور موتور، آردوینو Nano و باتری می‌سازید. همه مراحل از مونتاژ مکانیکی تا آپلود کد و تست رانندگی پوشش داده شده. این پروژه برای کسی طراحی شده که می‌خواهد اولین ربات واقعی خود را بسازد و نتیجه را همان روز ببیند.

مقدمه: ربات زمینی بدون سرنشین (UGV) چیست؟

ربات زمینی بدون سرنشین یا UGV (Unmanned Ground Vehicle) یک وسیله نقلیه زمینی است که بدون حضور راننده و با کنترل از راه دور (RC) یا به صورت خودکار حرکت می‌کند. این ربات‌ها در صنایع نظامی، کشاورزی، امداد و نجات و حتی پروژه‌های آموزشی DIY کاربرد دارند.

در این آموزش، ما یک UGV ساده و بسیار ارزان می‌سازیم که:

  • با دو موتور DC و سیستم فرمان تفاضلی (Skid Steer) حرکت می‌کند
  • سرعت تا ۴۰ کیلومتر در ساعت در جاده صاف آسفالت دارد
  • قابلیت حمل ۵ کیلوگرم بار را دارد
  • با فرستنده و گیرنده RC کنترل می‌شود
  • دارای دوربین FPV برای دید از راه دور است
  • بدنه از تخته سه‌لا (پلای‌وود) ساخته شده و قابل برش با اره دستی است
  • باتری برای حداقل ۱۵ دقیقه رانندگی مداوم کافی است

🔰 آیا تازه‌کار هستید؟ پیش‌نیازهای این پروژه

اگر این اولین تجربه شما در ساخت ربات یا کار با الکترونیک است، نگران نباشید! لینک‌های زیر به شما کمک می‌کنند تا مهارت‌های پایه‌ای لازم را یاد بگیرید. هر بخش شامل منابع فارسی و رایگان است. قبل از شروع این پروژه، پیشنهاد می‌کنیم حداقل بخش‌هایی که با آنها آشنا نیستید را مطالعه کنید.

الکترونیک پایه — اگر با قطعات الکترونیکی آشنا نیستید

اگر نمی‌دانید مقاومت، خازن، دیود، ترانزیستور و LED چیستند و چه کاری انجام می‌دهند، ابتدا این منابع را ببینید:

  • 📖 سیمونیک — معرفی پایه الکترونیک: قطعات و اصطلاحات مهم — توضیح ساده ولتاژ، جریان، مقاومت، خازن، دیود و تمام قطعات پایه با تصاویر
  • 🎥 مکتب‌خونه — آموزش الکترونیک مقدماتی به زبان ساده — دوره ویدیویی رایگان، بدون پیش‌نیاز، مناسب همه سنین
  • 📖 کمیته مهندسی رباتیک — آموزش رباتیک مقدماتی — از مقاومت و قانون اهم تا IC درایور و ساخت ربات، گام به گام
  • 📖 ویکی‌پدیا فارسی — الکترونیک — مرور کلی بر علم الکترونیک و اصطلاحات فنی

آردوینو (Arduino) — اگر تا حالا با آردوینو کار نکرده‌اید

آردوینو مغز ربات شماست. اگر نمی‌دانید آردوینو چیست، چطور برنامه‌نویسی می‌شود یا چطور یک LED ساده را روشن کنید، این منابع فارسی عالی هستند:

  • 📖 ایده الکترونیک — آموزش کامل آردوینو به زبان فارسی — از صفر مطلق: نصب نرم‌افزار، Sketch، توابع setup و loop، خواندن سنسور، PWM و خیلی بیشتر
  • 📖 بهنام رباتیک — شروع کار با آردوینو Uno — آموزش قدم به قدم با تصاویر، معرفی پین‌ها و اولین پروژه
  • 🎥 مکتب‌خونه — دوره‌های آموزش آردوینو — دوره‌های ویدیویی فارسی از مقدماتی تا پیشرفته

ESP32 — اگر می‌خواهید بیشتر از آردوینو بدانید

ESP32 یک میکروکنترلر قوی‌تر از آردوینو است که Wi-Fi و بلوتوث داخلی دارد. اگر بعد از ساخت این ربات خواستید ربات خود را به اینترنت اشیاء (IoT) یا کنترل از طریق گوشی ارتقا دهید، ESP32 گزینه بعدی شماست:

  • 📖 آترین الکترونیک — آموزش گام به گام ESP32 — معرفی، نرم‌افزار، برنامه‌نویسی با Arduino IDE، پروژه‌های عملی
  • 🎥 DSP World — دوره آموزشی ESP32 با FreeRTOS — دوره حرفه‌ای‌تر برای علاقه‌مندان به اینترنت اشیاء

موتور DC و درایور — اگر نمی‌دانید موتور و درایور چیست

در این پروژه از موتور DC (جریان مستقیم) و درایور BTS7960 استفاده می‌کنیم. موتور DC با اعمال ولتاژ می‌چرخد و درایور واسطه‌ای است که به آردوینو اجازه می‌دهد موتور پرقدرت را کنترل کند. اگر با این مفاهیم آشنا نیستید:

  • 📖 RoboUAV — آموزش راه‌اندازی موتور DC با درایور — توضیح کامل پین‌ها، جدول جهت چرخش و سیم‌کشی به آردوینو
  • 📖 Robojax — کنترل موتور DC با L293D و آردوینو (فارسی) — آموزش ویدیویی و کد نمونه
  • 📖 ویکی‌پدیا فارسی — موتور جریان مستقیم — آشنایی با اصول کار موتور DC

رباتیک و اصطلاحات UGV — اگر نمی‌دانید UGV، PWM یا Skid Steer چیست

UGV مخفف Unmanned Ground Vehicle (وسیله نقلیه زمینی بدون سرنشین) است. PWM روشی برای کنترل سرعت موتور و Skid Steer نوعی فرمان‌دهی با اختلاف سرعت چرخ‌هاست. برای آشنایی با این اصطلاحات:

  • 🎥 مکتب‌خونه — آموزش مهندسی رباتیک (مقدماتی تا پیشرفته) — دوره‌های ویدیویی فارسی درباره اصول رباتیک
  • 📖 ویکی‌پدیا فارسی — وسیله نقلیه زمینی بدون سرنشین (UGV)
  • 📖 ویکی‌پدیا فارسی — مدولاسیون پهنای پالس (PWM) — توضیح ساده PWM که در کد آردوینو استفاده شده

فرستنده و گیرنده RC — اگر تا حالا رادیو کنترل به دست نگرفته‌اید

رادیو کنترل (RC) وسیله‌ای است که سیگنال فرمان شما را بی‌سیم به ربات ارسال می‌کند. اگر نمی‌دانید فرستنده و گیرنده چطور کار می‌کنند، کانال چیست یا خروجی PWM به چه معناست:

  • 📖 RoboUAV — آموزش رادیو کنترل (فارسی) — معرفی کامل فرستنده، گیرنده، کانال‌ها و نحوه اتصال
  • 📖 WLE — آموزش ساخت رادیو کنترل ۸ کاناله — توضیح اهرم‌ها، کانال‌ها و خروجی داده + راهنمای خرید

دوربین FPV و فرستنده تصویر (VTX) — اگر نمی‌دانید FPV چیست

FPV مخفف First Person View (دید اول شخص) است. یک دوربین روی ربات نصب می‌شود و تصویر زنده از طریق فرستنده تصویر (VTX) به مانیتور یا عینک شما ارسال می‌شود. اگر با سیستم FPV آشنا نیستید:

  • 📖 سوالات متداول FPV — توضیح دوربین، VTX و سیستم‌های انتقال تصویر (فارسی)
  • 📖 Oscar Liang — FPV System Explained (انگلیسی) — بهترین راهنمای جامع FPV در اینترنت، با تصاویر و مقایسه سیستم‌های آنالوگ و دیجیتال

iNAV و سیستم‌های ناوبری — اگر می‌خواهید ربات خود را خودکار کنید

iNAV یک نرم‌افزار متن‌باز برای کنترل پرواز و ناوبری GPS است. اگرچه در این پروژه ساده از iNAV استفاده نمی‌کنیم، ولی اگر بعداً خواستید ربات خود را با GPS و حالت خودکار ارتقا دهید، iNAV عالی است:

  • 📖 iNAV Wiki — مستندات رسمی (انگلیسی) — راهنمای کامل نصب، تنظیم و استفاده از iNAV
  • 📖 iNAV Fixed Wing Setup Guide (انگلیسی) — راهنمای شروع کار با iNAV
  • 📖 Make for Iran — آموزش فرستنده و گیرنده پرواز با iNAV (فارسی) — همین سایت!

لحیم‌کاری (Soldering) — اگر تا حالا هویه به دست نگرفته‌اید

لحیم‌کاری مهارت اتصال سیم‌ها و قطعات الکترونیکی به هم با استفاده از هویه و سیم لحیم است. برای سیم‌کشی این ربات به لحیم‌کاری نیاز دارید:

  • 📖 رونیکس — آموزش صحیح لحیم‌کاری با هویه — معرفی ابزارها (هویه، سیم لحیم، روغن) و آموزش گام به گام
  • 📖 گیت الکترونیک — آموزش لحیم‌کاری برای مبتدیان — از اصول اولیه تا تکنیک‌های صحیح اتصال

سوراخ‌کاری و دریل — اگر با دریل کار نکرده‌اید

برای نصب موتورها و ساخت بدنه پلای‌وود، باید سوراخ‌هایی با دریل ایجاد کنید. اگر تا حالا با دریل کار نکرده‌اید:

  • 📖 آروا تولز — آموزش گام به گام کار با دریل و سوراخ‌کاری — انتخاب مته، تنظیم گشتاور، سوراخ‌کاری در چوب و فلز
  • 📖 نوین چوب — انواع سوراخ‌کاری با دریل الکتریکی — سوراخ‌کاری در چوب، فلز و دیوار

برش پلای‌وود با اره — اگر تجربه کار با چوب ندارید

بدنه ربات از تخته سه‌لا (پلای‌وود) ساخته می‌شود و باید آن را برش دهید. ساده‌ترین ابزار برای این کار اره عمود‌بر (Jigsaw) یا حتی اره دستی است:

  • 📖 آیچوب — آموزش ۰ تا ۱۰۰ کار با اره عمود‌بر + ویدیو — نصب تیغه، تنظیم دستگاه، تکنیک برش مستقیم و منحنی
  • 📖 جعبه ابزار — ۰ تا ۱۰۰ اره عمود‌بر (اره چکشی) — کاربرد، مزایا و نحوه استفاده

سیستم فرمان تفاضلی (Skid Steering) چگونه کار می‌کند؟

در این ربات هیچ مکانیزم فرمان جداگانه‌ای وجود ندارد. به جای آن، از اختلاف سرعت دو چرخ جلو برای تغییر جهت استفاده می‌شود:

  • حرکت مستقیم: هر دو موتور با سرعت یکسان می‌چرخند
  • گردش به راست: موتور چپ سریع‌تر، موتور راست کندتر (یا متوقف)
  • گردش به چپ: موتور راست سریع‌تر، موتور چپ کندتر (یا متوقف)
  • چرخش در جا: یک موتور جلو، دیگری عقب

این سیستم ساده‌ترین و ارزان‌ترین روش فرمان‌دهی است زیرا نیاز به هیچ سروو، بازوی فرمان یا مکانیزم اضافی ندارد. تانک‌ها، بولدوزرها و بسیاری از ربات‌های صنعتی از همین سیستم استفاده می‌کنند.

نمودار فرمان تفاضلی (Skid Steering) — چهار حالت حرکتی ربات
چهار حالت فرمان تفاضلی: حرکت مستقیم، گردش به راست، گردش به چپ، و چرخش در جا

مشخصات فنی پروژه

پارامترمقدار
حداکثر سرعت~۴۰ کیلومتر در ساعت
ظرفیت بار۵ کیلوگرم
وزن تقریبی ربات (بدون بار)~۱۲ کیلوگرم
نوع فرمانتفاضلی (Skid Steer)
تعداد موتور۲ عدد DC Brushed
ولتاژ سیستم۲۴ ولت
چرخ‌های محرک۲ عدد بادی فرغونی (جلو)
چرخ عقب۱ عدد چرخ آزاد (Caster) بدون باد
بدنهتخته سه‌لا ۱۲ میلی‌متر
کنترلRC فرستنده/گیرنده ۲.۴ گیگاهرتز
میکروکنترلرArduino Nano
باتری۲ عدد سربی-اسیدی ۱۲V 7Ah (سری)
زمان کارکرد۱۵ تا ۵۰ دقیقه (بسته به سرعت)

لیست کامل قطعات و قیمت تقریبی

هدف ما ساخت ارزان‌ترین نسخه ممکن است. قیمت‌ها تقریبی و بر اساس بازار جهانی (AliExpress) هستند:

۱. موتورها

قطعهمشخصاتتعدادقیمت تقریبی
موتور DC براشد MY1016۲۵۰ وات، ۲۴ ولت، ~۲۶۵۰ دور در دقیقه۲$۱۵ × ۲ = $۳۰

چرا MY1016؟ این موتور برای اسکوتر برقی طراحی شده، بسیار ارزان و در دسترس است، توان کافی برای سرعت بالا دارد و گیربکس داخلی ندارد (خروجی مستقیم با زنجیر). جستجو در AliExpress

دیتاشیت و مشخصات:

  • ولتاژ نامی: ۲۴V DC
  • توان: ۲۵۰W
  • سرعت بدون بار: ~۲۶۵۰ RPM
  • جریان نامی: ~۱۳.۷A
  • جریان راه‌اندازی (استال): ~۴۱A (کوتاه‌مدت)
  • شفت: ۹ میلی‌متر با خار (Keyed)
  • چرخ‌دنده خروجی: ۱۱ دندانه (T8F chain)

۲. درایور موتور (Motor Driver)

قطعهمشخصاتتعدادقیمت تقریبی
ماژول درایور BTS7960 (IBT-2)۴۳ آمپر، ۵.۵ تا ۲۷ ولت۲$۶ × ۲ = $۱۲

چرا BTS7960؟ این ماژول ارزان‌ترین درایور موتور با توانایی تحمل جریان بالا (۴۳ آمپر پیوسته) است. هر ماژول یک موتور را کنترل می‌کند و با PWM آردوینو سازگار است.

پین‌های BTS7960:

  • RPWM — سیگنال PWM برای چرخش موتور در جهت ساعتگرد (جلو)
  • LPWM — سیگنال PWM برای چرخش موتور در جهت پادساعتگرد (عقب)
  • R_EN و L_EN — پایه‌های فعال‌سازی (Enable) — به ۵V وصل کنید
  • VCC — تغذیه ۵V لاجیک
  • GND — زمین مشترک
  • B+ و B- — ورودی باتری (۲۴V)
  • M+ و M- — خروجی به موتور

📚 راهنمای کامل BTS7960: Last Minute Engineers — BTS7960 Tutorial

۳. میکروکنترلر

قطعهمشخصاتتعدادقیمت تقریبی
Arduino Nano (کلون)ATmega328P، ۵V، ۱۶MHz۱$۳

آردوینو نانو کوچک‌ترین و ارزان‌ترین برد آردوینو است که تمام امکانات لازم (PWM خوانی، خروجی PWM، سریال) را دارد. نسخه‌های کلون چینی بسیار ارزان هستند. مستندات رسمی Arduino Nano

۴. فرستنده و گیرنده RC

قطعهمشخصاتتعدادقیمت تقریبی
FlySky FS-i6 (فرستنده + گیرنده FS-iA6B)۲.۴ گیگاهرتز، ۶ کانال، PPM/PWM۱ ست$۳۵

چرا FlySky FS-i6؟ ارزان‌ترین فرستنده RC با کیفیت قابل قبول در بازار جهانی است. ۶ کانال دارد (ما فقط ۲ کانال برای گاز و فرمان نیاز داریم). گیرنده FS-iA6B خروجی PWM مستقیم روی هر کانال دارد که آردوینو به راحتی می‌تواند بخواند.

مشخصات فرستنده:

  • فرکانس: ۲.۴ گیگاهرتز AFHDS 2A
  • تعداد کانال: ۶
  • برد: ~۵۰۰ متر (بدون مانع)
  • تغذیه: ۴ عدد باتری قلمی AA
  • خروجی گیرنده: PWM (پالس ۱۰۰۰ تا ۲۰۰۰ میکروثانیه)

📚 DroneBot Workshop — FlySky FS-i6X with Arduino (آموزش کامل انگلیسی)

۵. چرخ‌ها

قطعهمشخصاتتعدادقیمت تقریبی
چرخ بادی فرغونیسایز 3.50-8 (قطر ~۳۵ سانتی‌متر)۲$۱۵ × ۲ = $۳۰
چرخ آزاد (Caster) بدون بادچرخ صنعتی گردان ۱۰۰ میلی‌متر توپر۱$۱۰

چرخ‌های بادی فرغونی ارزان، محکم و دارای لاستیک پنوماتیک هستند که ضربه‌گیری خوبی روی آسفالت دارند. محور آنها معمولاً ۲۰ میلی‌متر قطر دارد.

۶. سیستم انتقال نیرو

قطعهمشخصاتتعدادقیمت تقریبی
چرخ‌دنده (Sprocket) بزرگ۴۸ دندانه، زنجیر T8F، سوراخ ۲۰mm۲$۸ × ۲ = $۱۶
زنجیر T8Fطول مناسب (~۵۰ سانتی‌متر)۲$۴ × ۲ = $۸

محاسبه نسبت دنده:

  • چرخ‌دنده موتور: ۱۱ دندانه (روی شفت MY1016)
  • چرخ‌دنده چرخ: ۴۸ دندانه
  • نسبت کاهش: ۴۸ ÷ ۱۱ = ۴.۳۶ : ۱
  • سرعت چرخ: ۲۶۵۰ ÷ ۴.۳۶ = ~۶۰۸ دور در دقیقه
  • محیط چرخ: π × ۰.۳۵ = ۱.۱ متر
  • سرعت خطی: ۶۰۸ × ۱.۱ ÷ ۶۰ × ۳.۶ = ~۴۰ کیلومتر در ساعت ✅
نمودار سیستم انتقال نیرو — زنجیر و چرخ‌دنده و محاسبه سرعت
سیستم انتقال نیرو: چرخ‌دنده ۱۱ دندانه موتور → زنجیر T8F → چرخ‌دنده ۴۸ دندانه چرخ = نسبت ۴.۳۶:۱

۷. باتری

قطعهمشخصاتتعدادقیمت تقریبی
باتری سربی-اسیدی (SLA)۱۲V 7Ah (مثل UPS)۲$۱۲ × ۲ = $۲۴

چرا سربی-اسیدی؟ ارزان‌ترین نوع باتری شارژی موجود در بازار است. دو عدد ۱۲ ولت به صورت سری (Series) وصل می‌شوند تا ۲۴ ولت بدهند.

محاسبه زمان کارکرد:

  • ظرفیت کل: ۲۴V × ۷Ah = ۱۶۸ وات‌ساعت
  • مصرف متوسط در سرعت متوسط: ~۱۰۰ وات → زمان: ~۱۰۰ دقیقه
  • مصرف در حداکثر سرعت: ~۴۰۰ وات → زمان: ~۲۵ دقیقه
  • عمق تخلیه ایمن SLA: ۵۰٪ → حداقل ۱۵ دقیقه در فول گاز ✅

⚠️ نکته: وزن هر باتری حدود ۲.۴ کیلوگرم است (مجموعاً ~۵ کیلو). اگر وزن کمتر می‌خواهید، از باتری لیتیوم-یون (مثلاً سلول‌های 18650) استفاده کنید ولی هزینه بیشتر خواهد بود.

۸. دوربین FPV

قطعهمشخصاتتعدادقیمت تقریبی
دوربین FPV آنالوگ + فرستنده تصویر (VTX)۵.۸ گیگاهرتز، ۶۰۰TVL، ۲۵-۲۰۰mW۱ ست$۱۵
مانیتور/گیرنده FPV (یا عینک FPV)۵.۸ گیگاهرتز با صفحه ۴.۳ اینچ۱$۲۵

ساده‌ترین و ارزان‌ترین راه برای دید از راه دور، یک کیت FPV آنالوگ ۵.۸ گیگاهرتز است. دوربین و VTX از باتری ربات (از طریق یک رگولاتور ۵V یا ۱۲V) تغذیه می‌شوند. جایگزین ارزان‌تر: از یک گوشی موبایل قدیمی با اپ IP Webcam استفاده کنید!

۹. سایر قطعات

قطعهمشخصاتتعدادقیمت تقریبی
تخته سه‌لا (پلای‌وود)۱۲ میلی‌متر، ابعاد ~۶۰×۴۰ سانتی‌متر۱$۸
رگولاتور ولتاژ DC-DC (Buck Converter)ورودی ۲۴V → خروجی ۵V، ۳A۱$۲
کلید قطع و وصلکلید کلنگی ۳۰A۱$۲
فیوز خودکار (Circuit Breaker)۳۰ آمپر۱$۳
سیم برقAWG 14 (برای موتور) و AWG 22 (سیگنال)چند متر$۵
کانکتور XT60اتصال باتری۲$۲
پیچ و مهره و بستM5 و M6 فلزیست$۵
برد بورد یا PCB سوراخ‌داربرای سیم‌کشی آردوینو۱$۲

جمع‌بندی هزینه

دستههزینه تقریبی
موتورها (۲ عدد)$۳۰
درایورها (۲ عدد)$۱۲
آردوینو نانو$۳
فرستنده/گیرنده RC$۳۵
چرخ‌ها (۳ عدد)$۴۰
زنجیر و چرخ‌دنده$۲۴
باتری‌ها$۲۴
دوربین FPV$۴۰
بدنه و متفرقه$۲۹
مجموع تقریبی~$۲۳۷ (حدود ۱۷۰ دلار بدون FPV)

طراحی شاسی و بدنه (پلای‌وود)

بدنه ربات از یک صفحه تخته سه‌لا ۱۲ میلی‌متر به ابعاد تقریبی ۶۰ × ۴۰ سانتی‌متر ساخته می‌شود. این ابعاد بر اساس فاصله بین دو چرخ جلو و جای باتری‌ها تعیین شده است.

نقشه چیدمان (از بالا)

نقشه چیدمان شاسی — نمای بالا ۶۰×۴۰ سانتی‌متر
نقشه چیدمان قطعات روی شاسی پلای‌وود — نمای بالا (ابعاد تقریبی)

┌──────────────────────────────────┐
│          جلو (Front)              │
│                                    │
│   [موتور چپ]──⚙──[چرخ چپ]      │
│        │                           │
│   [باتری ۱]  [باتری ۲]           │
│        │                           │
│   [آردوینو]  [درایور۱] [درایور۲] │
│        │                           │
│   [موتور راست]──⚙──[چرخ راست]   │
│                                    │
│      [گیرنده RC]  [دوربین]       │
│                                    │
│          عقب (Rear)               │
│         [چرخ آزاد]               │
└──────────────────────────────────┘

نکات ساخت بدنه

  • از اره عمودی (Jigsaw) یا اره دستی برای برش استفاده کنید
  • سوراخ‌های محور چرخ را با دریل ۲۰ میلی‌متر ایجاد کنید
  • موتورها را با بست فلزی L شکل به پلای‌وود ببندید
  • باتری‌ها را با تسمه نگه دارید تا قابل تعویض باشند
  • برای استحکام بیشتر، از دو لایه پلای‌وود در محل اتصال موتور استفاده کنید
  • تمام الکترونیک را با یک جعبه پلاستیکی ارزان از آب محافظت کنید

نقشه سیم‌کشی کامل

نقشه سیم‌کشی کلی سیستم — آردوینو، درایور، موتور، گیرنده RC
نمودار بلوکی سیم‌کشی: باتری ← فیوز ← کلید ← درایورها ← موتورها + Buck Converter ← آردوینو ← گیرنده RC

اتصالات آردوینو ← درایور BTS7960 (موتور چپ)

پایه آردوینوپایه BTS7960 #1توضیح
D5 (PWM)RPWMجلو (Forward)
D6 (PWM)LPWMعقب (Reverse)
5VR_EN + L_ENفعال‌سازی (به ۵V وصل)
GNDGNDزمین مشترک

اتصالات آردوینو ← درایور BTS7960 (موتور راست)

پایه آردوینوپایه BTS7960 #2توضیح
D9 (PWM)RPWMجلو (Forward)
D10 (PWM)LPWMعقب (Reverse)
5VR_EN + L_ENفعال‌سازی
GNDGNDزمین مشترک

اتصالات گیرنده RC ← آردوینو

کانال گیرندهپایه آردوینوعملکرد
CH1 (Aileron/Steering)D2فرمان (چپ/راست)
CH2 (Elevator/Throttle)D3گاز (جلو/عقب)
VCC (5V)5Vتغذیه گیرنده
GNDGNDزمین مشترک

اتصالات برق (Power)

  • باتری ۱ (۱۲V) + باتری ۲ (۱۲V) = ۲۴V سری
  • ۲۴V → فیوز ۳۰A → کلید اصلی → B+ هر دو درایور BTS7960
  • GND باتری → B- هر دو درایور
  • ۲۴V → ماژول Buck Converter → ۵V → تغذیه آردوینو (پایه VIN یا 5V)
  • ۵V → تغذیه گیرنده RC
  • ۵V یا ۱۲V → تغذیه دوربین FPV (بسته به مدل)
نمودار توزیع برق ربات — باتری، فیوز، کلید، درایور، Buck Converter
نمودار توزیع برق: ۲ باتری سری ۲۴V ← فیوز ← کلید ← درایورها + Buck Converter 5V ← آردوینو و گیرنده

⚠️ مهم: حتماً GND تمام قطعات (آردوینو، درایورها، گیرنده، باتری) را به هم وصل کنید. بدون زمین مشترک، سیگنال‌ها به درستی خوانده نمی‌شوند.

کد کامل آردوینو (Arduino Sketch)

کد زیر سیگنال PWM را از دو کانال گیرنده RC می‌خواند، آنها را میکس می‌کند (Throttle + Steering → Left/Right motor) و به درایورهای BTS7960 ارسال می‌کند.


/*
 * ============================================================
 *  DIY UGV - کنترل ربات زمینی با فرمان تفاضلی
 *  Skid-Steer Control with FlySky RC + BTS7960 + Arduino
 * ============================================================
 *  نویسنده: Make for Iran (projectleon.net/make)
 *  لایسنس: MIT - آزاد برای استفاده و تغییر
 * 
 *  سخت‌افزار مورد نیاز:
 *    - Arduino Nano (یا Uno)
 *    - 2x BTS7960 Motor Driver (IBT-2)
 *    - FlySky FS-i6 + FS-iA6B Receiver
 *    - 2x MY1016 250W 24V DC Motor
 * ============================================================
 */

// ═══════════════════════════════════════
// تعریف پایه‌های گیرنده RC
// ═══════════════════════════════════════
#define RC_STEERING_PIN  2   // کانال ۱ گیرنده (فرمان - چپ/راست)
#define RC_THROTTLE_PIN  3   // کانال ۲ گیرنده (گاز - جلو/عقب)

// ═══════════════════════════════════════
// تعریف پایه‌های درایور BTS7960 - موتور چپ
// ═══════════════════════════════════════
#define LEFT_MOTOR_FWD   5   // RPWM درایور چپ (جلو)
#define LEFT_MOTOR_REV   6   // LPWM درایور چپ (عقب)

// ═══════════════════════════════════════
// تعریف پایه‌های درایور BTS7960 - موتور راست
// ═══════════════════════════════════════
#define RIGHT_MOTOR_FWD  9   // RPWM درایور راست (جلو)
#define RIGHT_MOTOR_REV  10  // LPWM درایور راست (عقب)

// ═══════════════════════════════════════
// ثابت‌های تنظیم
// ═══════════════════════════════════════
#define DEADZONE         30  // منطقه مرده (جلوگیری از لرزش در حالت ایستاده)
#define MAX_PWM          255 // حداکثر مقدار PWM (0-255)
#define PULSE_TIMEOUT    25000 // تایم‌اوت خواندن پالس (میکروثانیه)

// ═══════════════════════════════════════
// متغیرهای سراسری
// ═══════════════════════════════════════
int throttleValue = 0;  // مقدار گاز (-255 تا +255)
int steeringValue = 0;  // مقدار فرمان (-255 تا +255)
int leftSpeed = 0;      // سرعت نهایی موتور چپ
int rightSpeed = 0;     // سرعت نهایی موتور راست

// ═══════════════════════════════════════
// تابع خواندن کانال RC
// ═══════════════════════════════════════
int readRCChannel(int pin, int minVal, int maxVal, int defaultVal) {
  // خواندن عرض پالس PWM از گیرنده
  int pulse = pulseIn(pin, HIGH, PULSE_TIMEOUT);
  
  // اگر سیگنالی دریافت نشد، مقدار پیش‌فرض برگردان
  if (pulse < 100) return defaultVal;
  
  // تبدیل محدوده پالس (1000-2000μs) به محدوده دلخواه
  int value = map(pulse, 1000, 2000, minVal, maxVal);
  
  // محدود کردن به بازه مجاز
  return constrain(value, minVal, maxVal);
}

// ═══════════════════════════════════════
// تابع کنترل یک موتور با BTS7960
// ═══════════════════════════════════════
void setMotor(int fwdPin, int revPin, int speed) {
  // speed مثبت = جلو، منفی = عقب، صفر = توقف
  
  if (speed > 0) {
    // حرکت به جلو
    analogWrite(fwdPin, speed);
    analogWrite(revPin, 0);
  } 
  else if (speed < 0) {
    // حرکت به عقب
    analogWrite(fwdPin, 0);
    analogWrite(revPin, -speed);  // قدر مطلق
  } 
  else {
    // توقف (ترمز)
    analogWrite(fwdPin, 0);
    analogWrite(revPin, 0);
  }
}

// ═══════════════════════════════════════
// Setup - اجرا یکبار در شروع
// ═══════════════════════════════════════
void setup() {
  // راه‌اندازی سریال برای دیباگ
  Serial.begin(115200);
  Serial.println("=== DIY UGV Started ===");
  
  // تنظیم پایه‌های ورودی RC
  pinMode(RC_STEERING_PIN, INPUT);
  pinMode(RC_THROTTLE_PIN, INPUT);
  
  // تنظیم پایه‌های خروجی موتور
  pinMode(LEFT_MOTOR_FWD, OUTPUT);
  pinMode(LEFT_MOTOR_REV, OUTPUT);
  pinMode(RIGHT_MOTOR_FWD, OUTPUT);
  pinMode(RIGHT_MOTOR_REV, OUTPUT);
  
  // اطمینان از توقف اولیه موتورها
  setMotor(LEFT_MOTOR_FWD, LEFT_MOTOR_REV, 0);
  setMotor(RIGHT_MOTOR_FWD, RIGHT_MOTOR_REV, 0);
  
  Serial.println("Motors initialized. Waiting for RC signal...");
}

// ═══════════════════════════════════════
// Loop - حلقه اصلی (تکرار مداوم)
// ═══════════════════════════════════════
void loop() {
  // ── مرحله ۱: خواندن سیگنال‌های RC ──
  throttleValue = readRCChannel(RC_THROTTLE_PIN, -255, 255, 0);
  steeringValue = readRCChannel(RC_STEERING_PIN, -255, 255, 0);
  
  // ── مرحله ۲: اعمال منطقه مرده (Deadzone) ──
  if (abs(throttleValue) < DEADZONE) throttleValue = 0;
  if (abs(steeringValue) < DEADZONE) steeringValue = 0;
  
  // ── مرحله ۳: میکس فرمان تفاضلی (Differential Mixing) ──
  // فرمول: سرعت چرخ = گاز ± فرمان
  leftSpeed  = throttleValue + steeringValue;
  rightSpeed = throttleValue - steeringValue;
  
  // ── مرحله ۴: محدود کردن سرعت به بازه مجاز ──
  leftSpeed  = constrain(leftSpeed, -MAX_PWM, MAX_PWM);
  rightSpeed = constrain(rightSpeed, -MAX_PWM, MAX_PWM);
  
  // ── مرحله ۵: ارسال فرمان به موتورها ──
  setMotor(LEFT_MOTOR_FWD, LEFT_MOTOR_REV, leftSpeed);
  setMotor(RIGHT_MOTOR_FWD, RIGHT_MOTOR_REV, rightSpeed);
  
  // ── مرحله ۶: نمایش اطلاعات در Serial Monitor ──
  Serial.print("Throttle: ");
  Serial.print(throttleValue);
  Serial.print(" | Steering: ");
  Serial.print(steeringValue);
  Serial.print(" | Left: ");
  Serial.print(leftSpeed);
  Serial.print(" | Right: ");
  Serial.println(rightSpeed);
  
  // تأخیر کوتاه برای پایداری
  delay(20);
}

توضیح عملکرد کد

  1. خواندن RC: تابع readRCChannel() با استفاده از pulseIn() عرض پالس PWM را از گیرنده می‌خواند. پالس بین ۱۰۰۰ تا ۲۰۰۰ میکروثانیه است (۱۵۰۰ = وسط). این مقدار به بازه -۲۵۵ تا +۲۵۵ تبدیل می‌شود.
  2. Deadzone: اگر مقدار استیک نزدیک مرکز باشد (کمتر از ۳۰)، آن را صفر فرض می‌کنیم تا موتورها بی‌دلیل نلرزند.
  3. میکسینگ تفاضلی: leftSpeed = throttle + steering و rightSpeed = throttle - steering. وقتی فرمان به راست بچرخانید، سرعت موتور چپ بیشتر و موتور راست کمتر می‌شود.
  4. کنترل موتور: تابع setMotor() بسته به علامت سرعت، پایه FWD یا REV درایور BTS7960 را با PWM فعال می‌کند.

آپلود کد روی آردوینو

  1. نرم‌افزار Arduino IDE را دانلود و نصب کنید
  2. برد Arduino Nano (یا Uno) را از منو Tools → Board انتخاب کنید
  3. پورت USB را از Tools → Port انتخاب کنید
  4. کد بالا را کپی و در IDE پیست کنید
  5. دکمه Upload (فلش) را بزنید
  6. پس از آپلود، Serial Monitor را باز کنید (بادریت ۱۱۵۲۰۰) تا مقادیر RC را ببینید

تنظیم فرستنده FlySky FS-i6

  1. فرستنده را روشن کنید و وارد منو System → RX Setup شوید
  2. نوع خروجی را روی PWM تنظیم کنید (نه PPM یا iBus)
  3. وارد Functions → Reverse شوید و در صورت نیاز جهت کانال‌ها را معکوس کنید
  4. وارد Functions → Endpoints شوید و حداقل/حداکثر هر کانال را روی ۱۰۰۰-۲۰۰۰ تنظیم کنید
  5. Binding: فرستنده و گیرنده معمولاً از کارخانه bind شده‌اند. اگر نیاز به bind مجدد داشتید، راهنمای رسمی FlySky را ببینید

مونتاژ و راه‌اندازی نهایی

مراحل مونتاژ گام به گام

  1. برش بدنه: تخته سه‌لا را به ابعاد ۶۰×۴۰ سانتی‌متر ببرید. گوشه‌ها را گرد کنید.
  2. نصب موتورها: هر موتور MY1016 را با بست L فلزی در دو طرف جلوی شاسی ببندید. فاصله بین مرکز دو چرخ حدود ۳۵ سانتی‌متر باشد.
  3. نصب چرخ‌های جلو: چرخ‌دنده ۴۸ دندانه را روی محور هر چرخ فرغونی ببندید. زنجیر T8F را بین چرخ‌دنده موتور و چرخ‌دنده چرخ نصب کنید. کشش زنجیر را تنظیم کنید.
  4. نصب چرخ عقب: چرخ کستر (آزاد) را در وسط عقب شاسی ببندید.
  5. سیم‌کشی برق: دو باتری را سری وصل کنید (مثبت باتری ۱ به منفی باتری ۲). خروجی ۲۴V را از طریق فیوز و کلید به درایورها وصل کنید.
  6. سیم‌کشی سیگنال: آردوینو را طبق جدول سیم‌کشی بالا به درایورها و گیرنده RC وصل کنید.
  7. نصب دوربین: دوربین FPV را در جلوی ربات (رو به جلو) با چسب حرارتی نصب کنید. VTX را کنار آردوینو قرار دهید.
  8. تست اولیه: قبل از قرار دادن ربات روی زمین، آن را بلند کنید و با RC تست کنید که چرخ‌ها در جهت صحیح می‌چرخند.

نکات ایمنی مهم

  • ⚠️ سرعت ۴۰ کیلومتر در ساعت برای یک ربات بسیار بالا است. در فضای باز و دور از افراد تست کنید
  • ⚠️ حتماً از فیوز ۳۰ آمپر استفاده کنید تا در صورت اتصال کوتاه، سیم‌ها نسوزند
  • ⚠️ هرگز ربات را بدون کلید قطع اضطراری (Kill Switch) در فضای عمومی استفاده نکنید
  • ⚠️ باتری‌های سربی-اسیدی حاوی اسید هستند — از واژگونی و ضربه محافظت کنید
  • ⚠️ زنجیر و چرخ‌دنده را با یک محافظ (Guard) بپوشانید تا انگشتان گیر نکنند
  • ⚠️ در شروع، سرعت را از طریق کد محدود کنید (مثلاً MAX_PWM را ۱۲۸ بگذارید) و تدریجاً افزایش دهید
  • ⚠️ در صورت قطع سیگنال RC، ربات باید خودکار متوقف شود (کد بالا این قابلیت را دارد — Failsafe)

ارتقاء‌های پیشنهادی (آینده)

  • باتری لیتیوم: با پک ۶S LiPo یا ۷S Li-ion وزن ربات نصف می‌شود و زمان کارکرد دو برابر
  • GPS و خودکارسازی: با افزودن ماژول GPS (مثل NEO-6M) و کتابخانه TinyGPS++ می‌توانید مسیریابی خودکار اضافه کنید
  • تلمتری: با ماژول HC-12 یا LoRa می‌توانید اطلاعات ولتاژ باتری و سرعت را به فرستنده ارسال کنید
  • ROS: با ارتقا به Raspberry Pi و ROS 2، ربات را کاملاً خودکار کنید
  • سنسور فاصله: سنسور اولتراسونیک HC-SR04 یا لیدار را برای جلوگیری از برخورد اضافه کنید

منابع آموزشی، مراجع و لینک‌های مفید

مستندات رسمی و دیتاشیت‌ها (OEM)

  • Arduino Nano — مستندات رسمی
  • Arduino Language Reference — مرجع زبان برنامه‌نویسی
  • BTS7960 (BTN7960) Datasheet — Infineon
  • FlySky FS-i6 — صفحه رسمی

آموزش‌های ویدیویی و متنی (انگلیسی)

  • DroneBot Workshop — ساخت ماشین RC با FlySky و آردوینو (آموزش کامل)
  • Last Minute Engineers — آموزش BTS7960 با آردوینو
  • YouTube — BTS7960 Motor Driver Tutorial
  • HowToMechatronics — آموزش کنترل موتور DC
  • Random Nerd Tutorials — کنترل موتور DC

پروژه‌های DIY مشابه (متن‌باز)

  • Instructables — پروژه‌های UGV
  • Instructables — ساخت ماشین ربات با آردوینو
  • Hackaday.io — پروژه‌های UGV متن‌باز
  • GitHub — مخازن متن‌باز UGV
  • GitHub — نمونه کد RC Robot با BTS7960 و FlySky
  • GitHub — Arduino + FlySky i6 Differential Drive
  • Thingiverse — طرح‌های سه‌بعدی ربات UGV

سایت‌های آموزش الکترونیک و رباتیک

  • Arduino Official Tutorials — آموزش‌های رسمی آردوینو
  • Adafruit Learning System — آموزش الکترونیک
  • SparkFun Learn — آموزش‌ها و راهنماها
  • All About Circuits — مرجع مدارات
  • Electronics Tutorials — آموزش پایه الکترونیک
  • ROS — شروع با Robot Operating System

ویکی‌ها و مراجع فنی

  • Wikipedia — Unmanned Ground Vehicle
  • Wikipedia — Skid Steering
  • Wikipedia — Brushed DC Motor
  • Wikipedia — H-Bridge (پل H)
  • Wikipedia — PWM (مدولاسیون عرض پالس)

ابزارهای آنلاین مفید

  • Tinkercad — شبیه‌ساز آردوینو آنلاین و رایگان
  • Wokwi — شبیه‌ساز آردوینو آنلاین پیشرفته
  • Fritzing — طراحی مدار و سیم‌کشی
  • Gear Ratio Calculator — محاسبه نسبت دنده
  • Watts/Volts/Amps Calculator — محاسبه توان

فروشگاه‌های آنلاین برای خرید قطعات

  • AliExpress — ارزان‌ترین قطعات الکترونیک (ارسال جهانی)
  • Banggood — قطعات الکترونیک و رباتیک
  • دیجی‌کالا — خرید داخلی ایران
  • باسلام — قطعات و ابزار ایرانی
  • فروشگاه قطعات الکترونیک ایران (ECA)

نتیجه‌گیری

در این آموزش یاد گرفتید چگونه با کمتر از ۲۵۰ دلار یک ربات زمینی بدون سرنشین (UGV) با سرعت ۴۰ کیلومتر در ساعت بسازید. این پروژه از ارزان‌ترین قطعات موجود استفاده می‌کند و بدنه آن قابل ساخت با ابزارهای ساده خانگی است.

نکات کلیدی:

  • سیستم فرمان تفاضلی (Skid Steer) ساده‌ترین و ارزان‌ترین روش است
  • موتور MY1016 250W با زنجیر و چرخ‌دنده توان و سرعت کافی فراهم می‌کند
  • درایور BTS7960 ارزان‌ترین و قوی‌ترین درایور برای این کاربرد است
  • کد آردوینو فقط ~۱۰۰ خط است و به هیچ کتابخانه خارجی نیاز ندارد
  • باتری سربی-اسیدی ارزان‌ترین گزینه با ظرفیت کافی است

سؤالی دارید؟ در بخش نظرات زیر بپرسید یا به Make for Iran سر بزنید!

این مقاله توسط تیم Make for Iran نوشته شده و تحت لایسنس Creative Commons BY-SA 4.0 منتشر می‌شود. آزادانه به اشتراک بگذارید و ارتقا دهید!

​
مطلب بعدی آشنایی با قطعات اصلی پهپاد چهارپروانه FPV مطلب قبلی ساخت گجت رهاکنندهٔ بطری آب با کنترل از راه دور – سلونوئید دست‌ساز + روش ماشین RC (راهنمای مبتدیان)
</> Make for Iran – بسازیم برای ایران

پروژه‌ها، آموزش‌ها و ابزارها برای سازندگان و علاقه‌مندان الکترونیک

یاد بگیر، بساز، به اشتراک بگذار. جامعه‌ای برای سازندگان، مهندسان و علاقه‌مندان به فناوری در ایران.

دسته‌بندی‌ها

  • پروژه‌ها
  • ربات‌های پرنده (UAV)
  • آموزش
  • ربات‌های زمینی (UGV)
  • الکترونیک
  • پهپاد و مولتی‌روتور

پیوندها

  • خانه
  • درباره ما
  • تماس
  • فید RSS

آخرین مطالب

  • خلاصه دوره ArduPilot/iNAV و گام‌های بعدی (فارسی)
  • رادیو تله‌متری در مقابل LTE/4G برای کنترل از راه دور (فارسی)
  • Ground Station روی موبایل و تبلت — QGroundControl و Solex (فارسی)
  • راه‌اندازی Ground Station با Mission Planner (فارسی)
© 2026 Make for Iran – بسازیم برای ایران. تمامی حقوق محفوظ است.
ساخته شده با ❤️ برای سازندگان ایران  |  ورود