DIY CubeSat

by serengineering in Circuits > Arduino

89 Views, 1 Favorites, 0 Comments

DIY CubeSat

Screenshot 2025-10-13 234750.png
PHOTO-2025-10-11-22-02-39.jpg

Ever looked up at the night sky and wondered what it takes to send something up there? This project brings that dream a little closer — by building a miniature CubeSat prototype right at home!

Inspired by the real satellites that orbit Earth and explore deep space, this mini CubeSat uses an Arduino Uno, a DHT11 temperature/humidity sensor, and an MPU6050 accelerometer/gyroscope to simulate how a real spacecraft collects environmental and motion data in orbit.

While this CubeSat won’t leave Earth’s surface, it captures the same spirit of exploration that drives every mission. You’ll finish with your own working satellite model, blinking lights and all, that represents the incredible human drive to understand our cosmos!!!

Supplies

  1. Arduino Uno (or compatible board)
  2. MPU6050 Accelerometer & Gyroscope
  3. DHT11 Temperature & Humidity Sensor
  4. LED light
  5. 220Ω Resistor
  6. Breadboard
  7. Jumper Wires (Male–Male and Female–Male)
  8. 3D Printer (or access to one)
  9. Small Screws (M3)
  10. M3 Standoffs and Spacers
  11. Laptop or Desktop Computer w/ Arduino IDE

inst1.jpg

CubeSats are small, low-cost satellites (10×10×10 cm) used for research, Earth observation, and even Mars missions.

This project is a ground-based CubeSat model that simulates real satellite functions using an MPU6050 (motion/orientation) and a DHT11 (temperature/humidity). It’s a fun way to explore how satellites gather data and stay stable in space, all from your desk!

Circuit Hardware

Screenshot 2025-10-13 224817.png
IMG_7036.JPG
IMG_7044.JPG
IMG_7046.JPG

Let's assemble the hardware! This step is fully customizable---the open source print even comes with walls that have slots for a camera module. For the sake of simplicity, I stuck with two sensors and an LED, but there is much more you could do with this project. Here are the steps to assemble the circuit I made:

  1. Power & Ground
  2. The Arduino Uno is powered directly via USB connection to the laptop.
  3. Use 5V and GND pins from the Arduino to power the sensors on the breadboard.
  4. MPU6050 Accelerometer + Gyroscope
  5. VCC → 5V (Arduino)
  6. GND → GND (Arduino)
  7. SDA → A4 (Arduino)
  8. SCL → A5 (Arduino)
  9. INT → not used
  10. DHT11 Temperature & Humidity Sensor (Adafruit model with 3 pins)
  11. VCC → 5V (Arduino)
  12. GND → GND (Arduino)
  13. DATA → Digital Pin 2 (Arduino)
  14. LED Indicator (Optional)
  15. Long leg (anode) → Power (Breadboard)
  16. Short leg (cathode) → GND (Breadboard)
  17. Place a 220Ω resistor in series to protect the LED.

All components were assembled on a breadboard for easy testing and visualization. A PCB can be designed for any circuit made, but again, for the sake of simplicity, I stuck to the breadboard only.

Circuit Software

This step focuses on uploading the Arduino code that allows the DHT11 and MPU6050 sensors to collect and display real-time environmental and motion data.

NOTE:

The LED on the breadboard is powered directly from the Arduino’s 5V pin and GND, meaning it lights up whenever the system is powered so no code is required regardin.

Libraries

Before uploading the code, install the following libraries in the Arduino IDE:

  1. Adafruit DHT Sensor Library
  2. Adafruit Unified Sensor Library
  3. MPU6050 (by Electronic Cats or similar I²C library)

Go to Sketch → Include Library → Manage Libraries and search each name to install.


Code


#include <Wire.h>

#include <MPU6050.h>

#include <Adafruit_Sensor.h>

#include <DHT.h>

#include <DHT_U.h>


#define DHTPIN 2

#define DHTTYPE DHT11


MPU6050 mpu;

DHT dht(DHTPIN, DHTTYPE);


void setup() {

Serial.begin(9600);

Wire.begin();

mpu.initialize();

dht.begin();


Serial.println("CubeSat Environmental & Motion System");

delay(1000);

}


void loop() {

// --- DHT11 Sensor ---

float temperature = dht.readTemperature();

float humidity = dht.readHumidity();


// --- MPU6050 Sensor ---

int16_t ax, ay, az;

mpu.getAcceleration(&ax, &ay, &az);


// --- Display Data ---

Serial.print("Temp: ");

Serial.print(temperature);

Serial.print(" °C, Humidity: ");

Serial.print(humidity);

Serial.print("% | Accel X: ");

Serial.print(ax);

Serial.print(" Y: ");

Serial.print(ay);

Serial.print(" Z: ");

Serial.println(az);


delay(1000); // Update every second

}



CubeSat Structure Prep

IMG_9048.jpg
IMG_7048.JPG

For the CubeSat structure, I 3D printed an open-source 1U CubeSat model from Thingiverse:

🔗 CubeSat 1U Model by RobotFreak


I printed the parts using standard PLA filament with 15% infill and a 0.2 mm layer height for a solid yet lightweight frame.


Post-print Adjustments:

The printed holes for the standoffs were slightly undersized, so I used a small drill bit to widen the holes on the top and bottom plates. This allowed the M3 standoff tips to fit properly.


CubeSat Structure + Assembly

IMG_7049.JPG
IMG_7050.JPG
IMG_7051.JPG
IMG_7052.JPG
IMG_7053.JPG
IMG_7055.JPG
IMG_7056.JPG
IMG_7058.JPG
IMG_7060.JPG

Assembly Steps:


  1. Mounted the Breadboard: I placed the breadboard directly on the bottom plate, ensuring it sat flat and stable
  2. Installed the First Layer of Standoffs: Using M3 screws and standoffs, I built up the height above the breadboard to make space for the next layer of components.
  3. Added the Inner Mounting Plate: I placed one of the inner support plates above the standoffs and mounted the Arduino on it.
  4. Built the Top Layer: After wiring everything, I added a second set of standoffs and then attached the top plate, completing the layered cube structure.
  5. Attached the Side Panels: I snapped the two side walls into place and secured them using screws and nuts from the inside to ensure a tight, durable fit.
  6. Organized the Wiring: I gently wove the sensor wires through the frame openings, keeping all connections within the structure for a clean, contained design.

Data Collection & Testing

PHOTO-2025-10-11-22-02-39.jpg

The CubeSat is now ready for testing functions as a miniature environmental and motion data station! Once everything is assembled, give the CubeSat power by plugging the Arduino into a laptop USB port, compiling the code, then upload it.

Power On:

  1. Connect the Arduino to a laptop/desktop via USB — the LED should light up, confirming the circuit is powered.
  2. Open Serial Monitor: In the Arduino IDE, open the Serial Monitor (Tools → Serial Monitor).
  3. Observe Data Streams: The CubeSat should begin displaying continuous readings for:
  4. Temperature (°C)
  5. Humidity (%)
  6. Acceleration (X, Y, Z)
  7. These values should update every second, giving a live view of the CubeSat’s environment and movement!
  8. Testing Conditions:
  9. Tilting or moving the CubeSat should cause the acceleration values to change immediately.
  10. Comparing the data from the DHT11 sensor to a thermostat in the space you are in can give an idea of whether the sensor is working accurately.


Space Connection & Fun Facts

inst4.png
inst5.jpg

While this CubeSat doesn’t orbit Earth, it’s inspired by real satellite systems that monitor our planet and beyond!


CubeSats are used for Earth observation, atmospheric monitoring, and space research because of their compact, modular design. This project captures that spirit on a smaller, DIY scale by allowing you to make a hands-on model for understanding the electronics and design behind real spacecraft. You have to start somewhere!


Fun Facts

Since we're at the end, let's share some AWESOME fun facts about CubeSats!

  1. The first CubeSat launched in 2003 — it was only 10 cm³ in size!
  2. The ISS regularly deploys CubeSats, which are released into orbit using several kinds of deployers
  3. Some CubeSats even carry tiny solar panels to power themselves indefinitely in space
  4. In 2014, a CubeSat was launched by hand by a cosmonaut on a space walk!!! watch video here


By building this mini CubeSat, you can get a glimpse into what it takes to engineer something that could one day orbit our planet. After all, all space exploration needs is imagination and a workbench (yes, even a home one)!!! ✨🌍✨