Table of Contents

Play Video

ROVER

Designing a rover with a Bluetooth module, Bo-motor (DC motor), and a motor driver shield provides a comprehensive platform for creating a remote-controlled vehicle capable of navigating diverse terrains. Here’s a detailed description of each component and their integration:

Components Used:

1. Bluetooth Module (e.g., HC-05 or HC-06):

· The Bluetooth module establishes wireless communication with a paired device, such as a smartphone or tablet. It uses the Serial Communication Protocol (UART) to transmit and receive data, enabling real-time control of the rover.

2. Bo-motor (DC Motor):

· Bo-motors, or DC motors, are commonly used in robotic applications for their simplicity and controllability. They provide rotational motion to drive the rover’s wheels.

3. Motor Driver Shield:

· A motor driver shield (such as L298N or L293D) acts as an interface between the microcontroller (e.g., Arduino) and the Bo-motors. It regulates the voltage and current supplied to the motors, allowing precise control of their speed and direction.

4. Microcontroller (e.g., Arduino Uno):

· The microcontroller serves as the brain of the rover, coordinating input from the Bluetooth module and controlling the motor driver shield to drive the Bo-motors. Arduino boards are popular choices due to their versatility and ease of programming.

5. Power Supply:

· A suitable power source is required to provide adequate voltage and current to both the microcontroller and the motors. This is typically provided by a battery pack or a combination of batteries.

Working Principle:

6. Bluetooth Connectivity:

· Users connect their smartphone or tablet to the rover via Bluetooth using a dedicated mobile app. The Bluetooth module on the rover establishes a wireless serial communication link with the paired device.

7. Remote Control Interface:

· The mobile app sends control commands (such as forward, backward, left, right) to the rover through the Bluetooth module. These commands are received by the microcontroller (Arduino).

8. Motor Control:

· Upon receiving commands, the Arduino processes them and sends corresponding signals to the motor driver shield. The motor driver shield interprets these signals and adjusts the voltage and polarity supplied to the Bo-motors accordingly.

9. Movement and Navigation:

· The Bo-motors rotate the wheels based on the signals from the motor driver shield, allowing the rover to move in the desired direction and at variable speeds. This setup enables the rover to navigate through different environments, from smooth surfaces to rough terrains.

10. Feedback and Sensors (Optional):

· Optionally, sensors such as ultrasonic sensors or IR sensors can be integrated with the rover to provide feedback on distance, obstacles, or environmental conditions. This enhances the rover’s autonomy and safety during operation.

Applications and Benefits:

· Educational Tool: Ideal for learning about electronics, robotics, and programming, offering hands-on experience in designing and controlling mobile robots.

· Hobbyist Projects: Enables enthusiasts to customize and expand the rover’s capabilities, integrating additional sensors or features for specific applications.

· Prototyping: Serves as a prototype platform for developing more advanced robotic systems or exploring autonomous navigation algorithms.

Implementation Considerations:

· Programming: Requires programming skills to code Arduino to interpret Bluetooth commands and control motor movements effectively.

· Mechanical Design: Designing a robust chassis and wheel system to withstand the rover’s movements and environmental conditions.

· Power Management: Ensuring the power supply can sustain the operating requirements of both the microcontroller and the motors for extended periods.

By combining a Bluetooth module, Bo-motor, and motor driver shield with a microcontroller like Arduino, a rover can be created that offers both functionality and educational value. This setup allows for versatile control and maneuverability, making it suitable for a wide range of applications in robotics experimentation and learning.

CIRCUIT DIAGRAM

CODE

#include <AFMotor.h>
 
//initial motors pin
AF_DCMotor motor1(1, MOTOR12_1KHZ);
AF_DCMotor motor2(2, MOTOR12_1KHZ);
AF_DCMotor motor3(3, MOTOR34_1KHZ);
AF_DCMotor motor4(4, MOTOR34_1KHZ);
 
int val;
int Speeed = 255;
 
void setup()
{
  Serial.begin(9600);  //Set the baud rate to your Bluetooth module.
}
void loop(){
  if(Serial.available() > 0){
    val = Serial.read();
     
    Stop(); //initialize with motors stoped
     
          if (val == 'F'){
          forward();
          }
 
          if (val == 'B'){
          back();
          }
 
          if (val == 'L'){
          left();
          }
 
          if (val == 'R'){
          right();
          }
          if (val == 'I'){
          topright();
          }
 
          if (val == 'J'){
          topleft();
          }
 
          if (val == 'K'){
          bottomright();
          }
 
          if (val == 'M'){
          bottomleft();
          }
          if (val == 'T'){
          Stop();
          }
  }
}
          
 
           
 
 
 
void forward()
{
  motor1.setSpeed(Speeed); //Define maximum velocity
  motor1.run(FORWARD); //rotate the motor clockwise
  motor2.setSpeed(Speeed); //Define maximum velocity
  motor2.run(FORWARD); //rotate the motor clockwise
  motor3.setSpeed(Speeed);//Define maximum velocity
  motor3.run(FORWARD); //rotate the motor clockwise
  motor4.setSpeed(Speeed);//Define maximum velocity
  motor4.run(FORWARD); //rotate the motor clockwise
}
 
void back()
{
  motor1.setSpeed(Speeed); //Define maximum velocity
  motor1.run(BACKWARD); //rotate the motor anti-clockwise
  motor2.setSpeed(Speeed); //Define maximum velocity
  motor2.run(BACKWARD); //rotate the motor anti-clockwise
  motor3.setSpeed(Speeed); //Define maximum velocity
  motor3.run(BACKWARD); //rotate the motor anti-clockwise
  motor4.setSpeed(Speeed); //Define maximum velocity
  motor4.run(BACKWARD); //rotate the motor anti-clockwise
}
 
void left()
{
  motor1.setSpeed(Speeed); //Define maximum velocity
  motor1.run(BACKWARD); //rotate the motor anti-clockwise
  motor2.setSpeed(Speeed); //Define maximum velocity
  motor2.run(BACKWARD); //rotate the motor anti-clockwise
  motor3.setSpeed(Speeed); //Define maximum velocity
  motor3.run(FORWARD);  //rotate the motor clockwise
  motor4.setSpeed(Speeed); //Define maximum velocity
  motor4.run(FORWARD);  //rotate the motor clockwise
}
 
void right()
{
  motor1.setSpeed(Speeed); //Define maximum velocity
  motor1.run(FORWARD); //rotate the motor clockwise
  motor2.setSpeed(Speeed); //Define maximum velocity
  motor2.run(FORWARD); //rotate the motor clockwise
  motor3.setSpeed(Speeed); //Define maximum velocity
  motor3.run(BACKWARD); //rotate the motor anti-clockwise
  motor4.setSpeed(Speeed); //Define maximum velocity
  motor4.run(BACKWARD); //rotate the motor anti-clockwise
}
 
void topleft(){
  motor1.setSpeed(Speeed); //Define maximum velocity
  motor1.run(FORWARD); //rotate the motor clockwise
  motor2.setSpeed(Speeed); //Define maximum velocity
  motor2.run(FORWARD); //rotate the motor clockwise
  motor3.setSpeed(Speeed/3.1);//Define maximum velocity
  motor3.run(FORWARD); //rotate the motor clockwise
  motor4.setSpeed(Speeed/3.1);//Define maximum velocity
  motor4.run(FORWARD); //rotate the motor clockwise
}
 
void topright()
{
  motor1.setSpeed(Speeed/3.1); //Define maximum velocity
  motor1.run(FORWARD); //rotate the motor clockwise
  motor2.setSpeed(Speeed/3.1); //Define maximum velocity
  motor2.run(FORWARD); //rotate the motor clockwise
  motor3.setSpeed(Speeed);//Define maximum velocity
  motor3.run(FORWARD); //rotate the motor clockwise
  motor4.setSpeed(Speeed);//Define maximum velocity
  motor4.run(FORWARD); //rotate the motor clockwise
}
 
void bottomleft()
{
  motor1.setSpeed(Speeed); //Define maximum velocity
  motor1.run(BACKWARD); //rotate the motor anti-clockwise
  motor2.setSpeed(Speeed); //Define maximum velocity
  motor2.run(BACKWARD); //rotate the motor anti-clockwise
  motor3.setSpeed(Speeed/3.1); //Define maximum velocity
  motor3.run(BACKWARD); //rotate the motor anti-clockwise
  motor4.setSpeed(Speeed/3.1); //Define maximum velocity
  motor4.run(BACKWARD); //rotate the motor anti-clockwise
}
 
void bottomright()
{
  motor1.setSpeed(Speeed/3.1); //Define maximum velocity
  motor1.run(BACKWARD); //rotate the motor anti-clockwise
  motor2.setSpeed(Speeed/3.1); //Define maximum velocity
  motor2.run(BACKWARD); //rotate the motor anti-clockwise
  motor3.setSpeed(Speeed); //Define maximum velocity
  motor3.run(BACKWARD); //rotate the motor anti-clockwise
  motor4.setSpeed(Speeed); //Define maximum velocity
  motor4.run(BACKWARD); //rotate the motor anti-clockwise
}
 
 
void Stop()
{
  motor1.setSpeed(0); //Define minimum velocity
  motor1.run(RELEASE); //stop the motor when release the button
  motor2.setSpeed(0); //Define minimum velocity
  motor2.run(RELEASE); //rotate the motor clockwise
  motor3.setSpeed(0); //Define minimum velocity
  motor3.run(RELEASE); //stop the motor when release the button
  motor4.setSpeed(0); //Define minimum velocity
  motor4.run(RELEASE); //stop the motor when release the button
}
Scroll to Top