Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Arduino
120 min
Share

بناء سيارة يمكن التحكم فيها عن طريق هاتفك الذكي

مع التطور السريع للتقنيات الحديثة، أصبح التحكم في الأجهزة عن بُعد أمرًا شائعًا. مشروعنا يتيح بناء سيارة يمكن التحكم فيها بواسطة هاتف ذكي، مما يمزج بين الإلكترونيات والبرمجة لتقديم تجربة تعليمية تفاعلية وممتعة.

Project Video

Overview

في هذا المشروع، سوف نتعلم كيف نبني سيارة يمكن التحكم فيها باستخدام تطبيق على هاتفك الذكي عن طريق تقنية البلوتوث، بحيث نستطيع التحكم في حركتها إلى الأمام وإلى الخلف ويمينًا ويسارًا ونستطيع تشغيل المصابيح الأمامية، ونستطيع التحكم في صفارة مثبتة على السيارة عن بُعد.

Getting the Items

Arduino Uno R3 (Voltaat Version)
Get Item
HC-05 Bluetooth Module
Get Item
2Amp 7V-30V L298N Motor Driver / Stepper Driver (2 Channels)
Get Item
Clear 5mm LED (5 pack)
Get Item
Passive Buzzer – 5V
Get Item
1/4 Watt Resistor (20 Pack)
Get Item
Half-size Breadboard
Get Item
3×18650 Battery Holder
Get Item
Lithium ion 3.7 V 3800mah rechargeable battery – 18650
Get Item
DC Female Jack Plug Extensioin cable (5.5 x 2.1mm)
Get Item
Jumper Wires - Male to Male (40 Pack)
Get Item
Jumper Wires – Male to Female (40 Pack)
Get Item

Steps

فى البداية, قم بتجميع السيارة ذات الاربع عجلات, يمكنك رؤية كيفية تجميعها من خلال الفيديو التالى :

والان قم بالدخول على متجر جوجل بلاى على هاتفك الذكى وقم بتنزيل برنامج rc bluetoothcontroller  ومن ثم قم بتشغيل البلوتوث على هاتفك يمكنك الوصول للتطبيق عبر هذا الرابط:

https://play.google.com/store/apps/details?id=com.SanitTech.RCBluetoothControllerHC05&hl=en&pli=1

ومن ثم قم بفتح البرنامج وقم بتوصيل البطارية بالسيارة, ومن ثم على التطبيق قم بالضغط على علامة الترس أعلى يسار التطبيق ومن ثم اختر connect to module  , والان يمكنك التحكم فى حركة

السيارة ويمكنك التحكم فى اضاءة المصابيح وتشغيل الصفارة.

Wiring it Up

يجب عليك توصيل بطارية مناسبة بقائد المحركات لإمداد المحرك بالطاقة، فعلى سبيل المثال إذا كان المحرك يعمل بجهد 12 فولت فإن البطارية المناسبة لا بد أن تملك جهد تشغيل 12 فولت، كما أنه يجب عليك توصيل الطرف الأرضي (Gnd) من الأردوينو بالطرف الأرضي (Gnd) لقائد المحركات L298n حتى تعمل الدائرة بشكل صحيح.

بعد تجميع السيارة وتثبيت القطع الإلكترونية، قم بتوصيل الأسلاك بين موديول البلوتوث ولوحة الأردوينو وقائد المحركات والمحركات والمصابيح والصفارة كما هو موضح في الصورة أدناه.

التوصيلات من الاردوينو الى لوحة التجارب :

• منفذ ال 5 فولت ← المنافذ الموجبة بلوحة التجارب

• منفذ الجراوند ← المنافذ السالبة بلوحة التجارب

التوصيلات من قائد المحركاتL298N  الى لوحة التجارب :

•   منفذ ال 5 فولت من قائد المحركات ← المنافذ الموجبة بلوحة التجارب

•   منفذ الجراوند من قائد المحركات ← المنافذ السالبة بلوحة التجارب

التوصيلات من وصلة مدخل البطارية الى قائد المحركات :

• الطرف الموجب لوصلة مدخل البطارية  ← منفذ ال+12 بقائد المحركات

• الطرف السالب لوصلة مدخل البطارية ← منفذ الجراوند بقائد المحركات

التوصيلات من قائد المحركاتL298N :

• المنفذ EnA من قائد المحركات ← المنفذ رقم 5 فى لوحة الاردوينو

• المنفذ IN1 من قائد المحركات ← المنفذ رقم 11 فى لوحة الاردوينو

• المنفذ IN2 من قائد المحركات ← المنفذ رقم 10 فى لوحة الاردوينو

• المنفذ ENB من قائد المحركات ← المنفذ رقم 6 فى لوحة الاردوينو

• المنفذ IN3 من قائد المحركات ← المنفذ رقم 9 فى لوحة الاردوينو

• المنفذ IN4 من قائد المحركات ← المنفذ رقم 8 فى لوحة الاردوينو

التوصيلات من المحركات اليمنى:

•  احد اطراف المحرك الأول الأيمن ← احد اطراف المحرك الثانى الأيمن  ← المنفذ OUT1 فى قائد المحركات

•  الطرف الاخر للمحرك الأول الأيمن ← الطرف الاخر للمحرك الثانى الأيمن ← المنفذ OUT2 فى قائد المحركات

التوصيلات من المحركات اليسرى:

•  احد اطراف المحرك الأول الأيسر ← احد اطراف المحرك الثانى الأيسر  ← المنفذ OUT3 فى قائد المحركات

•  الطرف الاخر للمحرك الأول الأيسر ← الطرف الاخر للمحرك الثانى الأيسر ← المنفذ OUT4 فى قائد المحركات

التوصيلات من موديول البلوتوث :

• منفذ ال VCC  من موديول البلوتوث ← المنافذ الموجبة بلوحة التجارب

• منفذ ال GND من موديول البلوتوث ← المنافذ السالبة بلوحة التجارب

• منفذ ال  RXDمن موديول البلوتوث ← منفذ رقم  1 فى لوحة الاردوينو

• منفذ ال TXD  من موديول البلوتوث ← منفذ رقم 0 فى لوحة الاردوينو

التوصيلات من المصابيح :

• الطرف الموجب من المصباح الأول  ← مقاومة 220 اوم ← منفذ رقم 2 فى لوحة الاردوينو

• الطرف السالب من المصباح الأول ← المنافذ السالبة بلوحة التجارب

• الطرف الموجب من المصباح الثانى ← مقاومة 220 اوم ← منفذ رقم 3 فى لوحة الاردوينو

• الطرف السالب من المصباح الثانى ← المنافذ السالبة بلوحة التجارب

التوصيلات من الصفارة :

• الطرف الموجب للصفارة ← منفذ رقم 4 فى لوحة الاردوينو

• الطرف السالب للصفارة ← المنافذ السالبة بلوحة التجارب

Coding

/*

Voltaat learn (https://www.voltaat.com)

The function of this sketch is to connect the car to an application on your smartphone using

Bluetooth, allowing you to control its movement forward, backward, right, and left. Additionally,

you can turn on the front lights and control a buzzer mounted on the car remotely.

Connections from the Arduino to the breadboard:

• Arduino 5v pin → breadboard 5v line

• Arduino GND pin → breadboard GND line

The connections from the L298N motor driver to the breadboard:

• 5V pin from the motor driver → breadboard 5v line

• GND pin from the motor driver → breadboard GND line

The connections from the battery input to the motor driver:

• Positive terminal of the battery input → +12V port on the motor driver

• Ground terminal of the battery input → Ground (GND) port on the motor driver

Connections from Bluetooth Module:

• Bluetooth VCC pin → Arduino 5V pin

• Bluetooth GND pin → Arduino GND pin

• Bluetooth TX pin → Arduino pin 0 (RX)

• Bluetooth RX pin → Arduino pin 1 (TX)

Connections from the l298n motor driver :

• ENA pin → Arduino pin 5

• In1 pin → Arduino pin 11

• In2 pin → Arduino pin 10

• In3 pin → Arduino pin 9

• In4 pin → Arduino pin 8

• ENB pin → Arduino pin 6

The connections from the right motors:

• One terminal of the first right motor → One terminal of the second right motor → OUT1 port in the motor driver

• The other terminal of the first right motor → The other terminal of the second right motor → OUT2 port in the motor driver

The connections from the left motors:

• One terminal of the first left motor → One terminal of the second left motor → OUT3 port in the motor driver

• The other terminal of the first left motor → The other terminal of the second left motor → OUT4 port in the motor driver

Connections from the LEDs:

• Positive terminal of the first LED → 220-ohm resistor → Pin 2 on the Arduino board

• Negative terminal of the first LED → Ground pins on the breadboard

• Positive terminal of the second LED → 220-ohm resistor → Pin 3 on the Arduino board

• Negative terminal of the second LED → Ground pins on the breadboard

Connections from the buzzer:

• Positive terminal of the buzzer → Pin 4 on the Arduino board

• Negative terminal of the buzzer → Ground pins on the breadboard

*/

#define in1 11 // L298n Motor Driver pins.

#define in2 10

#define in3 9

#define in4 8

#define ENA 5

#define ENB 6

#define LED_PIN_1 2   // LED connected to pin 2.

#define LED_PIN_2 3

#define BUZZER_PIN 4 // Buzzer connected to pin 3.

int command; // Int to store app command state.

const int Speed = 200; // Fixed speed (constant).

int Speedsec; // Secondary speed for turning.

int buttonState = 0;

int lastButtonState = 0;

int Turnradius = 0; // Turn radius (unchanged, can remain for movement logic).

int brakeTime = 45;

int brkonoff = 1; // 1 for the electronic braking system, 0 for normal.

void setup() {

 pinMode(in1, OUTPUT);

 pinMode(in2, OUTPUT);

 pinMode(in3, OUTPUT);

 pinMode(in4, OUTPUT);

 pinMode(LED_BUILTIN, OUTPUT); // Built-in LED.

 pinMode(LED_PIN_1, OUTPUT);     // External LED pin.

 pinMode(LED_PIN_2, OUTPUT);     // External LED pin.

 pinMode(BUZZER_PIN, OUTPUT);  // Buzzer pin.

 Serial.begin(9600);           // Set the baud rate to your Bluetooth module.

}

void loop() {

 if (Serial.available() > 0) {

   command = Serial.read();

   Stop(); // Initialize with motors stopped.

   switch (command) {

     case 'F':

       forward();

       break;

     case 'B':

       back();

       break;

     case 'L':

       left();

       break;

     case 'R':

       right();

       break;

     case 'G':

       forwardleft();

       break;

     case 'I':

       forwardright();

       break;

     case 'H':

       backleft();

       break;

     case 'J':

       backright();

       break;

     case 'U': // Turn LED on (O = ON).

       digitalWrite(LED_PIN_1, HIGH);

       digitalWrite(LED_PIN_2, HIGH);

       break;

     case 'u': // Turn LED off (X = OFF).

       digitalWrite(LED_PIN_1, LOW);

       digitalWrite(LED_PIN_2, LOW);

       break;

     case 'W': // Turn Buzzer ON (Z = Buzzer ON).

       digitalWrite(BUZZER_PIN, HIGH);

       break;

     case 'w': // Turn Buzzer OFF (M = Buzzer OFF).

       digitalWrite(BUZZER_PIN, LOW);

       break;

   }

   Speedsec = Turnradius; // Keep turning behavior.

   if (brkonoff == 1) {

     brakeOn();

   } else {

     brakeOff();

   }

 }

}

void forward() {

 analogWrite(ENA, Speed);

 analogWrite(ENB, Speed);

 digitalWrite(in2, HIGH);

 digitalWrite(in3, HIGH);

}

void back() {

 analogWrite(ENA, Speed);

 analogWrite(ENB, Speed);

 digitalWrite(in1, HIGH);

 digitalWrite(in4, HIGH);

}

void left() {

 analogWrite(ENA, Speed);

 analogWrite(ENB, Speed);

 digitalWrite(in2, HIGH);

 digitalWrite(in4, HIGH);

}

void right() {

 analogWrite(ENA, Speed);

 analogWrite(ENB, Speed);

 digitalWrite(in1, HIGH);

 digitalWrite(in3, HIGH);

}

void forwardleft() {

 analogWrite(ENA, Speed);

 analogWrite(ENB, Speed);

 digitalWrite(in2, HIGH);

 digitalWrite(in4, HIGH);

}

void forwardright() {

 analogWrite(ENA, Speed);

 analogWrite(ENB, Speed);

 digitalWrite(in1, HIGH);

 digitalWrite(in3, HIGH);

}

void backright() {

 analogWrite(ENA, Speed);

 analogWrite(ENB, Speed);

 digitalWrite(in2, HIGH);

 digitalWrite(in4, HIGH);

}

void backleft() {

 analogWrite(ENA, Speed);

 analogWrite(ENB, Speed);

 digitalWrite(in2, HIGH);

 digitalWrite(in4, HIGH);

}

void Stop() {

 digitalWrite(in1, 0);

 digitalWrite(in2, 0);

 digitalWrite(in3, 0);

 digitalWrite(in4, 0);

}

void brakeOn() {

 // Electronic braking system logic.

 buttonState = command;

 if (buttonState != lastButtonState) {

   if (buttonState == 'S') {

     if (lastButtonState != buttonState) {

       digitalWrite(in1, HIGH);

       digitalWrite(in2, HIGH);

       digitalWrite(in3, HIGH);

       digitalWrite(in4, HIGH);

       delay(brakeTime);

       Stop();

     }

   }

   lastButtonState = buttonState;

 }

}

void brakeOff() {

 // No braking logic here.

}

Testing it Out

بعد رفع الكود البرمجي قم بفتح تطبيق RC Bluetooth Controller على هاتفك الذكي، وبعد ربط التطبيق بالسيارة عبر تقنية البلوتوث ستستطيع التحكم في حركتها إلى الأمام وإلى الخلف ويمينًا ويسارًا وتشغيل المصابيح الأمامية، وستستطيع التحكم في صفارة مثبتة على السيارة عن بُعد.

Resources

No items found.