Building an Autonomous RC Car with an old RC Car and an Arduino

C++ Arduino embedded autonomous systems
The hardware setup of the project so far. The hardware setup of the project so far.

The Quick Take

Autonomous RC Car is a personal project to bring an (old) toy RC Car to life as an autonomous vehicle, by adding a microcontroller and sensors. The project exists out of two parts. The heart of the project is the microcontroller software. This enables the RC car to drive autonomously. In addition, the RCCarMonitor application is meant to complement the microcontroller software by providing a way of monitoring and tasking the RC Car while in operation.

The focus of the project is to create an autonomous car that is able to navigate well in its environment, and ultimately also fulfill some tasks like gathering data. Although the project is made with a specific RC Car and the Arduino Nano 33 BLE Sense, it is meant to be easily extendable to other vehicles and microcontrollers.

Description

This project is still a work in progress. Thus far, the car can drive by itself, detect the distance to the next obstacle, and turn away from this obstacle to keep driving. The goal is to implement a more sophisticated form of driving where the car has an idea of its location and can drive to assigned locations, perhaps even fulfill some tasks. The monitor has as goal to aid development by monitoring the internals of the car, and to give basic tasks to the car, such as driving to certain places.

Here I shortly describe the current state of each part, which I will update as the project develops.

Autonomous RC Car

Sharing the name of the project itself, this is the software of the car (see the repository). Purely speaking in features, it is currently capable of doing three things. First of all, the driving can be turned on and off through Bluetooth. This can either be done through the RC Car Monitor as discussed in the next section, or simply through a standard Bluetooth BLE app like LightBlue. Second, it can detect the distance to any obstacle positioned in front of it, within the range of 4 meters. Third, it can do basic driving and steering. A combination of these three makes it possible to turn the driving on/off on demand, and for the car to drive while avoiding obstacles.

RC Car Monitor

The features for the monitor are rather limited so far. For now, the monitor is able to select the Bluetooth device, and send a signal to turn the driving of the car on/off.

Motivation

This is a project that I have been excited about for quite some time, and I quite enjoy working on it. However, that's not the only reason that I have decided to realise this project. This is also a project that brings a lot of skills together that I wanted to learn, improve on, or put into practice: