DIY Smart Satellite 🛰️Arduino STEM Robotics Project for Kids

DIY Smart Satellite 🛰️Arduino STEM Robotics Project for Kids
🛰️ ROBOTICS FOR KIDS · LEVEL: INTERMEDIATE

Build a Mini Smart Satellite for Your Next Science Fair!

Meet Orbit — a tabletop Arduino satellite that unfolds its solar panel wings, spins to track the brightest light source, blinks its status lights, watches for nearby "space debris," and beams live data to your phone over Bluetooth.

⏱️ 4–5 hours 🎂 Ages 10+ (with an adult) 🎓 Great for School STEM Projects

📡 Say hi to Orbit, your mini smart satellite!

What Is a Smart Satellite Robot, Anyway?

Real satellites unfold solar panels to catch sunlight, turn themselves to stay pointed at the sun, watch for nearby space debris, and constantly send data back to Earth. Orbit does all four of these things on a desktop scale — using servos, light sensors, an ultrasonic sensor, and a Bluetooth module that beams live readings straight to a phone.

🪽 Solar Panel Deployment ☀️ Sun-Tracking Rotation 💡 Status LED Blinking 📡 Nearby Object Detection 📱 Live Bluetooth Telemetry
🧰

What You'll Need

Gather these parts before you start building Orbit!

x1

Arduino Uno

The onboard "flight computer" running every system.

x2

SG90 Micro Servos (Panels)

Unfold each solar panel wing outward.

x1

SG90 Micro Servo (Rotation)

Spins the satellite body to face the brightest light.

x2

LDR Light Sensors

Mounted left and right to sense which way the "sun" is.

x1

Ultrasonic Sensor (HC-SR04)

Detects nearby "debris" or objects.

x3

Status LEDs (Red, Yellow, Green)

Blink to show the satellite's system status.

x1

HC-05 Bluetooth Module

Sends live sensor readings to a phone app.

x1

Small Buzzer

Alerts when an object is detected nearby.

x1

Small Cardboard or 3D-Printed Body

The satellite's main hexagonal or box-shaped body.

x1

Breadboard + ~20 Jumper Wires

Connects every sensor, servo, and module.

🔌

The Circuit Diagram

Three servos, two light sensors, an ultrasonic sensor, three LEDs, a buzzer, and a Bluetooth module — all connected to one Arduino Uno.

Arduino Uno UNO Pin 3 — Panel Servo 1 Pin 5 — Panel Servo 2 Pin 6 — Rotation Servo A0,A1 — Left/Right LDR Pins 9,10 — Ultrasonic Trig/Echo Pins 4,7,8 — Status LEDs Pin 11 — Buzzer Pins 12,13 — Bluetooth RX/TX 5V GND 2x Solar Panel Servos Rotation Servo 2x LDR Light Sensors Ultrasonic Sensor 3x Status LEDs Buzzer HC-05 Bluetooth Module
Servos → pins 3, 5, 6 LDRs → A0, A1 · Ultrasonic → pins 9, 10 LEDs → pins 4, 7, 8 · Buzzer → pin 11 Bluetooth (SoftwareSerial) → pins 12, 13
🛠️

Step-by-Step Build Instructions

We'll build each satellite system in order, then bring it all together. Ask an adult for help pairing the Bluetooth module!

1

Build the satellite body

Cut or print a small box or hexagonal body to hold the Arduino, with mounting slots on each side for the solar panels and rotation base.

2

Attach the solar panels

Hinge a small panel (cardboard or foam board works great) to each panel servo, starting folded flat against the body.

💡 Tip: Draw solar cell lines on the panels with a marker — it makes the "deploy" moment look really impressive!
3

Mount the rotation base

Fix the rotation servo underneath the body so it can spin the whole satellite left and right on its base.

4

Add the two light sensors

Mount one LDR facing left and one facing right on the front of the satellite body, so it can compare brightness on each side.

5

Mount the ultrasonic sensor and LEDs

Place the ultrasonic sensor facing forward to watch for nearby objects, and mount the three status LEDs somewhere visible on top.

6

Connect the Bluetooth module

Wire the HC-05 module to two Arduino pins using SoftwareSerial, then install a Bluetooth terminal app on your phone to receive Orbit's live data.

7

Wire everything and test

Double-check every connection against the circuit diagram, upload the code, pair your phone via Bluetooth, and watch Orbit come to life!

💻

The Arduino Code

This code needs the Servo and SoftwareSerial libraries (both built in). Copy it into the Arduino IDE and click Upload.

smart_satellite.ino
// 🛰️🤖 Orbit the Mini Smart Satellite — Arduino STEM Robotics Project
// Deploys solar panels, tracks the brightest light, detects objects, and sends data over Bluetooth

#include <Servo.h>
#include <SoftwareSerial.h>

Servo panel1, panel2, rotationServo;
SoftwareSerial bluetooth(12, 13);  // RX, TX

// ---- Light sensors ----
const int ldrLeft = A0, ldrRight = A1;

// ---- Ultrasonic sensor ----
const int trigPin = 9, echoPin = 10;
const int objectAlertCM = 15;

// ---- Status LEDs ----
const int greenLED = 4, yellowLED = 7, redLED = 8;
const int buzzerPin = 11;

unsigned long lastBlink = 0;
bool heartbeatOn = false;

int rotationAngle = 90;   // satellite currently facing forward

void setup() {
  panel1.attach(3);
  panel2.attach(5);
  rotationServo.attach(6);

  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(greenLED, OUTPUT);
  pinMode(yellowLED, OUTPUT);
  pinMode(redLED, OUTPUT);
  pinMode(buzzerPin, OUTPUT);

  Serial.begin(9600);
  bluetooth.begin(9600);

  panel1.write(0);
  panel2.write(0);
  rotationServo.write(rotationAngle);

  deploySolarPanels();
}

void loop() {
  trackSun();
  checkForObjects();
  blinkStatusLED();
  sendTelemetry();
  delay(100);
}

// Slowly swings both solar panels open, with a beep for each
void deploySolarPanels() {
  for (int angle = 0; angle <= 90; angle += 5) {
    panel1.write(angle);
    panel2.write(angle);
    delay(60);
  }
  tone(buzzerPin, 1500, 300);
  bluetooth.println("Solar panels deployed!");
}

// Compares left/right light sensors and rotates toward the brighter side
void trackSun() {
  int leftLight  = analogRead(ldrLeft);
  int rightLight = analogRead(ldrRight);
  int difference = leftLight - rightLight;

  if (abs(difference) > 40) {   // only move if there's a clear difference
    if (difference > 0 && rotationAngle < 170) rotationAngle += 2;
    if (difference < 0 && rotationAngle > 10)  rotationAngle -= 2;
    rotationServo.write(rotationAngle);
  }
}

// Watches for nearby objects and sounds an alert if one gets too close
void checkForObjects() {
  long distance = readDistanceCM();
  if (distance > 0 && distance < objectAlertCM) {
    digitalWrite(redLED, HIGH);
    tone(buzzerPin, 1000, 100);
    bluetooth.println("ALERT: Object detected nearby!");
  } else {
    digitalWrite(redLED, LOW);
  }
}

// Blinks a slow "heartbeat" LED to show the satellite is alive and running
void blinkStatusLED() {
  if (millis() - lastBlink > 1000) {
    heartbeatOn = !heartbeatOn;
    digitalWrite(greenLED, heartbeatOn);
    digitalWrite(yellowLED, !heartbeatOn);
    lastBlink = millis();
  }
}

// Sends a live data line to the phone over Bluetooth
void sendTelemetry() {
  int leftLight  = analogRead(ldrLeft);
  int rightLight = analogRead(ldrRight);
  long distance = readDistanceCM();

  bluetooth.print("Angle:"); bluetooth.print(rotationAngle);
  bluetooth.print(" | Light L/R:"); bluetooth.print(leftLight);
  bluetooth.print("/"); bluetooth.print(rightLight);
  bluetooth.print(" | Distance:"); bluetooth.print(distance);
  bluetooth.println("cm");
}

// Measures distance using the ultrasonic sensor
long readDistanceCM() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  long duration = pulseIn(echoPin, HIGH, 20000);
  return duration * 0.034 / 2;
}
🧠

How Does Orbit Actually Work?

Here are the big robotics ideas hiding inside this project:

☀️

Light-Seeking Behavior

By comparing two LDR readings instead of trusting just one, Orbit can tell which direction is brighter and rotate that way — the same basic idea real solar-tracking panels use.

💓

Non-Blocking Heartbeat

The status LED uses millis() instead of delay() to blink — so Orbit can keep tracking the sun and checking for objects at the same time, without freezing.

📡

Wireless Telemetry

The Bluetooth module acts like Orbit's radio antenna, sending a steady stream of readings that any phone Bluetooth terminal app can display — just like mission control watching real satellite data.

🚨

Threshold-Based Alerts

checkForObjects() only reacts when something crosses a set distance — this pattern (compare a sensor reading to a limit) shows up in almost every safety system you'll ever build.

🧑‍🔬 Safety First!

  • Build with an adult, especially when wiring the Bluetooth module and pairing it with a phone.
  • Keep fingers clear of the servo-driven panels and rotation base while powered on.
  • Only pair the HC-05 with a device you trust, and don't share its PIN publicly.
  • This is a learning model, not a real spacecraft — never point light sensors directly at the sun; use a lamp or flashlight instead.

Frequently Asked Questions

What phone app do I use to see the data?

Any basic "Bluetooth Terminal" or "Serial Bluetooth Terminal" app (widely available for Android) will connect to the HC-05 and display the text Orbit sends every loop.

Why compare two LDRs instead of using just one?

A single light sensor can only tell you "it's bright" or "it's dim" — two sensors let Orbit compare left versus right and actually decide which way to turn.

Can I add more sensors, like temperature?

Yes! Add a sensor like a DHT11, read it in the loop, and include its value in the sendTelemetry() function so it shows up on your phone too.

What age group is this project good for?

This project is great for school-age kids around 10+ working with a parent or teacher, and makes an excellent science fair or STEM class demonstration.

🎉 Mission accomplished — you just built a real working mini satellite! Shine a flashlight nearby and watch Orbit turn to follow it, live data streaming to your phone.

⬆️ Back to Materials List

Comments

Product Cards
Buddy Bot eBook
⭐ New 2026 Release
Build Your
Own Robot!
3D design, wiring &
Arduino coding.
Young inventors love it!
🖨️
3D Print
All parts
Wire it
Circuit guide
💻
Code it
Arduino IDE
🤖
Watch it
Walk & react
📋 Your Details
Enter your name
Valid 10-digit no.
Enter a valid email
Special Website Offer
₹499 300
🌍 International: $5 USD
One-time · Instant digital delivery
🔒 Secured by Razorpay · Your data is safe
📄 Download Free Sample Copy
🔒 Secured by Razorpay · Your data is safe
🍓
Raspberry Pi Pico Mastery
21 Projects
⚡ Launch Price — 80% OFF
Learn Pico
Build 21 Projects!
MicroPython · Wokwi
IoT · Certificate
Perfect for beginners!
🖥️
Wokwi
No hardware
🐍
MicroPy
From zero
🔨
21 Projects
IoT + sensors
📄
Certificate
Verified cert
📋 Your Details
Enter your name
Valid 10-digit no.
Enter a valid email
Special Launch Offer
₹999 200 80% OFF
🌍 International: $5 USD
One-time · Lifetime access · No subscription
🔒 Secured by Razorpay · UPI · Cards · NetBanking
🎉

You're in!

Payment successful! Your Buddy Bot eBook is ready. Time to build!

📖 Access Your eBook Now
🎉

Enrolled!

Payment successful! Lifetime access to all 21 Pico Projects is yours!

🍓 Go to My Course