Arduino – Control DC Motor via Bluetooth Leave a comment

In this project, we will control a DC motor with a smartphone via Bluetooth. This project is great to learn more about:

  • DC motor.
  • Interfacing Arduino with your smartphone.
  • Bluetooth module.
  • L293D.

Step 1: Parts required

exp9_has_2

  • 1x Arduino Uno.
  • 1x Bluetooth Module (for example: HC-05).
  • BlueTeam App
  • 1x Smartphone (any Android will work).
  • BlueTerm application.
  • 1x L293D IC.
  • 1x DC motor.
  • 1x Breadboard.
  • Jumper Cables.

 

Step 2: Schematics and common mistakes

exp9_has_3

exp9_has_4

Two common mistakes:

  1. You need to remove the RX and TX cables when you’re uploading the sketch to your Arduino.
  2. Sometimes people connect the TX from the bluetooth module to the TX of the Arduino… that’s wrong and it won’t work. Make sure you connect it properly, the TX into RX and the RX into the TX.

Note:

If the HC-05 Bluetooth Module asks for a password, It’s ‘1234’.

For the android communication with our bluetooth module I’ve used the BlueTerm app, It’s completely free, so you just need to go to “Play store” and download it. Then you just need to connect your smarthphone with the bluetooth module. Remember to remove the TX and RX cables. (you can see in youtube video below how that’s done).

Arduino Code

int motorPin1 = 3; // pin 2 on L293D IC
int motorPin2 = 4; // pin 7 on L293D IC
int enablePin = 5; // pin 1 on L293D IC
int state;
int flag=0;        //makes sure that the serial only prints once the state
 
void setup() {
    // sets the pins as outputs:
    pinMode(motorPin1, OUTPUT);
    pinMode(motorPin2, OUTPUT);
    pinMode(enablePin, OUTPUT);
    // sets enablePin high so that motor can turn on:
    digitalWrite(enablePin, HIGH);
    // initialize serial communication at 9600 bits per second:
    Serial.begin(9600);
}
 
void loop() {
    //if some date is sent, reads it and saves in state
    if(Serial.available() > 0){    
      state = Serial.read();  
      flag=0;
    }  
    // if the state is ‘0’ the DC motor will turn off
    if (state == ‘0’) {
        digitalWrite(motorPin1, LOW); // set pin 2 on L293D low
        digitalWrite(motorPin2, LOW); // set pin 7 on L293D low
        if(flag == 0){
          Serial.println(“Motor: off”);
          flag=1;
        }
    }
    // if the state is ‘1’ the motor will turn right
    else if (state == ‘1’) {
        digitalWrite(motorPin1, LOW); // set pin 2 on L293D low
        digitalWrite(motorPin2, HIGH); // set pin 7 on L293D high
        if(flag == 0){
          Serial.println(“Motor: right”);
          flag=1;
        }
    }
    // if the state is ‘2’ the motor will turn left
    else if (state == ‘2’) {
        digitalWrite(motorPin1, HIGH); // set pin 2 on L293D high
        digitalWrite(motorPin2, LOW); // set pin 7 on L293D low
        if(flag == 0){
          Serial.println(“Motor: left”);
          flag=1;
        }
    }
}

The items used in this experiment
المواد المستخدمة في التجربة يمكنكم اضافتها الى سلة مشترياتكم مباشرة من هنا

We’ve only set 3 commands to control the DC motor:

    ’0′ – Turns off the DC motor
    ’1′ – DC motor rotates to right
    ’2′ – DC motor rotates to left

Leave a Reply

Your email address will not be published. Required fields are marked *