Bluetooth Controlled FPV Rover

by Ekain in Circuits > Remote Control

201 Views, 5 Favorites, 0 Comments

Bluetooth Controlled FPV Rover

Imagen de WhatsApp 2025-01-12 a las 21.00.29_0c7018cc.jpg

Introducton

This project started a year ago as a school assignment; the objective was to build a working rover, but due to some structural and design problems, the prototype never worked, so the project was stopped until a couple of months ago when I saw this contest and decided to retake the project. So I started from zero, the new design, but applying the lessons learned from the first rover.


Supplies

IMG-20250112-WA0022.jpg
Captura de pantalla 2025-01-13 223642.png

Suplies


  1. nails aprox x75
  2. nuts x16
  3. washers x2
  4. screws x10 (m3)
  5. silicone
  6. PLA filament


Elecronics


  1. Arduino UNO board
  2. Motor driver L298N
  3. HC-06 Bluetooth module
  4. 2x 9v battery
  5. Cables
  6. GoPro camera
  7. A power supply 12v


General Design

Imagen de WhatsApp 2025-01-12 a las 20.45.01_875a8838.jpg
Captura de pantalla 2025-01-12 210452.png

Not a lot to say about the general design. The objective was clear, so I tried to make a simple and practical design, and maybe a bit futuristic.

Track System Design

Captura de pantalla 2025-01-13 213219.png

I took the model of the track system from timmiclark ( https://www.thingiverse.com/thing:972768 ), so the gears and the model of the track itself are thanks to him. Starting from this part, I designed the rest of the system. The idea behind this design is that it can be mounted and dismounted easily but is strong enough to support the stress.

Chassis Design

Captura de pantalla 2025-01-13 223818.png

The chassis is divided into four parts: the base part, the connector, the upside part, and the top. As I said before, the objective was to make it simple and practical. I used FreeCAD to design the rover because I'm used to designing with it and because it's open source. 

Printing

For the assembly of the rover, you need to print each file once, except this:

  1. Gears x2
  2. Track x70 (approx.).
  3. Track holder x6

Track Assembly

IMG-20250112-WA0018.jpg
IMG-20250112-WA0020.jpg
IMG-20250112-WA0019.jpg

I'm sure there will be some other way to assembly the track, but I only had silicone and nails, so for me this was the only option. The procedure is quite simple: you put silicone in the both holes of the back of the piece and wait until it solidifies; when it does, you put the nail through the first hole, the front hole of the next piece, and through the second hole. You need to do this about 33 times for each track, and on the 34th time you do the same, but attaching the last piece to the first one.

Note: Due to this procedure, one track was longer than the other, so I needed to print a smaller part (the black one) to make it shorter.

Mounting of the Chassis

IMG-20250112-WA0017.jpg
IMG-20250112-WA0016.jpg
IMG-20250112-WA0012.jpg
IMG-20250112-WA0010.jpg
IMG-20250112-WA0009.jpg
IMG-20250112-WA0008.jpg
IMG-20250112-WA0006.jpg
IMG-20250112-WA0005.jpg
Imagen de WhatsApp 2025-01-13 a las 23.10.25_aaeccc79.jpg
Imagen de WhatsApp 2025-01-13 a las 23.10.25_39eaee90.jpg
Imagen de WhatsApp 2025-01-13 a las 23.10.24_e4731094.jpg

The process is shown in the images, but I'm going to try summarizing it.

1. You need to attach the Arduino and the motors to the base with the screws.

2. Put a nut and a washer on the screws between the base and the track system.

3. Fix with another nut the track system.

4. Put the gears and the holders in their holes.

5. Put the track on its path.

6. Attach the front part of the track system and repeat the process on the other side.

7. Mount the H-bridge and connect the cables: the motors to the motor pins on the H-bridge, one battery to the 12V and GND pins on the H-bridge, EN_A to 9, IN1 to 8, IN2 to 7, IN3 to 5, IN4 to 4, EN_B to 3, GND to GND, and 5V to 12.

8.- Put the mid-part and the upside

9. Connect the Bluetooth module (VCC to 5V, GND to GND, Tx to 10, and Rx to 11).

10. Put the top part

Code

The code I used is this; quite simple but funtional.

#include <SoftwareSerial.h>

SoftwareSerial BT(10, 11);


int EN_A = 9;

int IN1 = 8;

int IN2 = 7;

int IN3 = 5;

int IN4 = 4;

int EN_B = 3;


int v = 12;


int speedA = 500;

int speedB = 500;



void setup() {


 Serial.begin(9600);

 BT.begin(9600);


 pinMode(EN_A, OUTPUT);

 pinMode(IN1, OUTPUT);

 pinMode(IN2, OUTPUT);

 pinMode(IN3, OUTPUT);

 pinMode(IN4, OUTPUT);

 pinMode(EN_B, OUTPUT);


 pinMode(v, OUTPUT);

 digitalWrite(v, HIGH);

}


void loop() {


 int data;


 if (BT.available()) {


  char dataBT = BT.read();

  Serial.println(dataBT);

  data = String(dataBT).toInt();

 }


 if (data == 1) {


  Serial.println("forward");


  digitalWrite(IN1, LOW);

  digitalWrite(IN2, HIGH);

  digitalWrite(IN3, LOW);

  digitalWrite(IN4, HIGH);


  analogWrite(EN_A, speedA);

  analogWrite(EN_B, speedB);


 }


 else if (data == 2) {


  Serial.println("backward");


  digitalWrite(IN1, HIGH);

  digitalWrite(IN2, LOW);

  digitalWrite(IN3, HIGH);

  digitalWrite(IN4, LOW);


  analogWrite(EN_A, speedA);

  analogWrite(EN_B, speedB);


 }


 else if (data == 3) {


  Serial.println("right");


  digitalWrite(IN1, LOW);

  digitalWrite(IN2, HIGH);

  digitalWrite(IN3, HIGH);

  digitalWrite(IN4, LOW);


  analogWrite(EN_A, speedA);

  analogWrite(EN_B, speedB);


 }


 else if (data == 4) {


  Serial.println("left");


  digitalWrite(IN1, HIGH);

  digitalWrite(IN2, LOW);

  digitalWrite(IN3, LOW);

  digitalWrite(IN4, HIGH);


  analogWrite(EN_A, speedA);

  analogWrite(EN_B, speedB);


 }


 else if (data = !1 || 2 || 3 || 4) {


  Serial.println("stop");


  digitalWrite(IN1, LOW);

  digitalWrite(IN2, LOW);

  digitalWrite(IN3, LOW);

  digitalWrite(IN4, LOW);


  digitalWrite(EN_A, 0);

  digitalWrite(EN_B, 0);

 }

}


End

VID_20250113_231151.gif

When I went to test it I found that the batteries I had were not enough to move the rover so I had to connect it to a 12v power source. It actually works, not too smoth but it works, and in the future I wold like try to improve the chain system because sometimes they come off. As my first instructable I hope this project will inspire or help someone.