آموزش ساخت ربات کنترلی با موبایل (arduino + Bluetooth)

معرفی کلی پروژه

در این آموزش قصد داریم به‌صورت کاملاً عملی و پروژه‌محور یک ربات دوچرخ کنترلی با موبایل را طراحی و راه‌اندازی کنیم. این ربات با استفاده از آردوینو Uno، شیلد درایور موتور L293 و ماژول بلوتوث HC-05 ساخته می‌شود و از طریق تلفن همراه (اندروید) قابل کنترل است.

این پروژه به‌گونه‌ای طراحی شده که برای افراد مبتدی نیز کاملاً مناسب باشد و بدون نیاز به پیش‌زمینه تخصصی، مفاهیم پایه‌ای زیر را به شما آموزش دهد:

مراحل ساخت

1. لحیم کردن اتصالات

در این مرحله، اتصالات مورد نیاز برای راه‌اندازی ربات را لحیم می‌کنیم. این اتصالات شامل لحیم کردن سیم‌ها به ماژول‌ها و موتور‌ها است. برای این کار به یک دستگاه لحیم‌کاری و مهارت‌های اولیه لحیم‌کاری نیاز داریم.

ابتدا سیم های موتورها را لحیم میکنیم.

سپس خروجی باتری را به B+ و B- ماژول شارژر Type C لحیم میکنیم.

در ادامه خروجی ماژول شارژ را به ورودی ماژول افزاینده MT3608 متصل می‌کنیم.

2. مونتاژ مکانیکی

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

ابتدا موتور ها را در جای خود قرار دهید و با استفاده از قفل ها آنها را محکم کنید. جهت استحکام بیشتر پیشنهاد می‌شود از چسب حرارتی در پشت موتورها استفاده شود.

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

در ادامه زنجیر چرخ های چپ و راست را متصل میکنیم.

3. مونتاژ قطعات الکترونیکی

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

سپس ماژول افزاینده ولتاژ را روی باتری با چسب حرارتی یا چسب دو طرفه قرار می‌دهیم.

در نهایت ماژول شارژر را در قسمت پشتی ربات طوری قرار می‌دهیم که در دسترس باشد و بتوان از پورت USB Type C آن به راحتی استفاده کرد.

4. مونتاژ آردوینو

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

5. نصب شیلد درایور موتور

شیلد درایور موتور L293D جهت کنترل سرعت و جهت چرخش موتورهای DC طراحی شده و به راحتی روی بورد آردوینو UNO سوار می‌شود.

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

6. اتصال ماژول بلوتوث

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

7. اتصال سنسور فاصله سنج

سنسور فاصله سنج SRF-04 یک سنسور اولتراسونیک است که جهت اندازه گیری فاصله و تشخیص موانع استفاده می‌شود. اتصال این سنسور روی ربات به صورت زیر می‌باشد.

8. آپلود برنامه روی ربات

جهت آپلود برنامه روی ربات به نرم افزار Arduino IDE نیاز داریم که می‌توان از وب سایت رسمی آردوینو دانلود کرد. پس از دانلود فایل برنامه آن را اجرا کرده و بر روی بورد آردوینو آپلود نمایید.

دانلود برنامه ربات کنترلی با موبایل
دانلود مستقیم اپلیکیشن اندروید ArduinoCar
دانلود اپلیکیشن ArduinoCar از GooglePlay
ADC.ino
#include "AFMotor.h"
#include "SoftwareSerial.h"

SoftwareSerial mySerial(9, 10); // RX, TX

AF_DCMotor motor1(1);
AF_DCMotor motor2(2);

void setup() {
    motor1.setSpeed(150);
    motor2.setSpeed(150);
    Serial.begin(9600);
    mySerial.begin(9600);
}

void loop() {
    if (mySerial.available()) {
        char d = mySerial.read();
        Serial.println(d);
        if(d == 'F'){
        motor1.run(FORWARD);
        motor2.run(BACKWARD);
        }
        if(d == 'G'){
        motor1.run(BACKWARD);
        motor2.run(FORWARD);
        }
        if(d == 'R'){
        motor1.run(FORWARD);
        motor2.run(FORWARD);
        }
        if(d == 'L'){
        motor1.run(BACKWARD);
        motor2.run(BACKWARD);
        }
        if(d == 'E'){
        motor1.run(FORWARD);
        motor2.run(RELEASE);
        }
        if(d == 'Q'){
        motor1.run(RELEASE);
        motor2.run(BACKWARD);
        }
        if(d == 'C'){
        motor1.run(BACKWARD);
        motor2.run(RELEASE);
        }
        if(d == 'Z'){
        motor1.run(RELEASE);
        motor2.run(FORWARD);
        }
        if(d == 'S'){
        motor1.run(RELEASE);
        motor2.run(RELEASE);
        }
    }
}