CTE Mission: CubeSat

Skills Learned

  • Arduino Programming (C++ Derivation)
  • Wiring with Arduino and Breadboards
  • Esri ArcGIS Mapping
  • Wireless Communication
  • SD Card Writing

As their name suggests, CubeSats are small, cubic satellites that have grown in popularity lately to help solve problems or gather data that larger satellites would not be applicable for. The United States Department of Education sponsored a competition to find the best applications for these devices to better local communities. This competition was called CTE: Mission CubeSat. I was a national finalist in this competition and the lead engineer on my team.

The Proposal

My team's proposal was to use a CubeSat to survey homeless populations in high-risk wildfire areas and map them using Esri's ArcGIS mapping software. We flew our drone over the Hansen Dam Recreational Area in Pacoima, CA. This area was known to have a high density of homeless people, which matched our findings from our drone flight. You can read more about the project in its entirety here, and the map below represents the data we collected from our flight. You can click around and interact with everything on the map.

The Engineering

As I mentioned earlier, I was the lead engineer for this project and thus repsonisble for the mechanical and software engineering on this project. I chose to use an Arduino baseboard as well as the Arduino IDE, which uses a stripped-down version of C++ to program the functions of the board and all attached sensors. I used a thermal sensor in the CubeSat to record fluctuations in temperature and identify the locations of homeless encampments.
The work my team did with this CubeSat was used in and won several other national competitions, such as Esri's High School Mapping Competition and the NASA Techrise competition. You can find more info about the project in the below links, including a more detailed breakdown of the engineering process.

Story Map
Esri Article

Due to the nature of the competition, I can not publically publish my code. I will instead include a pseudocode recreation of the main routine used below.

  //All prerequisites for main routine are done here when base board powers on
  init{
  Include all necessary libraries;
  
  Initialize GPS 

  Initialize SD Card Routine;
  while (SD not initialized) {}

  Initialize wireless link to Mobile;
  while (link not established) {}

  // Check if data.xml file exists on root of SD Card
  if (data.xml does not exist){
    create data.xml;
  }

  open data.xml;
  begin write routine;
}
  
//Main routine that loops until power off
  main{
    double ambient = pull ambient temperature from sensor;
    double limit = ambient + accepted deviation from ambient;
    //If temperature is higher than limit, thermal read is detected and thus a possible homeless encampment
    
    //Camera is a 12x12 grid of pixels (each having a temperature)
    for (i=0; i<12; i++){
      for (j=0; j<12; j++)
        if (pixel temperature > limit){
          retrieve gps position of satellite;
          upload gps location to mobile app;
          begin sd card write;
            write coordinates in first avaialable cell in column A; 
            move right;
            write temperature reading;
            end write;
        }
    }
    wait (2 seconds);
  }