The Earth Explorer Sphere: a globe that opens itself up to show you the whole planet
Build a motorized globe that splits open in two stages — first the Crust, then the Mantle — glowing to reveal a molten Core underneath, with its own lights and sound effects. A full weekend robotics build using an Arduino, two servo motors, and a handful of craft supplies.
What you're building
A hands-on Earth science model that teaches robotics, circuits, and geology in one project.
The Earth Explorer Sphere looks like a plain globe sitting on a stand. Press the button, and two hidden servo motors take over: the outer shell splits and swings open to show the Mantle layer glowing orange underneath, then the Mantle opens to reveal a pulsing, glowing Core at the center. Each stage triggers its own light color and a short sound clip explaining that layer, so the model teaches itself.
Crust
The thin, rocky outer shell we live on. Thinnest layer, but the one we know best.
Mantle
A thick layer of hot, slow-moving rock that makes up most of Earth's volume.
Core
A super-hot metal center, split into a liquid outer core and a solid inner core.
Materials list
Most parts can be reused from a beginner Arduino kit.
Electronics
- 1x Arduino Uno (or Uno-compatible board)
- 2x SG90 micro servo motors
- 1x NeoPixel LED ring (12 LEDs)
- 1x DFPlayer Mini MP3 module + micro SD card
- 1x small 8-ohm speaker
- 1x push button
- 1x 220-ohm resistor
- 1x 10k-ohm resistor (if not using internal pull-up)
- Jumper wires + breadboard
- External 5V 2A power supply (for the servos and LEDs)
Craft & build supplies
- 1x foam ball or 3D-printed hollow sphere (15–20 cm), pre-cut into two hinged shells
- 1x smaller inner ball for the Mantle layer
- 1x tiny ball or bead for the Core
- Acrylic paint (blue/green, orange, red/yellow)
- Hot glue gun
- Craft knife (adult use only)
- Small wooden or 3D-printed display stand
- Thin dowels or paperclip hinges
Circuit diagram
Every part connects back to the Arduino Uno. Double-check colors before powering on.
Tip: Power the two servos and the NeoPixel ring from the external 5V supply, not directly from the Arduino's 5V pin — servos can draw more current than the Arduino can safely provide. Connect all grounds together.
Wiring reference table
| Component | Component Pin | Arduino Pin |
|---|---|---|
| Servo 1 (Crust hatch) | Signal | Pin 9 |
| Servo 2 (Mantle hatch) | Signal | Pin 10 |
| NeoPixel Ring | Data In | Pin 6 |
| Push Button | Signal | Pin 4 (internal pull-up) |
| DFPlayer Mini | RX | Pin 3 (via 1k resistor) |
| DFPlayer Mini | TX | Pin 2 |
| All components | GND | Common GND rail |
Step-by-step build instructions
Work through these in order — each step builds on the last one.
-
Prep the three shells
Cut or 3D print the outer sphere into two hemisphere shells (Crust), a smaller inner sphere for the Mantle, and a tiny center ball for the Core. Paint the Crust shell blue-green, the Mantle orange, and the Core bright yellow-red.
-
Mount Servo 1 in the base
Fix Servo 1 inside the stand so its horn connects to a hinge on the Crust shell. When the servo rotates, the top half of the Crust should swing open like a lid.
-
Mount Servo 2 on the Mantle layer
Attach Servo 2 inside the Mantle shell in the same way, so it opens the Mantle only after the Crust has already opened and exposed it.
-
Install the NeoPixel ring
Glue the NeoPixel ring around the Core, facing outward, so its glow lights up both the Mantle and Core cavities once the shells open.
-
Wire up the DFPlayer and speaker
Load your SD card with three short MP3 clips (Crust fact, Mantle fact, Core fact) named 0001.mp3, 0002.mp3, 0003.mp3. Mount the speaker inside the base, facing a small grille cut into the stand.
-
Add the push button
Mount the push button on the front of the stand, wired with an internal pull-up so it reads LOW when pressed.
-
Connect everything to the Arduino
Follow the wiring table above. Power the servos and LEDs from the external 5V supply, and share a common ground between the Arduino and the external supply.
-
Upload the code and test
Upload the sketch below, place the Sphere in its closed position, and press the button. The Crust should open first, then the Mantle, with lights and sounds at each stage.
Arduino code
Copy this into a new sketch in the Arduino IDE. Install the Servo, Adafruit_NeoPixel, and DFRobotDFPlayerMini libraries first from the Library Manager.
#include <Servo.h>
#include <Adafruit_NeoPixel.h>
#include <SoftwareSerial.h>
#include <DFRobotDFPlayerMini.h>
// ---- Pin setup ----
#define SERVO1_PIN 9 // Crust hatch
#define SERVO2_PIN 10 // Mantle hatch
#define BUTTON_PIN 4
#define NEOPIXEL_PIN 6
#define NUM_LEDS 12
#define DF_RX_PIN 2
#define DF_TX_PIN 3
Servo crustServo;
Servo mantleServo;
Adafruit_NeoPixel ring(NUM_LEDS, NEOPIXEL_PIN, NEO_GRB + NEO_KHZ800);
SoftwareSerial dfSerial(DF_RX_PIN, DF_TX_PIN);
DFRobotDFPlayerMini dfPlayer;
bool isOpen = false;
void setup() {
pinMode(BUTTON_PIN, INPUT_PULLUP);
crustServo.attach(SERVO1_PIN);
mantleServo.attach(SERVO2_PIN);
crustServo.write(0); // closed position
mantleServo.write(0); // closed position
ring.begin();
ring.show(); // all LEDs off at start
dfSerial.begin(9600);
dfPlayer.begin(dfSerial);
dfPlayer.volume(20); // 0 to 30
}
void loop() {
if (digitalRead(BUTTON_PIN) == LOW && !isOpen) {
delay(40); // simple debounce
if (digitalRead(BUTTON_PIN) == LOW) {
runExploreSequence();
}
}
if (digitalRead(BUTTON_PIN) == LOW && isOpen) {
delay(40);
if (digitalRead(BUTTON_PIN) == LOW) {
resetSphere();
}
}
}
void runExploreSequence() {
// Stage 1: Crust opens
setRingColor(90, 169, 201); // crust blue
dfPlayer.play(1); // 0001.mp3 - crust fact
crustServo.write(100);
delay(2500);
// Stage 2: Mantle opens
setRingColor(224, 138, 62); // mantle orange
dfPlayer.play(2); // 0002.mp3 - mantle fact
mantleServo.write(100);
delay(2500);
// Stage 3: Core glows
dfPlayer.play(3); // 0003.mp3 - core fact
pulseCore(6); // glowing pulse effect, 6 cycles
isOpen = true;
}
void resetSphere() {
setRingColor(0, 0, 0);
crustServo.write(0);
mantleServo.write(0);
delay(1000);
isOpen = false;
}
void setRingColor(int r, int g, int b) {
for (int i = 0; i < NUM_LEDS; i++) {
ring.setPixelColor(i, ring.Color(r, g, b));
}
ring.show();
}
void pulseCore(int cycles) {
for (int c = 0; c < cycles; c++) {
for (int b = 0; b < 255; b += 15) {
setRingColor(255, min(b, 200), 20);
delay(15);
}
for (int b = 255; b > 0; b -= 15) {
setRingColor(255, min(b, 200), 20);
delay(15);
}
}
}
Beginner tip
If your Sphere is opening in the wrong direction, just swap the servo angles in crustServo.write() and mantleServo.write() — try 0 and 100 the other way around.
Safety notes for young makers
Ask an adult to help with the craft knife, hot glue gun, and any soldering. Always plug in the external power supply last, after every wire is double-checked. Keep drinks away from the electronics, and never open the Sphere while it's mid-motion.
Why this project works so well for learning
The Earth Explorer Sphere ties together three subjects at once. Kids practice basic circuitry by wiring servos, LEDs, and a sound module to a single board. They get an introduction to programming by editing a real Arduino sketch — changing colors, delay times, or sound clips. And because the model physically opens layer by layer, the Earth science sticks: seeing the Crust swing away to reveal the Mantle, and the Mantle open onto a glowing Core, makes the relative thickness and nature of each layer easier to remember than any diagram.
Frequently asked questions
What age group is this robotics project best suited for?
Ages 9 and up can build this with an adult helping on the craft-knife and wiring steps. Ages 12+ with some Arduino experience can usually manage most of it independently.
Do I need to know how to code to build this?
No. The code above is ready to upload as-is. Basic edits — like changing colors or timing — are a great first step into programming, but not required to get the project working.
Can I build this without the DFPlayer Mini sound module?
Yes. Skip the DFPlayer and speaker wiring, remove the related lines from the code, and use a simple piezo buzzer with tones instead, or skip sound entirely and rely on the lights and motion.
What size foam ball works best?
A 15–20 cm foam or 3D-printed ball gives enough room for two servos, a NeoPixel ring, and the inner layers without feeling cramped.
Why use two servos instead of one?
Two independent servos let the Crust and Mantle open in sequence rather than all at once, which is what creates the reveal effect and lets each layer get its own light color and sound clip.

Comments
Post a Comment