Child pages
  • Altera / Intel FPGA and SoC / Terasic DE10-Nano based Self-Balancing Robot Project
Skip to end of metadata
Go to start of metadata

Table of Contents


  1. Features

  2. Introduction

  3. Operation

  4. Conclusion


1. Features

We will briefly described Altera's (Intel FPGA and SoC) embedded in Terasic's Development and Education (DE) series Field Programmable Gate Array board DE10-Nano

to understand the basics of this Self Balancing Robot Project.

2. Introduction

Front view of the robot

Back view of the robot

Bird's-eye view of the robot

3. Operation

Prepare the MicroSD card and download the package of the demonstration from:


Insert the MicroSD card

Set the slide switches

Robot stays in balance mode

To adjust the brightness of the target, please follow the steps below:

Step 1 

Place the ball at the center of D8M’s angle of view – the ball should be placed

approximately 40 cm in front of the robot, as shown in Figure 12 and Figure 13.

Figure 12 Side view for placing the ball

Figure 13 Overhead view for placing the ball.

Step 2

When pressing KEY2, the LED [3:0] will light on. The robot is ready for brightness

adjustment. After three seconds, when LED [3:0] turns off, the robot starts to adjust the

brightness automatically (please keep the ball static). When LED [3:0] light is on again, it means

the brightness adjustment is completed. Figure 14 and Figure 15 display the LED [3:0] status.

Figure 14 Before pressing the KEY2

Figure 15 After pressing the KEY2

Step 3

Set the SW3 to “0”, as shown in Figure 16, to set the robot to the ball following mode.


Figure 16 Set the SW3 to “0”

Now you can move the ball and the robot will start to follow it.

2nd control option

The robot can also be remotely controlled by a Smartphone APP.

This section describes how to control the robot by this Bal Car APP.

Users can download and install the Smartphone APP (only support for

Android OS phone) by copying the link below:

After the installation is completed, the APP icon is shown as

Bal Car APP icon

Power on the robot, set SW0~3 of the DE10-Nano to Down position, as shown in Figure below:

Set SW0~3 to Down position

Turn on phone Bluetooth switch, scan for available devices, normally the robot Bluetooth device

name begins with "30", as shown below:

Scan for robot Bluetooth device

Click the "30:..."available device to pair the robot, after they are paired successfully, the phone will

show the actual name of the Bluetooth device, such as "Terasic Bal-Car 011", as shown below:

Bluetooth device paired


Run the robot APP, click the search icon on the upper right corner of the APP GUI, as shown below:

Click the search icon on the APP GUI

When the actual robot device name appears, select it as the device to connect, as shown below:

Connect to robot Bluetooth device


After connecting to the robot successfully, it will display connection status "connected to Terasic

Bal-Car ..." at the top left corner of the APP, as shown below:

connected to the robot successfully

Now users can click the yellow direction keys, STOP key and DEMO key to control the robot, the

next Figure shows the direction keys functions:


Forward → robot moves forward (Ensure the ultrasonic module is installed)

Backward → robot moves backward

Turn left → robot turns left

Turn right → robot turns right

STOP → robot stops moving

DEMO mode → when clicking the DEMO button, the robot will perform the

scheduled action. After finishing the action, it will exit the DEMO mode

automatically; if you click DEMO button again or click Stop button during

DEMO mode, the robot will exit the DEMO mode automatically and keep

balance where it is; if you click Forward/Backward/Left/Right button during

the DEMO mode, the robot will exit the DEMO mode immediately and perform

the action according to the button.

4. Conclusion

Now you are enabled to play with the Self Balancing Robot: P0509-KIT-ND

on your own.


If you want to have a closer look in the code itself, here are the links:

You can switch on your own if the Balancing algorithm is run within the

FPGA as software solution or within the ARM core as faster hardware