Stellarons MIT Cubesat Project

by christophergao in Workshop > Science

216 Views, 2 Favorites, 0 Comments

Stellarons MIT Cubesat Project

IMG_0686.jpg
Untitled44_20250227202017.JPG

As part of Irvington high school’s 2024-2025 principles of engineering class, we chose to participate in the 2025 MIT build a Cubesat challenge. As a result, we put together a mock satellite with picture-taking capabilities to analyze the images for signs of wildfires.

This instructable walks you through all the steps we took to do so.

Created by Christopher Gao, Vikram Subramanian, and Riddhi Lad.

Special thanks to Henry Fung, our Engineering teacher, Tyler Boehm, our project mentor, as well as Alvin Lai and Yi Shao, our other two competition members who were invaluable to the success of our Cubesat.


Supplies

21x [2-56 X 3/16 Pan head philips screws]

20x [2-56 X ¼ pan head philips screws]

8x [4-40 X ¼ Pan head philips screws]

8x [4-40 ½ “ pan head philips screws]

4x [4-40 hex nuts]

4x metal corner rails

3x acrylic side panel

4x acrylic stick (square notch)

2x top/bottom acrylic panel

4x acrylic stick (round notch)

1x solar side panel open acrylic

Raspberry Pi Camera casing

1x solar panel + power adapter

Raspberry Pi Camera module 3 + ribbon cable

1x IMU

1x Raspberry pi 4 + sd card

4x ½ “ plastic standoffs

4x 1” plastic standoffs

4x jumper cables

8 metal elbow brackets

1 x battery pack

1x USB-C cable

Velcro strips


Tools:

1 screwdriver

Raspberry Pi Setup

Screenshot 2025-03-24 101019.png

First, set up the Raspberry Pi according to the instructions from MIT Cubesat.

|Raspberry PI instructions|


Flatsat Steup

IMG_4304.jpg

Then, put together the inner functions of the cubesat

|MIT flatsat instructions|


Functionality Test

A set of starting code is provided as a platform to develop the cubesat from, so load that onto the cubesat to test its functionality.

|MIT starting code|

Body Assembly

Untitled44_20250227202017.JPG
IMG_3877.jpg
IMG_3884.jpg

Assemble the cubesat’s main body using the acrylic panels, screws, metal rails and brackets.


Begin by attaching 2 metal rails to each other through 2 square-notch acrylic sticks, using 2-56 3/16 screws to secure them together.

Attach 2 round-notch sticks to the other elbow of the metal rails on each side, securing them with the same screws.

Afterwards, use 2 of the smaller rectangular panels and secure them to the front of the sticks linking the metal rails with 2-56 ¼ screws - these will be our walls.

Repeat this twice, then link up the two pieces to create a cube frame.

Utilize elbow brackets and 4-40 ½ screws on one end of the cube to place one of the large acrylic pieces as a ceiling.

You can repeat this on the bottom as well, but keep in mind the flatsat is connected to the floor, so you will need to be able to fit the components in and may want to not fully secure the flatsat floor in case you need to physically access the flatsat again.


Project Direction Decision

From here, the possibilities begin to branch off. The model cubesat has built-in functionality with a gyroscope, magnetometer, accelerometer, camera, and bluetooth capability. In line with this year’s MIT cubesat challenge, we adapted our cubesat to detect smoke to find wildfires.


The Software Process

Our final goal to complete our mission was to set up the cubesat to follow these steps:

Bluetooth and SSH connection connects Raspberry Pi to ground station

Initialization

Run initialization tests for the PiCamera

Picture Frame

As prototype hovers over "Earth", PiCamera is set to capture a frame with dimensions of 4608 x 2592 pixels

Scanning the frame, if at least 30% of pixelated image has certain HSV, then initiate downlink of image to ground station and store image in a file within GitHub repository


Picture Cycle

Repeat steps 6-9 in a cycle every 5 seconds for a total of 120 seconds


Software

This is how we set those processes up.

Github

image.png
image (1).png

Set up GitHub repository for storing files on personal laptop. Also, set up a GitHub repository on the Raspberry Pi.


[insert image on how to set up GitHub, maybe 2-3 images]


Picam Settings

Screenshot 2025-03-27 at 9.33.58 AM.png
Screenshot 2025-03-27 at 9.34.22 AM.png
image (2).png
image (3).png

Initalize the Picamera settings and test camera (e.g. if it’s blurry or black) settings. Use program from “code.py” file in the GitHub repository to test the camera settings.

[insert images of code.py & images of the picamera when it took the pics]

For blurry images, tweak the resolution settings to ensure its compatibility with the Picamera settings.

image 3 shows a blurry camera, while image 4 shows a non-blurred image

Color Detection

Screenshot 2025-03-27 at 9.36.42 AM.png
Screenshot 2025-03-27 at 9.38.22 AM.png
unnamed.png

Detection of wildfires through color detection. Count total number of pixels at specific brightness, and if over 50% of pixels are grayish-dark enough to be considered “smoke,” the image will be flagged.

Apply modifiers to the mask, or area the MockSAT detects (that is considered smoke) to clean up noise, which is are extraneous contents within the detected area. First modifier is known as a Gaussian blur, which cleans up any static contents from the mask. The second modifier meant to be implemented is called morphological operation, which blurs the image using Gaussian function and softens details on the image so there is no noise, removing any unnecessary details. Morphological operations also make the color in the detected area more uniform and smooth.

[add images of modifiers implemented in code, can be found in “colorcodecubeSAT.py”]


Picture Gathering

Picamera always takes a video, and every 5 seconds, it checks to see if the respective frame of the video to see if there is smoke detected within the frame. If the frame is flagged for containing smoke, that frame is saved. After the image is saved, it edits the branch of GitHub stored on Raspberry Pi, and adds the new image file to the folder on the repository, pushing new changes to the main branch.

[add images of flagging images in code, can be found in “colorcodecubeSAT.py”]


Final Demonstration

Screenshot 2025-03-03 093345.png

With all of this done, our cubesat is functioning and can perform its mock task. After some small field testing and adjustments, Our cubesat was able to successfully locate and confirm the presence of smoke in its camera lens.

Drone Video

adobe-express-qr-code.png

(in progress)