How to make a Bluetooth Controlled Cute Robot with Arduino Nano

Hello and welcome back. In this project, we will learn how to make a Bluetooth-controlled Cute Robot using an Arduino Nano board. For that, I mainly used four SG90 servo motors to move this robot in different directions. Also, I added a Bluetooth module for this project. Therefore, we can easily control it using a smartphone with the SriTu Hobby Bluetooth controller app. I designed eight actions for this robot, such as forward, backward, turning, and some special moves. You can change or add more actions as you like. I have also designed an attractive PCB for this project using JLCPCB, and I highly recommend ordering your own PCBs from them. You can even get them at no cost by using their free coupons through this link. Also, you can easily power up this cutebot using the 9V battery. This project is a very simple and fun project.
OK, let’s do this project step by step. The required components are given below.
- Arduino Nano board x 1 — Our Store / Amazon
- 5mm Red LED x 2 — Our store / Amazon
- 100 ohm Resistor x 2 — Our store / Amazon
- Barrel jack socket x 1 — Our store / Amazon
- Female header x 1 — Our store / Amazon
- Male header x 1 — Our Store / Amazon
- HC-05 Bluetooth module x 1 — Our Store / Amazon
- 5V Active buzzer x 1 — Our store / Amazon
- Servo motor x 4 — Our Store / Amazon
Disclosure: These Amazon links are Affiliate links. As an Amazon Associate, I earn from qualifying purchases.
Step 1
Firstly, let’s identify these components.









Step 2
Secondly, let’s go ahead and order the PCBs.


- Click the “Instant Quote” button and upload the Gerber file, which you can download from the link below.
- Gerber file – Download
- For this project, I ordered five Green PCBs. Next, select the build time and shipping method. Finally, click “Save to Cart” and complete the payment.




Step 3
Thirdly, unbox your PCB package.




Step 4
Next, solder the components onto the PCB.




Step 5
Afterward, attach the servo motors. I used cable ties to hold them in place.





Step 6
After that, adjust all servo motors to 90 degrees with the PWM servo driver, and attach the servo horns correctly. Then, carefully connect each servo motor wire to its proper position on the robot chassis.







Step 7
Next, connect the Arduino Nano board and plug it into your computer. Then, copy and paste the following program into the Arduino IDE.
#include <Servo.h>
// Define servo pins
#define servo1 3 // Front-left
#define servo2 5 // Front-right
#define servo3 6 // Back-left
#define servo4 9 // Back-right
#define LED1 11
#define LED2 10
#define buzzer 12
// Servo objects
Servo leg1, leg2, leg3, leg4;
char value;
void setup() {
Serial.begin(9600);
// Attach servos
leg1.attach(servo1);
leg2.attach(servo2);
leg3.attach(servo3);
leg4.attach(servo4);
// Setup LEDs and buzzer
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(buzzer, OUTPUT);
// ===== Startup Delay =====
delay(3000);
// Run startup animation after delay
startupAnimation();
// Return to default stand position
Stop();
}
void loop() {
if (Serial.available() > 0) {
value = Serial.read();
Serial.print("BT Command: ");
Serial.println(value);
if (value == 'U') forward();
else if (value == 'D') backward();
else if (value == 'L') left();
else if (value == 'R') right();
else if (value == 'S') Stop();
else if (value == 'T') wave();
else if (value == 'F') dance();
else if (value == 'H') sleepMode();
else if (value == 'G') alertMode();
}
}
// ======== Startup Animation ========
void startupAnimation() {
// Blink eyes like waking up
for (int i = 0; i < 2; i++) {
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
delay(200);
}
// Play startup tone
tone(buzzer, 800, 300);
delay(300);
tone(buzzer, 1200, 200);
delay(200);
noTone(buzzer);
// Stretch legs
leg1.write(70); leg2.write(110);
leg3.write(70); leg4.write(110);
delay(400);
leg1.write(110); leg2.write(70);
leg3.write(110); leg4.write(70);
delay(400);
// Return to stand position
Stop();
}
// ========== BASIC MOVEMENTS ==========
void forward() {
for (int i = 0; i < 2; i++) {
leg1.write(60);
leg4.write(60);
leg2.write(90);
leg3.write(90);
digitalWrite(LED1, HIGH);
tone(buzzer, 900, 100);
delay(300);
leg1.write(90);
leg4.write(90);
delay(200);
leg2.write(120);
leg3.write(120);
delay(300);
leg2.write(90);
leg3.write(90);
digitalWrite(LED1, LOW);
noTone(buzzer);
delay(200);
}
}
void backward() {
for (int i = 0; i < 2; i++) {
leg1.write(120);
leg4.write(120);
leg2.write(90);
leg3.write(90);
digitalWrite(LED2, HIGH);
tone(buzzer, 600, 100);
delay(300);
leg1.write(90);
leg4.write(90);
delay(200);
leg2.write(60);
leg3.write(60);
delay(300);
leg2.write(90);
leg3.write(90);
digitalWrite(LED2, LOW);
noTone(buzzer);
delay(200);
}
}
void left() {
leg2.write(120);
leg4.write(120);
digitalWrite(LED1, HIGH);
tone(buzzer, 800, 100);
delay(300);
leg2.write(90);
leg4.write(90);
digitalWrite(LED1, LOW);
noTone(buzzer);
}
void right() {
leg1.write(60);
leg3.write(60);
digitalWrite(LED2, HIGH);
tone(buzzer, 1200, 100);
delay(300);
leg1.write(90);
leg3.write(90);
digitalWrite(LED2, LOW);
noTone(buzzer);
}
void Stop() {
leg1.write(90);
leg2.write(90);
leg3.write(90);
leg4.write(90);
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
noTone(buzzer);
}
// ========== MOVEMENTS ==========
void wave() {
Stop();
digitalWrite(LED1, HIGH);
for (int i = 0; i < 3; i++) {
leg2.write(50);
tone(buzzer, 1000, 100);
delay(300);
leg2.write(130);
delay(300);
}
leg2.write(90);
digitalWrite(LED1, LOW);
noTone(buzzer);
}
void dance() {
for (int i = 0; i < 4; i++) {
leg1.write(70); leg2.write(110);
leg3.write(70); leg4.write(110);
digitalWrite(LED1, HIGH);
digitalWrite(LED2, LOW);
tone(buzzer, 800, 100);
delay(200);
leg1.write(110); leg2.write(70);
leg3.write(110); leg4.write(70);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
tone(buzzer, 1000, 100);
delay(200);
}
Stop();
}
// ========== MODES ==========
void sleepMode() {
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
tone(buzzer, 200, 300);
leg1.write(80);
leg2.write(100);
leg3.write(80);
leg4.write(100);
delay(300);
noTone(buzzer);
}
void alertMode() {
for (int i = 0; i < 5; i++) {
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
tone(buzzer, 1500, 100);
delay(100);
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
noTone(buzzer);
delay(100);
}
Stop();
}- Now, select the board and the port. After that, click the Upload button.



Step 8
Afterward, remove the USB cable and connect the Bluetooth module to the robot PCB. Then, mount the 9V battery and connect the power wires to the robot chassis.



Step 9
Next, download and install the SriTu Hobby app from the Play Store. Then, open the app and go to the Controllers tab. Now, open the Bluetooth remote.


- Afterward, click the gear wheel icon and find your device. In this step, make sure to enable location and location permission. Finally, you will see a green indicator.


Now, you can control this cute robot using your smartphone. The full video guide is below, and we hope to see you in the next project. Have a great day!
How to make a Bluetooth Controlled Cute Robot with Arduino Nano