Android-controlled RC car with Arduino firmware implementing bidirectional Bluetooth communication, dual DC motor control, and real-time ultrasonic distance sensing.
Developed as a project for the Integrated Project course (EL84E) at the Federal University of Technology - Paraná (UTFPR), Curitiba, Brazil, 2021.
- 5-direction motor control via Android app (forward, backward, left, right, stop)
- Real-time obstacle detection with HC-SR04 ultrasonic sensor
- Autonomous forward block when obstacle is within 10 cm
- Bidirectional Bluetooth communication over RFCOMM/SPP
- Custom serial protocol with
{}delimiters for reliable sensor data parsing - Live distance display updated on the Android UI after every movement
- Motor status indicators on the Android UI (−1 = reverse, 0 = stopped, 1 = forward)
| Component | Description |
|---|---|
| MCU | Arduino UNO R3 |
| Motor Driver | L298N dual H-bridge |
| Distance Sensor | HC-SR04 ultrasonic |
| Bluetooth | HC-06 module |
| Motors | 2× DC motors with gearbox (2WD chassis) |
| Servo | Micro Servo SG90 (pan-tilt mount) |
| Other | Voltage divider (1kΩ + 2.2kΩ) on Bluetooth RX for 5V→3.3V level shifting |
Android app: native Java, developed in Android Studio (API 21+)
| Command | Action |
|---|---|
forward |
Move forward (only if distance > 10 cm) |
backward |
Move backward |
left |
Turn left |
right |
Turn right |
stop |
Stop all motors |
- Pair the HC-06 module with your Android device via Bluetooth settings
- Open the DroidRover RC app
- Tap CONNECT and select the module from the paired devices list
- The button changes to DISCONNECT once the connection is established
The firmware communicates via UART at 9600 bps. Commands are plain ASCII strings sent from the app to the Arduino over RFCOMM.
Commands sent to the firmware:
| Command | Description |
|---|---|
forward |
Drive forward |
backward |
Drive backward |
left |
Turn left |
right |
Turn right |
stop |
Stop motors |
Messages received from the firmware:
| Message | Description |
|---|---|
{\n XX.X \n}\n |
Distance reading in centimeters from HC-SR04 |
The Android app buffers incoming bytes and extracts the numeric value between { and } delimiters, displaying it as Sensor: XX.X cm.
The HC-06 Bluetooth module's RX pin operates at 3.3V. A voltage divider using a 1kΩ and a 2.2kΩ resistor was used to step down the 5V TX signal from the Arduino UNO to a safe level.
Powering the Arduino from 4× AA alkaline batteries caused instability in the Bluetooth connection and motor behavior as the batteries drained. Powering the Arduino via USB eliminates this issue, but using a 9V battery with a step down to 5V would be a better solution.
University: Federal University of Technology - Paraná (UTFPR)
Course: Integrated Project (EL84E)
Program: Technology in Telecommunication Systems
Year: 2021
Bluetooth connection implementation adapted from a tutorial by Duds Tecnologia - GitHub: dudstecnologia.


