Skip to content

flatypus/TeamAphelionCansat

Repository files navigation

Team Aphelion CanSat | 🏆 1st Place in Canada 2024 | Represented Canada at European Space Agency

Project repo for Eric Hamber Secondary School from Vancouver, Canada.

image

image

Team Members:

  • Jason Huang - Co-Captain and Lead Engineer
    • Electrical Design Lead
    • PCB Design and Assembly
    • Mechanical Design and Fabrication
    • CanSat Integration
  • Tristan Yan-Klassen - Co-Captain and Mission Leader
    • Mechanical Design and Fabrication Lead
    • Drilling Apparatus Design and Assembly
    • CanSat Body and Systems Integration
  • Hinson Chan - Software Lead
    • Ground Station Software
    • Map Library Development
    • Website Development
  • John Xu - Hardware Lead
    • Landing Apparatus
    • Soil Sample Intake
    • Ground Station Hardware
  • Anthony Lu - External Communications
    • Outreach
    • Parachute Testing
  • Mendel Rieseberg - Ground Control
    • Radio Communications

Project abstract

The goal of CanSat is to design and build a small satellite that fits inside a 330mL soda can. The satellite will be launched to an altitude of 1km and will be deployed to land safely on the ground. We must equip the satellite with sensors to measure temperature, pressure, altitude, and location.

This Repository

The project is split into six subdirectories:

  • 'backend': The backend server for the ground station
  • 'mission-control': The frontend dashboard for the ground station
  • 'landing': The landing page for the website
  • 'embedded': The Arduino code for the CanSat microcontroller
  • 'electrical': The electrical schematics and PCB manufacturing files
  • 'mechanical': The CAD files of our CanSat

The embedded code consists of sensors detecting temperature, pressure, altitude, and location. The data is sent to the ground station via radio communication, which is relayed via socket communication to the frontend dashboard. The dashboard then visualizes that information in the form of graphs, a map showing the CanSat's location, and the live 3D rotation of the CanSat.

Project Presentation

This CanSat is designed to complete the primary mission, which is to send temperature and pressure data to the ground station live, at least once a second via radio. The CanSat also has a secondary mission, which is to drill into soil, take a soil sample, and test it with a ninhydrin chemical test within the CanSat's internal chamber. Using the CanSat's FPV live camera, we will determine the presence of amino acids in the soil if a change of color is shown in the ninhydrin.

To accomplish this, the CanSat will be first launched in a rocket to around 1km, then deployed with a parachute to descend at around 6m/s. When the CanSat lands, it will be on its side; we will send a command through our ground station to release the landing legs, which will spring the CanSat upright. We will then initiate the drill, which will drill a hole through our waterproof water chamber, releasing the water onto the soil to dampen it. The CanSat will then continue drilling into the soil, picking up a sample of wet soil, and then stop drilling and retracting up into the CanSat body. The ninhydrin chamber will swivel into place, where then the drill will lower into the chemical, allowing the soil to begin the chemical test. All of this will be remotely controlled from our dashboard.

Mechanical Design

  • Designed in SolidWorks and 3D printed by Tristan, Jason, and John.
  • Custom drill bit and other parts machined to fit inside the CanSat body.
  • 4 motors used: GB 2208 Gimbal motor for drilling, 5g servo for testing chamber, N20 worm gear motor for leg release, and 2.5g servo for lead screw.

image

Custom Designed Printed Circuit Board

  • Designed and hand-assembled by Jason on KiCad.
  • Onboard sensors: GPS, 6 axis IMU, and 2 redundant barometers.
  • Includes MOSFETs for motor control, 5V buck converter, and TVS diodes for ESD protection.

image

Software/Ground Control

  • CanSat onboard programming written in Arduino
    • Written for Teensy 4.0, so it supports 'multithreading' (with careful process jumping)
  • Nextjs frontend + ExpressJS backend, written by Hinson
    • Data path: Onboard sensors -> Arduino serial -> Radio -> WebSocket backend -> Nextjs graph
  • Graphs showing live data updates (temperature, pressure, calculated altitude)
  • Fully-functional offline (no WIFI) slippy map
    • You can also embed it as a react component with bun i react-offline-maps
    • OSM tile layers; tile caching
  • Gyrometer data 3D (threejs)
  • Control motors live with Bidirectional communication
    • Buttons send message via. data path in reverse:
    • Websockets -> Radio -> Serial read -> parse as commands -> send power to pin

image

Cost Breakdown

image