Self-balancing Robot is very interesting. Many friends around us were trying to make one, but they encounted a lot of chanllenges including the lack of the easy-to- assembly structures, the suitable electronic circuits and the programs. So I decided to make a self-balancing robot as simple as possible.

Thanks to Arduino team that almost every maker has one Arduino board in hand. Among those Arduino boards, Arduino UNO R3 is the most universal entry-level board. Arduino UNO is open source and there are huge of applications based it. We want to help those who has the similar idea of making a self-balancing robot based on the Arduino UNO.

Here is the old version of balanbot

I have posted a instructable about self banlance robot before. But I found it's troublesome to take back the robot and insert the USB cable for uploading codes when debugged. So I try to make a Arduino board with built-in Bluetooth module for uploading codes wirelessly. So we don't need to take back the robot when debugging.

After a period of preparing including learning theory, programming, making PCB and etc.. My goal comes true and now I'm sharing with you.

Here is the new version of balanbot.

Control with app

I have uploaded the codes and the schematic of balance shield to insrtuctable. If you are interested in Flyblue board, you can come here to get more detail.

Step 1: Preparing

I want the assembly of self-balancing robot to be very easy. It doesn’t need much wires, complicated connections and testing, just like playing with LEGO.

I designed a balance shield that includes gyroscope and motor driver part on it. After times of testing, it can now always work perfectly. Thanks to this shield, as it makes everything much easier.

Bill of the main materials:

1 x Arduino UNO R3 or compatible board with built-in Bluetooth module

1 x Balance Shield for Arduino

2 x High torque&speed motor with encoder

2 x Wheels1 x 5mm Acrylic board

2 x 3mm Acrylic board

1 x 11.1V Lithium battery or

1 x 18650 battery holder and 3 x 18650 batteries

N x Screws and Nuts


  1. Combination pliers
  2. Flat-blade screwdriver.

Step 2: Install Two Motor Brackets

Assemble two motor brackets to the 5mm Acrylic Board and fix with 8 M3*12 screws. You may need the Combination pliers to set the screw nuts.

Step 3: Install Two Motors and Wheels

a). Fix two motors into two motor brackets with 8 M3*6 screws.

b). Fix two even couplings into motor axises with 2 M3*6 screws.

c). Assemble two wheels into two couplings with 2 M4*6 screws.

Step 4: Assemble Battery Holder

a).Install 3mm acrylic board for fixing the battery with four M3*10 Double-pass Hollow Copper Pillars .

b). Fix battery holder onto 3mm acrylic board with 2 M3*8 screws.

c). Fix 5mm acrylic board onto the 3mm acrylic board with 4 copper spacers.

Step 5: Assemble the DC Connector and Set Batteries

a). Insert black line into the nagative port and red into the positive port and fix them.

b). Set 3 18650 batteries into battery holder.

Step 6: Assemble the Wireless Upload Arduino Board and Balance Shield

After the battery is fixed, we can now add a new layer of acrylic board by some screws.

a). Fix 4 M3*6 Double-pass Hollow Copper Pillars into another 3mm acrylic board for Arduino board with 4 M3 screws. Ensure the side with UNO R3 is upwards.

b). Fix wireless upload Arduino board onto the 3mm acrylic board with 4 M3*6 screws.

c). Insert the balance shield into Arduino board.

With the Balance Shield, and the Arduino collects the angle from gyroscope, position from motor’s encoder then process them. It will control two motors to keep balance.

Step 7: Connect the Circuit

We almost finish our long assemble journey now!

a). Insert the DC connector into the DC jeck of balance shield.

b). Insert two motor ports into the balance shield.

Step 8: Program and Upload Wireless

We don't need to insert Bluetooth any more beceuse the Flyblue board is wit built-in Bluetooth module. Now we can upload the code wirelessly. Now we finished the assemble journey of a common balance robot. But we can do more...

Step 9: Have Fun With App

I wrote an application running on computer and another application running on android. So i can easily adjust PID parameters and control my balance robot by android mobile phone via blue-tooth ,gamepad via computer and RC remote .
The balanbot works very stable because of the two high torque&speed motors and the optimized algorithm. It keeps balanced even when you push it suddenly. It took me a lot of time to get the best matching PID parameter for Balanbot. Thanks for reading to the end, but I believe the making for more interesting things never ends.

<p>great project! but I am disappointed: &quot;here&quot; currently links to nothing useful. Software and design stuff not on github ( or similar ). Instructions are pretty much a kit assembly, no real info on the concepts behind the code or its construction. Can you add some of this stuff.</p>

About This Instructable



Bio: I am maker_studio and I love to build robot of Arduino and DIY something fun. Here is something fun: http://kck.st/2cOiMIp Please support ...
More by maker_studio:How to DIY a set of pictrue pannel earphones How to build  a Bluetooth wireless upload Self-balancing Robot How to DIY a magnetic car mount QI wireless charger 
Add instructable to: