Luís Rita

RCar | Robots for All!

We created a low-cost RC car and an Android app (free) that is able to control many of its features using a Bluetooth connection.

IntermediateFull instructions provided3 days9,426
RCar | Robots for All!

Things used in this project

Hardware components

Arduino Nano R3
Arduino Nano R3
Using Arduino Nano, we were able to decrease energy consumption and increase the portability of the final project. This was done at the expense of some computational power. Since this Arduino's model only has 2 serial connections (RX and TX – which were used to transfer data between the Bluetooth module and the Android app), we needed to include an extra serial port to receive the location values from the GPS module in the smartphone.
DC 3V Motor
Motor is powered by a 9V battery and controlled by the L298N Driver. It has two axles (one pointing to the right and another to the left, moving synchronously).
SG90 Micro-servo motor
SG90 Micro-servo motor
Servo's rotation was lower and upper limited in the Arduino script to 45 and 135 degrees. Avoiding an excessive rotation of the wheels of the car. We first used an old servo in our project but, due to bad oiled gears, this was substituted by a new one. This way, we eliminated jittering and greatly increased angle precision.
Resistance 220 Ohm
We included several resistances in order to limit the intensity of the current going through the LEDs.
LEDs (Red, Yellow and White)
Regarding the different lights present in the vehicle, we always included a resistance in order to limit the intensity of the current going through the diodes. This was done in the (2) front, (2) back and (2) turn signal lights. These lights are totally controlled using the RCar app, except the ones in the back that automatically turn on when the car accelerates backwards.
HC-05 Bluetooth Module
HC-05 Bluetooth Module
A similar approach was followed with the Bluetooth module. Although, in this case, we included a voltage divider in the circuit, such that the HC-05 receives half of the voltage (in the RX port) coming from the 5V Arduino port (TX). Nevertheless, this was dispensable. Thus, it was not included in the electric circuit diagram (Fig. 2).
L298N Driver
The L298N Driver is an electric component that behaves similarly to a H-Bridge. Depending on the interrupters that are closed, the current will flow in 2 different directions across the DC Motor. This allows the motor to rotate clockwise or counter-clockwise by always applying a positive voltage with the Arduino. Furthermore, it also controls the velocity at which the axles rotate. These 2 sets of interrupters are controlled by the IN1 and IN2 pins present in the driver.
GPS Module (NEO-6M-0-001)
We also decided to include an extra feature in the car - GPS. This detects location with a remarkable accuracy (considering the price) lower than 3 meters (radius). Then, a map with a red dot is shown in the app, correctly positioned. Note that, due to GPS module limitations, it is not possible to get car's position indoors.
Piezoelectric Speaker
A speaker was also added to the circuit. A sound signal is emitted every time one clicks in the corresponding button of the app. Both the duration and frequency of the wave were defined in the Arduino IDE.
9V Battery
The car is powered by a 9V battery, which is connected to the L298N Driver. This is both feeding the motor and the Arduino (consequently, all the remaining circuitry).
9V Battery Adapter
With an on/off button incorporated, it is easier to cut off circuit's power.
Breadboard (generic)
Breadboard (generic)
All the connections among the previous components were reversibly performed in a breadboard.
Jumper Wire
Male-male, male-female and female-female wires assured the connection among all the electric components.
M3x20 Screw & Nut
These are the revolute joints between car's bar and each L-shaped axle.
2 elastics were used to compress L-shaped axles against the chassis and another 5 to immobilize all the non glued components in the top of the breadboard.
Metallic Ring
One on each front wheel to reduce looseness between them and the cylindrical part of the corresponding axle. In fact, this structure is compound of 2 x 180º rings which were joined using some hot glue. Once the inner radius of the ring needed to have approximately the same dimension as the thinnest part of the axle, this was the easiest way to fit both.
Metallic Wire
Short and thin wire of metal used to connect both the car's bar and servos's paddle. This allows the rotation of the front wheels.
Hot Glue
We fixed most of the components to the car using a cheap but effective tube of hot glue.

Software apps and online services

Arduino IDE
Arduino IDE
Arduino is an open-source electronic platform based on flexible and reliable hardware and software. It was created in 2003 by a group of students from Interaction Design Institute Ivrea, in Ivrea, Italy. The name Arduino comes from a bar’s name located in its native city where the creators used to meet. Arduino can sense the environment by receiving input from a variety of sensors and can affect its surroundings by controlling lights, motors and other actuators. The microcontroller on the board is programmed using the Arduino language, which is based on C++, and the Arduino Integrated Development Environment (IDE), based on Processing. Most boards consist of an Atmel 8-bit AVR microcontroller with different number of pins, ROM and RAM memory (among others). These pins are organized in 2 rows of male headers, in order to easily connect and integrate it with external circuits. The Arduino microcontroller also has an integrated timer based on an oscillating crystal at 16 MHz. Arduino projects can be stand-alone, or they can communicate with software running on a computer, such as MATLAB. One of the relevances of this hardware is its ability to convert analog signals into digital ones, which can be saved, modified and analysed in a computer (or other digital device), using specific software. This data processing could be essential in a medical diagnostic centre, where the least variation in the physiological signal could be crucial for the correct diagnosis of a certain pathology. Any program written in Arduino is commonly called a sketch. These files are intended to be saved in the owner’s PC with the following extension: .ino. In order to be executed, it only requires 2 basic functions: setup and a loop. The 1st one is only executed once (after powering up or resetting the board). Information like setting output/input pins; bit rate (baud); variables (…) can be given in this section of the program. Libraries can also be initialized in this section. These play an important role in Arduino programming, since a limited number of functions are available to be promptly used. Most of the times, it is an advantage to use them since functions may often be more efficient from an Arduino’s scope (very important due to its limited computational power). On the other side, the loop will be executed cyclically with/without interruptions depending on the existence of interrupts or functions that deliberately pause the execution (delay, delayMicroseconds). Many prototypes can be projected using Arduino: ECGs, EMGs, EEGs, Pletismography devices, automatized dispensers, games, printers and, of course, robotic cars.
MIT App Inventor 2
MIT App Inventor 2
MIT App inventor 2 is an open-source web application created by Google and, now, maintained by MIT. It was made available on July 12, 2010 and publicly released on 15th December of the same year. Development was in charge of a team led by Hal Abelson and Mark Friedman. The programming language on the back of App Inventor is Java. This way, the development of Android apps was significantly simplified. Furthermore, it is considered a very reliable service by checking the classification of the app in the Play Store: 4.1/5 (Sept, 2018). Due to these 2 crucial features, it was already downloaded over 1 million times. By September 2018, there were already 6.8 million registered users spread over 195 countries, running a total of 24 million built applications. It is now available in 12 different languages. One can divide the development process in 3 different stages: 1) Consists in developing a prototype app using AI Companion. A feature that allows us to check directly in the smartphone the programming performed in the web browser. The newest version, MIT App Inventor 2, already includes a new functionality that allows real-time debugging via Wi-Fi (and not just USB). In this case, a QR code is scanned by the smartphone or a connection is established by manually inserting an alphanumeric code, provided by the website, in MIT AI2 Companion app. 2) Then, it is possible to build what was previously developed and saved in a computer, with the right Android extension: .apk. The transference of this file to an Android device may be done by cable or online. 3) Finally, the app may be published in Play Store and, consequently, made accessible to everyone, everywhere...
Google Play
Digital service operated and developed by Google. It is the official app store for the Android operating system and allows users to browse and download a big range of applications.
Web hosting platform which now belongs to Microsoft.
Apple Final Cut Pro X
Video editor available for Mac users. A straightforward way to produce small clips (e.g. promotional videos) or complete films.
Solid modelling CAD and CAE computer program that runs on Windows. SolidWorks was published by Dassault Systèmes.
A repository full of, downloadable, CAD models. Some of them are editable, others not. Some created using SolidWorks, others Autodesk Inventor...
Powerful IDE intended to JavaScript, HTML and CSS coding (among many other applications). Ideal for website programming.
Image manipulation program available for Mac users.
Fritzing is an open source CAD software intended to the design of electronics hardware, to support designers ready to move from experimenting with a prototype to building a more permanent circuit. It was developed in Potsdam (Germany) at the University of Applied Sciences.
It is a platform that contains 3D, VR and AR models. Each user may upload or download these files.

Hand tools and fabrication machines

Ultimaker 2+ Extended
Ultimaker - 3D printer manufacturing company based in Netherlands.
Android Smartphone
RCar app, for now, is only available for Android users. Requires Android 2.2 or above.
Hot Glue Gun
Hot glue dispenser. It heats up and ejects it to the surrounding.


Read more

Custom parts and enclosures

CAD Model

"Pack and Go" set of SolidWorks CAD files (SLDPRT and SLDASM). In other words, everything you need to print the whole car.


Complete model with all the SolidWorks parts assembled. Preview purposes only. This file is included in the previous pack.


Electric Circuit

1. Due to the lack of a Motor Driver similar to the one we used in the project (L298N Driver), we replaced it by another model with less one input port (defining the direction of rotation of the motor's axles);
2. DC 3V Motor has a double axle, instead.


MIT App Inventor 2

Android app was created using this code. You will need to access MIT AI2 website and import the file to visualize or edit it.
NB: MIT App Inventor 2 is a programming language based in Java.
No preview (download only).


Complete set of instructions implemented in Arduino Nano. We call your attention to the libraries you will need to import.


Luís Rita

Luís Rita

3 projects • 26 followers
Biomedical Engineer. Data science student at Imperial College London. Passionate about science, sports and art.
Thanks to Sara Freitas.