آموزش آردوینوپروژه های آردوینو

ساخت ربات مریخ نورد با آردوینو

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

در این پروژه تمرکز ما بر روی ایجاد ربات مریخ نورد با ارتباط بلوتوثی و بر پایه برد آردوینو است. برد های آردوینو ثابت کرده اند که یک انتخاب مقرون به صرفه برای علاقه مندان الکترونیک هستند.

طراحی مریخ نورد

طراحی مریخ نورد با ربات های دیگر تفاوت دارد. ما باید به گونه ای ربات را طراحی کنیم که قابلیت عبور از سطح های مختلف مریخ را داشته باشد. به همین منظور ما تصمیم گرفتیم برای این ربات از سیستم 6 چرخ متحرک استفاده کنیم که چرخ های عقبی آن تعلیق مناسبی داشته باشند.

شاسی ربات باید استحکام بالایی داشته باشد تا در صورت عبور از مکان های مختلف و برخورد با سطوح دچار شکستگی نشود. همچنین شاسی باید بتواند باتری، موتور ها، برد آردوینو و… را روی خود محکم نگه دارد.

ربات مریخ نورد

این قطعات با استفاده از سالیدورک ایجاد میشوند. فایل های dxf را در قسمت دانلود ها برای شما قرار داده ایم.

قطعات مورد نیاز

  • شاسی برش اکریلیک مریخ نورد
  • 6 موتور و چرخ BO
  • آردوینو اونو
  • ماژول درایور موتور L298n
  • ماژول بلوتوث HC-05
  • باتری 12 ولت لیتیوم یونی با کانکتور
  • گیره L (8 شماره)
  • مهره و پیچ و مهره 10 میلی متری M4 (تعداد 8)
  • مهره و پیچ و مهره 10 میلی متری M3 (تعداد 12)
  • مهره و پیچ و مهره 30 میلی متری M3 (تعداد 12)
  • سوئیچ و اتصال سیم ها
قطعات مورد نیاز را از فروشگاه قطعات آیرنکس تهیه کنید.

موتور درایور L298N

ماژول درایور موتور L298N یک ماژول درایور موتور محبوب است که معمولاً در پروژه های رباتیک و الکترونیک استفاده می شود. این ماژول مبتنی بر آی سی L298n است. ماژول دارای دو مدار پل H است که امکان کنترل دو جهته موتورها را فراهم می کند. با ارائه سیگنال های منطقی مناسب به پایه های کنترل ماژول، می توانید سرعت و جهت موتور را کنترل کنید.

از آنجایی که ما از سیگنال PWM تولید شده توسط آردوینو برای کنترل سرعت موتورها استفاده نمی کنیم، آنها با حداکثر سرعت خود کار خواهند کرد. دلیل این امر این است که ما پین های ENA و ENB را که مربوط به کنترل PWM هستند، در حالت ثابت روی برد نگه می داریم. بنابراین، هدف اصلی ماژول درایور موتور در این مدار، تغییر جهت چرخش موتورها است. این قابلیت ربات را قادر می سازد در هر چهار جهت از جمله جلو، عقب، چپ و راست حرکت کند.

موتور درایور L298N

ماژول درایور موتور L298N دارای پین اوت خاصی است که با عملکردهای مختلف آن مطابقت دارد.

  • VCC این پین برای اتصال یک منبع تغذیه خارجی (تا 12 ولت) برای تغذیه موتورها استفاده می شود.
  • GND این پایه اتصال GND برای ماژول است و باید به GND منبع تغذیه و آردوینو متصل شود.
  • 5V این پین یک خروجی 5 ولتی تنظیم شده را ارائه می دهد که می تواند برای تغذیه اجزای خارجی یا ارائه ولتاژ منطقی به منبع سیگنال کنترل استفاده شود.
  • ENA & ENB این پین ها برای فعال یا غیرفعال کردن موتور متصل به کانال A و کانال B استفاده می شوند و وظیفه کنترل سرعت موتور (با دریافت سیگنال PWM) را برعهده دارند.
  • IN1، IN2، IN3، IN4 این پایه های ورودی برای کنترل جهت چرخش موتور متصل به کانال A و B استفاده می شوند. با ارائه سطوح منطقی مناسب (HIGH یا LOW)، می توانید حالت پین خروجی را تنظیم کنید. این پایه ها برای دریافت سیگنال (HIGH یا LOW) به پین های دیجیتال آردوینو متصل می شوند.
  • OUT-1 & OUT-2 پین ذکر شده برای اتصال موتورها در نظر گرفته شده است. یک موتور باید به OUT-1 و OUT-2 وصل شود و موتور دیگر باید به OUT-3 و OUT-4 متصل شود. موتورها را می توان در محدوده ولتاژ 5 تا 35 ولت متصل کرد. با این حال، شایان ذکر است که کاهش تقریبی 2 ولت در ولتاژ خروجی در مقایسه با ولتاژ اعمال شده به پین Vcc وجود خواهد داشت.

ماژول بلوتوث HC-05

HC-05 یک ماژول بلوتوث پرکاربرد است که روشی راحت و قابل اعتماد برای افزودن قابلیت های ارتباط بی سیم به دستگاه های الکترونیکی ارائه می دهد. این ماژول بلوتوث از ارتباط سریال از طریق پروتکل UART پشتیبانی می کند.

ماژول HC-05 از مشخصات بلوتوث نسخه 2.0 پشتیبانی می کند و بسته به کاربرد مورد نظر می تواند به عنوان یک دستگاه Master یا Slave از طریق دستورات AT پیکربندی شود. در حالت Master، می تواند اتصالات را با سایر دستگاه های بلوتوث آغاز کند، در حالی که در حالت Slave، می تواند اتصالات ورودی را بپذیرد.

ماژول بلوتوث HC-05

میتوانید توضیحات پین های ماژول بلوتوث را در زیر مطالعه کنید:

  • VCC این پین برای تامین برق ماژول استفاده می شود. معمولاً در محدوده ولتاژ 3.3 تا 6 ولت کار می کند.
  • GND این پایه اتصال زمین برای ماژول است و باید به GND منبع تغذیه و آردوینو متصل شود.
  • TXD این پین برای انتقال داده است و برای ارسال اطلاعات از ماژول به دستگاه دیگر استفاده می شود. باید به پین دریافت (RX) دستگاه گیرنده متصل شود.
  • RXD این پین برای دریافت اطلاعات است و برای دریافت اطلاعات از دستگاه دیگری استفاده می شود. باید به پین انتقال (TX) دستگاه فرستنده متصل شود.
  • STATE این پین یک پین اختیاری است که می توان از آن برای بررسی وضعیت ماژول استفاده کرد. می توان آن را طوری پیکربندی کرد که اطلاعات مربوط به وضعیت اتصال ماژول یا سایر اطلاعات مرتبط را ارائه دهد.
  • EN این پین برای فعال یا غیرفعال کردن ماژول (حالت فرمان و داده) استفاده می شود. هنگامی که این پین بالا (3.3 ولت یا 5 ولت) باشد، ماژول فعال می شود (حالت فرمان) و هنگامی که آن را LOW (0 ولت یا GND) کنید، ماژول غیرفعال می شود (حالت داده).

شاسی مریخ نورد

ما از یک ورق پلکسی گلاس با استفاده از لیزر برای ایجاد شاسی برای پروژه خود استفاده کرده ایم. این ورق طوری برش داده شده است که تمام اتصالات و اجزای لازم را در خود جای دهد و امکان مونتاژ آسان با استفاده از پیچ گوشتی را فراهم می کند.

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید

شاسی مریخ نورد

با کمک پیچ و مهره های 10 میلی متری M4 پایه عقب را به پایه جلو متصل کنید.

المان های ربات

جفت پای جلو و عقب را به صفحه پایه با کمک گیره L با مهره ها و پیچ های 10 میلی متری M3، M4 وصل کنید. موتورها را با هر دو پایه به محل مناسب خود با مهره و پیچ و مهره 30 میلی متری M3 وصل کنید.

موتورهایی با پایه های مریخ نورد

تمام قطعات الکترونیکی را با چسب دو طرفه در محل مناسب خود قرار دهید.

اتصال قطعات الکترونیکی ربات آردوینو

مدار مریخ نورد بلوتوثی آردوینو

در تصویر زیر شماتیک یک مریخ نورد کنترل شده با بلوتوث را مشاهده می کنید. در این طرح در مجموع شش موتور داریم که سه موتور به صورت موازی در سمت راست و سه موتور به صورت موازی در سمت چپ متصل می شوند. این پیکربندی به هر سه موتور در هر طرف اجازه می دهد تا به طور همزمان کار کنند و با سرعت یکسان و در یک جهت حرکت کنند. با اتصال موازی آنها، اطمینان حاصل می کنیم که سیگنال های کنترلی و منبع تغذیه یکسان را دریافت می کنند. این ترتیب حرکت کارآمد و هماهنگ را برای مریخ نورد امکان پذیر می کند و قدرت مانور و پایداری آن را افزایش می دهد.

مدار مریخ نورد بلوتوثی آردوینو

اتصالات ماژول بلوتوث آردوینو و HC-05:

  • پایه TX ماژول بلوتوث را به پایه RX (پایه 0) آردوینو وصل کنید.
  • پایه RX ماژول بلوتوث را به پایه TX (پایه 1) آردوینو وصل کنید.
  • پایه های VCC و GND ماژول بلوتوث را به برق مناسب (+5 ولت) و پایه GND در آردوینو وصل کنید.

آردوینو و ماژول درایور موتور:

  • پایه های دیجیتال 10، 9، 8 و 7 را به پایه های ورودی IN1، IN2، IN3، و IN4 در ماژول درایور موتور متصل کنید.
  • پین های ENA و ENB ماژول درایور موتور را با کمک پین هدر مادگی به پین High State روی برد متصل کنید.
  • پایه های OUT1، OUT2، OUT3 و OUT4 ماژول درایور موتور را به پایانه های مناسب موتورها وصل کنید.
  • پایه های VCC (+5V) و GND ماژول درایور موتور را به اتصالات مناسب برق (Vin) و زمین (GND) در آردوینو وصل کنید.

منبع تغذیه:

  • ترمینال مثبت منبع تغذیه را به ورودی +12 ولت ماژول درایور موتور وصل کنید.
  • ترمینال منفی منبع تغذیه را به پایه GND ماژول درایور موتور وصل کنید.
  • پایه GND آردوینو را به پایه GND ماژول درایور موتور وصل کنید.

تصویر نهایی ربات مریخ نورد

کد آردوینو ربات مریخ نورد با اتصال بلوتوث

کد کامل پروژه در فایل دانلودی انتهای صفحه قرار داده شده است. در اینجا قسمت های مهم کد را بررسی میکنیم.

پیکربندی پین ها: پین های روی برد آردوینو که به ماژول درایور موتور و سایر اجزا وصل شده اند در ابتدای کد تعریف شده اند. این مرحله تضمین می کند که از پین های صحیح برای کنترل موتور و سایر عملیات استفاده می شود.

ما پین های IN1، IN2، IN3 و IN4 را به صورت 10،9،8 و 7 پایه دیجیتال آردوینو تعریف کرده ایم. این پایه ها به پایه های ورودی ماژول درایور موتور متصل می شوند.

 int state=0;
const int motorpin11=10;  // L298n #NI1
const int motorpin12=9;   // L298n #NI2
const int motorpin21=8;   // L298n #NI3
const int motorpin22=7;   // L298n #NI4

Setup: تابع setup فقط یک بار در ابتدای اجرای کد اجرا می شود. وظیفه پیکربندی پروتکل های ارتباطی، تنظیم حالت پین و مقداردهی اولیه متغیرها را بر عهده دارد

در تابع setup() با مقداردهی اولیه ارتباط سریال سخت افزاری با باود ریت 9600 شروع می کنیم. این ارتباط به آردوینو اجازه می دهد تا با دستگاه های خارجی مانند ماژول بلوتوث با نرخ انتقال داده مشخص شده ارتباط برقرار کند.

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

void setup() {
  Serial.begin(9600); 
  pinMode(motorpin11,OUTPUT);
  pinMode(motorpin12,OUTPUT);
  pinMode(motorpin21,OUTPUT);
  pinMode(motorpin22,OUTPUT);
  digitalWrite(motorpin11,LOW);
  digitalWrite(motorpin12,LOW);
  digitalWrite(motorpin21,LOW);
  digitalWrite(motorpin22,LOW);
}

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

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

کد به سیگنال های بلوتوث ورودی گوش می دهد و دستورات را از یک دستگاه جفت شده دریافت می کند. این می تواند شامل دستورالعمل هایی برای حرکت به جلو، عقب، چرخش به چپ یا راست، یا توقف مریخ نورد باشد.

  void loop()
  { if (Serial.available()>0)
  state=Serial.read();
{

دستورات دریافتی به سیگنال های کنترل موتور مناسب تبدیل می شوند. کد سیگنال های لازم را به ماژول درایور موتور ارسال می کند و جهت ها را مطابق دستورالعمل تنظیم می کند.

 if (state=='F') {
    digitalWrite(motorpin11,HIGH);
    digitalWrite(motorpin12,LOW);     // Forward motion of rover
    digitalWrite(motorpin21,HIGH);
    digitalWrite(motorpin22,LOW);
  }     
   else if(state=='B') {
      digitalWrite(motorpin11,LOW);
      digitalWrite(motorpin12,HIGH);   // Backward motion of rover
      digitalWrite(motorpin21,LOW);
      digitalWrite(motorpin22,HIGH);
      }
      else if(state=='S') {
        digitalWrite(motorpin11,LOW);
        digitalWrite(motorpin12,LOW);     // Stop
        digitalWrite(motorpin21,LOW);
        digitalWrite(motorpin22,LOW);
        }
        else if(state=='L') {
        digitalWrite(motorpin11,HIGH);
        digitalWrite(motorpin12,LOW);     // Left motion of rover
        digitalWrite(motorpin21,LOW);
        digitalWrite(motorpin22,HIGH);
        }
        else if(state=='R')
      {
        digitalWrite(motorpin11,LOW);
        digitalWrite(motorpin12,HIGH);     // Right motion of rover
        digitalWrite(motorpin21,HIGH);
        digitalWrite(motorpin22,LOW);
        }
        else if(state=='l')
      {
        digitalWrite(motorpin11,LOW);
        digitalWrite(motorpin12,HIGH);    // Backward Left motion of rover
        digitalWrite(motorpin21,HIGH);
        digitalWrite(motorpin22,LOW);
        }
        else if(state=='r')
      {
        digitalWrite(motorpin11,HIGH);
        digitalWrite(motorpin12,LOW);     // Backward Right motion of rover
        digitalWrite(motorpin21,LOW);
        digitalWrite(motorpin22,HIGH);
        }
  }}

داده های دریافتی با استفاده از دستورات if و else if مقایسه می شوند که امکان اجرای مشروط عبارات خاص را بر اساس ارزیابی این شرایط فراهم می کند.

در این عبارات شرطی، ما هفت تابع حرکتی مختلف را تعریف کرده‌ایم که با اقدامات مختلف مریخ‌نورد مطابقت دارد. این توابع در داخل دستورات if بر اساس شرایط خاص فراخوانی می شوند. هر تابع وظیفه کنترل یک حرکت خاص مانند حرکت به جلو، عقب، چرخش به چپ یا راست، توقف، عقب به چپ و عقب به راست را بر عهده دارد.

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

به طور خلاصه، دستور if و else if کد را قادر می سازد تا داده های دریافتی را ارزیابی کند و تابع حرکت مربوطه را بر اساس شرایط انجام شده اجرا کند و کنترل دقیق و مانورپذیری مریخ نورد را تسهیل می کند.

برنامه اندروید کنترل ربات مریخ نورد

برای اتصال ربات به موبایل اندروید این مراحل را دنبال کنید:

  • برنامه «Bluetooth RC Car» را در دستگاه Android خود باز کنید. میتوانید از بازار یا پلی استور آن را دانلود کنید.
  • بلوتوث گوشی خود را با رفتن به تنظیمات گوشی خود روشن کنید.
  • گوشی خود را به ماژول بلوتوث HC-05 وصل کنید. اگر یک ماژول HC-05 جدید دارید، یک مرحله اضافی قبل از اتصال وجود دارد.
  • به تنظیمات بلوتوث گوشی خود بروید.
  • دستگاه های بلوتوث را جستجو کنید.
  • یک دستگاه بلوتوث به نام HC-05 پیدا خواهید کرد.
  • با انتخاب دستگاه بلوتوث با تلفن خود آن را جفت کنید.
  • در طول فرآیند جفت شدن، از شما خواسته می شود یک رمز عبور وارد کنید.
  • رمز عبور پیش فرض برای HC-05 معمولاً 1234 یا 0000 است.
  • رمز عبور را وارد کرده و فرآیند جفت شدن را ادامه دهید.
  • پس از موفقیت آمیز شدن عملیات جفت شدن، مریخ نورد شما اکنون به دستگاه اندرویدی شما متصل است.

کنترلر بلوتوث RC

با دنبال کردن این مراحل، می‌توانید بین تلفن خود و ماژول بلوتوث مریخ‌نورد ارتباط برقرار کنید و به شما این امکان را می‌دهد تا با استفاده از برنامه «Bluetooth RC Car» به‌صورت بی‌سیم آن را کنترل کنید.

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

موارد موجود در فایل : سورس کامل

5 (3 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید قرار بدهم. سوالات مربوط به این مطلب را در قسمت نظرات همین مطلب اعلام کنید. سعی میکنم در اسرع وقت به نظرات شما پاسخ بدهم.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *