Making a Model CubeSat

Introduction: Making a Model CubeSat

In my physics class we are making model CubeSats. a CubeSat is a 10cm x 10cm x 10cm cube that doesn't weigh more than 1.33kg and is made for space research.

Obviously just being a high school physics class we are not actually making a real cubesat and sending it to Mars. but we are programming Ardunios with special sensors and codes to act like we are going to get data from Mars. We also used the principles of circular and gravitational motion.

My group, the CuteSats is programming the Adrunio to show the temperature of mars but when it gets higher the RGB led changes color. But during the project we faced many constraints being cost, supplies, size & weight, unpredictability.

Step 1: Materials Needed

Parts needed for Arduino

Parts needed for Cubesat

Tools needed for safety practice

  • File
  • Wire cutters
  • 3D printer
  • Velcro
  • Exacto knife
  • Goggles
  • Cutting mat
  • Working in a clean space
  • Being careful
  • supervision needed

Step 2: How to Build a CubeSat and Wire an Arduino


1.Find a 3D file of CubeSat that would be printed

2. Connect the computer to printer & get it started,

3. Cut out supports and put together.

Wire an Arduino:

1. Download Arduino IDE,

2. Wire up breadboard accordingly

3. Copy sketch to IDE and upload to Arduino.

4. Make sure the Arduino, breadboard, and battery fit in Cubesat.

Step 3: Code and Fritzing Diagram

<p>// which analog pin to connect<br>#define THERMISTORPIN A0         
// resistance at 25 degrees C
#define THERMISTORNOMINAL 10000      
// temp. for nominal resistance (almost always 25 C)
// how many samples to take and average, more takes longer
// but is more 'smooth'
#define NUMSAMPLES 5
// The beta coefficient of the thermistor (usually 3000-4000)
#define BCOEFFICIENT 3950
// the value of the 'other' resistor
#define SERIESRESISTOR 10000    </p><p>int redPin = 11;  // Red Leg of LED,  connected to digital pin 11  
 int grnPin = 10; // Green Leg of LED, connected to digital pin 10  
 int bluPin = 9; // Blue Leg of LED, connected to digital pin 9  
uint16_t samples[NUMSAMPLES];
void setup(void) {
  analogReference(EXTERNAL);</p><p>  pinMode(redPin, OUTPUT);  // Sets the LED pins as outputs  
  pinMode(grnPin, OUTPUT);  
  pinMode(bluPin, OUTPUT); 
void loop(void) {
  uint8_t i;
  float average;
  // take N samples in a row, with a slight delay
  for (i=0; i< NUMSAMPLES; i++) {
   samples[i] = analogRead(THERMISTORPIN);
  // average all the samples out
  average = 0;
  for (i=0; i< NUMSAMPLES; i++) {
     average += samples[i];
  average /= NUMSAMPLES;
  Serial.print("Average analog reading "); 
  // convert the value to resistance
  average = 1023 / average - 1;
  average = SERIESRESISTOR / average;
  Serial.print("Thermistor resistance "); 
  float steinhart;
  steinhart = average / THERMISTORNOMINAL;     // (R/Ro)
  steinhart = log(steinhart);                  // ln(R/Ro)
  steinhart /= BCOEFFICIENT;                   // 1/B * ln(R/Ro)
  steinhart += 1.0 / (TEMPERATURENOMINAL + 273.15); // + (1/To)
  steinhart = 1.0 / steinhart;                 // Invert
  steinhart -= 273.15;                         // convert to C
  Serial.print("Temperature "); 
  Serial.println(" *C");
  delay(1000);</p><p>  if((steinhart) >= 26.2)  
   digitalWrite(redPin, HIGH);  // red  
   digitalWrite(grnPin, LOW);  
   digitalWrite(bluPin, LOW);  
 if(((steinhart) < 26) && (steinhart)>= 23.2)  
   digitalWrite(redPin, HIGH);  // yellow  
   digitalWrite(grnPin, HIGH);  
   digitalWrite(bluPin, LOW);  
  if(((steinhart) < 23) && (steinhart) > 20.2)
   digitalWrite(grnPin, HIGH);  // green  
   digitalWrite(redPin, LOW);  
   digitalWrite(bluPin, LOW);  
 if(((steinhart) < 20) && ((steinhart) > 17.2))
   digitalWrite(grnPin, HIGH);  // aqua  
   digitalWrite(bluPin, HIGH);  
   digitalWrite(redPin, LOW);  
  if((steinhart) <= 17)  
   digitalWrite(bluPin, HIGH);  // blue  
   digitalWrite(grnPin, LOW);  
   digitalWrite(redPin, LOW);  

Step 4: Results/Lessons Learned

Physics used

  • Circular motion and gravitational forces

Issues and trouble shooting

  • Finding the right code and wiring for the Arduino
  • Finding a good 3D design to fit and protect the Arduino
  • Adjusting code to make sure the color displayed the right temperature


  • 3D print it so that the measurements will be right or just measure your sides really well
  • Don't procrastinate on the building and programming its more work than you think


  • The picture above shows our data from our final rotation test! we used a space hater to see if there was a change in temp when it was near but we saw no change in data when near it.

Arduino Contest 2019

Participated in the
Arduino Contest 2019

Be the First to Share


    • Anything Goes Contest

      Anything Goes Contest



    3 years ago

    What a cool assignment for your class!