Stellarons MIT Cubesat Project
by christophergao in Workshop > Science
216 Views, 2 Favorites, 0 Comments
Stellarons MIT Cubesat Project


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

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

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.
Body Assembly



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

.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


.png)
.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



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

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

(in progress)