Controlling a ESP32 Bluetooth Car From Bluetooth RC Car Controller by InvexsLabs Android App.

by abdgto251 in Circuits > Arduino

159 Views, 1 Favorites, 0 Comments

Controlling a ESP32 Bluetooth Car From Bluetooth RC Car Controller by InvexsLabs Android App.

App logo 4.png
Bluetooth RC Car Controller By invexsLabs App demo to control ESP32/arduino based bluetooth car.

This is a Custom Bluetooth Car Controller app that has many creative and fun features like button state recording, draggable interface and some smart features. You can make your own arduino/esp32 controller bluetooth car and use this app to smartly control it.



Supplies

HARDWARE:

You can use any bluetooth ESP32/Arduino controlled car. If using a arduino or other microcontroller, you may have to use HC-05 or HC-06 module.

In my car, I used these parts:

  1. ESP32 Dev Kit V1 and its extend holder
  2. L289N motor driver
  3. 2X 18650 lithium cells and their battery holder
  4. Some Jumper wires
  5. 4x 3-6V gear motors with tires
  6. 2x White lights
  7. 2x red Lights
  8. Small 5V buzzer
  9. Home made chassis for the car, but you can also use a readymade one.

SOFTWARES:

  1. Arduino IDE to upload the code with esp32 package installed.
  2. Bluetooth RC Car controller by invexsLabs to control the car.

You can install the app on apkPure or upToDown store at these links:

UpToDown store link: https://bt-car-controller.en.uptodown.com/android

ApkPure Link: https://apkpure.com/p/appinventor.ai_abdgto251.BT_Car_Controller4


Circuit Diagrams and Arduino Code:

Car pinout diagram.png

Wire your car connections according to the given diagram. And upload this exact same code into your esp32 by using Arduino IDE (make sure it has the esp32 package). I have shared the arduino code in both .txt file and .ino file. Once uploaded, the esp32 built-in light should flash 3 times, it indicates that the esp32 is powered ON or restarted. You can easily remove this startup flashing in the arduino code in void startup().

/* Arduino Program for making a ESP32 controlled bluetooth controlled car.
This code is written according to the commands of this app, you can install this app only from apkPure:

App Name: "Bluetooth_RC_Car_Controller By invexsLabs"
ApkPure Link: https://apkpure.com/bluetooth-rc-car-controller-by-invexslabs-customizable-ui/appinventor.ai_abdgto251.BT_Car_Controller4

Upload this code to your esp32 and then wire all the conenctions.

The car's bluetooth name is "ESP32 BT CAR 2889". You can change it in the void setup.
*/

#include <BluetoothSerial.h>

// Motor control pins
#define backright 13
#define fordright 14
#define fordleft 27
#define backleft 26
#define enleft 25
#define enright 12

// LED pins
#define led 2
#define whiteled 22
#define redled 32
#define horn 23

int rightspeed = 255;
int leftspeed = 255;

//You can change it if your car turns when driving forward by decreasing the speed of one-side wheel.
const int maxrightspeed = 255;
const int maxleftspeed = 255;

//This is the minimum speed to which the car sets it's speed at level 1 speed. You can change it according to your car.
const int minrightspeed = 120;
const int minleftspeed = 120;

int leftadder;
int rightadder;

BluetoothSerial SerialBT;

void setup() {
// Motor direction pins
pinMode(fordright, OUTPUT);
pinMode(fordleft, OUTPUT);
pinMode(backleft, OUTPUT);
pinMode(backright, OUTPUT);

// PWM control pins
pinMode(enright, OUTPUT);
pinMode(enleft, OUTPUT);

// LEDs
pinMode(led, OUTPUT);
pinMode(whiteled, OUTPUT);
pinMode(redled, OUTPUT);
pinMode(horn, OUTPUT);

Serial.begin(115200);

//You can change the bluetooth name of the car here:
SerialBT.begin("ESP32 BT CAR 2889");

//Just to show that the car is turned ON:
for (int i = 0; i < 3; i++) {
digitalWrite(led, HIGH);
delay(200);
digitalWrite(led, LOW);
delay(200);
}

leftadder = (maxleftspeed - minleftspeed) / 9;
rightadder = (maxrightspeed - minrightspeed) / 9;
}

void handleSpeed(int left, int right) {
rightspeed = minrightspeed + right;
leftspeed = minleftspeed + left;
analogWrite(enright, rightspeed);
analogWrite(enleft, leftspeed);
}

void loop() {
if (SerialBT.available()) {
char store = SerialBT.read();
Serial.print(store);

switch (store) {
case 'F': // Forward
digitalWrite(fordright, HIGH);
digitalWrite(fordleft, HIGH);
digitalWrite(backleft, LOW);
digitalWrite(backright, LOW);
digitalWrite(led, HIGH);
break;

case 'B': // Backward
digitalWrite(fordright, LOW);
digitalWrite(fordleft, LOW);
digitalWrite(backleft, HIGH);
digitalWrite(backright, HIGH);
digitalWrite(led, HIGH);
break;

case 'R': // Right
digitalWrite(fordright, LOW);
digitalWrite(fordleft, HIGH);
digitalWrite(backleft, LOW);
digitalWrite(backright, HIGH);
digitalWrite(led, HIGH);
break;

case 'L': // Left
digitalWrite(fordright, HIGH);
digitalWrite(fordleft, LOW);
digitalWrite(backleft, HIGH);
digitalWrite(backright, LOW);
digitalWrite(led, HIGH);
break;

case 'C': // Forward Left
digitalWrite(fordright, HIGH);
digitalWrite(fordleft, LOW);
digitalWrite(backleft, LOW);
digitalWrite(backright, LOW);
digitalWrite(led, HIGH);
break;

case 'D': // Forward Right
digitalWrite(fordright, LOW);
digitalWrite(fordleft, HIGH);
digitalWrite(backleft, LOW);
digitalWrite(backright, LOW);
digitalWrite(led, HIGH);
break;

case 'E': // Backward Left
digitalWrite(fordright, LOW);
digitalWrite(fordleft, LOW);
digitalWrite(backleft, LOW);
digitalWrite(backright, HIGH);
digitalWrite(led, HIGH);
break;

case 'G': // Backward Right
digitalWrite(fordright, LOW);
digitalWrite(fordleft, LOW);
digitalWrite(backleft, HIGH);
digitalWrite(backright, LOW);
digitalWrite(led, HIGH);
break;

case 'U': //for headlights
digitalWrite(whiteled, HIGH);
break;
case 'u':
digitalWrite(whiteled, LOW);
break;

case 'W': //for backlights
analogWrite(redled, 25);
break;
case 'w':
analogWrite(redled, 0);
break;

case 'H': //for horn
tone(horn, 400);
break;
case 'h':
noTone(horn);
break;

case '0': //for adjusting speeds
handleSpeed(0 - minrightspeed, -minleftspeed);
break;
case '1':
handleSpeed(0, 0);
break;
case '2':
handleSpeed(rightadder, leftadder);
break;
case '3':
handleSpeed((2 * rightadder), (2 * leftadder));
break;
case '4':
handleSpeed((3 * rightadder), (3 * leftadder));
break;
case '5':
handleSpeed((4 * rightadder), (4 * leftadder));
break;
case '6':
handleSpeed((5 * rightadder), (5 * leftadder));
break;
case '7':
handleSpeed((6 * rightadder), (6 * leftadder));
break;
case '8':
handleSpeed((7 * rightadder), (7 * leftadder));
break;
case '9':
handleSpeed((8 * rightadder), (8 * leftadder));
break;
case 'q':
handleSpeed((9 * rightadder), (9 * leftadder));
break;

case 'S': // Stop
digitalWrite(fordright, LOW);
digitalWrite(fordleft, LOW);
digitalWrite(backleft, LOW);
digitalWrite(backright, LOW);
digitalWrite(led, LOW);
break;
}
}
}

INSTALLING APP TO CONTROL THE CAR

You can use "Bluetooth RC Car Controller By invexsLabs" to control the car. This car has many cool and creative features which you may like; it is fully free to use and has zero ads. You can install the app from apkPure or upToDown store at this link.

ApkPure App Link: https://apkpure.com/p/appinventor.ai_abdgto251.BT_Car_Controller4

UpToDown store link: https://bt-car-controller.en.uptodown.com/android

Once installed, Connecting the car to your phone is pretty easy. Once you have the app installed and a ready esp32 car, Turn ON your bluetooth car and turn ON your phone's bluetooth. Go to the bluetooth settings of your phone, You should see your car name "ESP32 BT CAR 2889" in the available devices. Tap it, so the car can be paired with your phone (THE CAR MAY NOT BE CONNECTED TO YOUR PHONE, IT MAY ONLY BE PAIRED). Once the car is paired, open the Bluetooth RC Car controller app and click the yellow "NOT CONNECTED" label at the top left of the screen. The app will show you a list of paired devices, select your car name. The app will take a moment to connect. Once connected, you can now control your car with the app.

APP FEATURES AND DETAILS

App logo 4.png
Screenshot_2026-07-15-13-18-04-374_appinventor.ai_abdgto251.BT_Car_Controller4.jpg
Screenshot_2026-07-15-13-18-11-961_appinventor.ai_abdgto251.BT_Car_Controller4.jpg
Screenshot_2026-07-15-13-18-39-499_appinventor.ai_abdgto251.BT_Car_Controller4.jpg
Screenshot_2026-07-15-13-18-49-751_appinventor.ai_abdgto251.BT_Car_Controller4.jpg

This Bluetooth RC Car Controller by invexsLabs is packed with many cool and advanced features. You can enjoy using these features:


FEATURES:

▶ BUTTON STATE RECORDING:

Record your driving in real time and play it! This app can record when and which button is pressed and can play the exact button at same intervals. The car will move in the same path as the path you recorded on. To record, just press the red "Record" button at the top of the screen, the app will start recording. Once you have done recording, just tap "Done" to save the recording and tap "Play" to play that recording.


▶ DRAGGABLE INTERFACE:

Design your own controller! This app supports draggable interface meaning you can easily drag nearly any button and save it's position, and it will stay there at your custom position. To do this, click the setting buttion at the top-left corner of the screen and select "Change Button Positions".


▶ PORTRAIT MODE:

Control your car in any orientation! This app also supports portrait mode which you can enable and be able to use app in all 3 orientations i.e. landscape, reverse landscape and portrait mode. The button position are saved separately in Portrait mode and landscape mode, so you don't mess out with button positions! To enable portrait mode, turn ON auto-rotate. Then, tap and setting button at the top-left corner of the screen and select "Toggle Portrait Mode".


▶ CUSTOMIZEABLE BUTTON:

This app also has one customizable button which you can fully customize. You can change its Bluetooth command when it is turned ON or turned OFF, act as toggle button, change its text. To enable and change the customizable button's settings, tap the settings button at the top-left corner and select "Settings". Then scroll down a little bit in the settings to find the customizable button section.


▶ OTHER FEATURES:

Bring your RC car to life by giving it some smart features by automatically turning ON the brake light when the car is stopped or automatically turning ON the headlight when horning or moving forward etc. You can enable/disable all the features by going to settings.

Ready to take you RC car controller to the next level? Download now for free and enjoy your driving!


You can download this application on aplPure or upToDown store at this link:


ApkPure App link: https://apkpure.com/p/appinventor.ai_abdgto251.BT_Car_Controller4

UpToDown store link: https://bt-car-controller.en.uptodown.com/android

Let me know what are your reviews for this app or if you have any question! If you want any new features in version2 of this app.