unisat

CanSat Minimal — Operations Guide

Profile key: cansat_minimal · Mass cap: 350 g · Volume: 226 cm³ Template: mission_templates/cansat_minimal.json · BOM: hardware/bom/by_form_factor/cansat_minimal.csv


1. Mission class

A pared-down CanSat for first-time teams, school programmes, and educational outreach. No GNSS, no camera, no deployable payload — just the four sensors needed to describe a free-fall descent: accelerometer, gyro, barometer, and a UHF beacon.

Typical flight profile: released at ~500 m from a small rocket or drone, descends under a single parachute, transmits telemetry until landing.

2. Physical envelope

Parameter Value
Mass (with 20 % margin) ≤ 350 g
Outer diameter 60 mm
Inner (usable) dia. 56 mm (2 mm wall)
Height 80 mm
Internal volume 226 cm³
Power generation 0 W (battery-only)
Nominal consumption 0.6 W
Battery 1× 18650 LiPo, ~2.5 Wh

3. Regulatory context

4. Subsystem matrix

Subsystem Required Allowed Forbidden
OBC (STM32F446)    
EPS (LiPo + regulator)    
IMU (MPU-6050 class)    
Barometer    
UHF 433 MHz telemetry    
Descent controller passive parachute  
GNSS   ⚠ (adds 40 g)  
Camera     ❌ (volume)
ADCS     ❌ (no attitude control on CanSat)
S-band     ❌ (no range benefit)

5. Build

make target-cansat-minimal
# produces firmware/build-arm-cansat-minimal/unisat_firmware.elf
# or a host binary if arm-none-eabi-gcc is absent

The compile-time macro is MISSION_PROFILE_CANSAT_MINIMAL=1. See firmware/stm32/Core/Inc/mission_profile.h for the full expansion. All orbital features (PROFILE_FEATURE_ORBIT_PREDICTOR, SBAND, IMAGERY, ADCS_ACTIVE, WHEELS) are 0; the DESCENT_CTRL gate is 1.

6. Mission config

cp mission_templates/cansat_minimal.json mission_config.json

Minimum fields to review and adjust:

The configurator UI can generate the same file interactively:

make configurator
# Platform → "CanSat" → Form Factor → "cansat_minimal"

7. Mass & volume validation

Expected output from the validator with the default subsystem set (obc, imu, barometer, comm_uhf, descent_controller):

Metric Value Status
Total mass 0.288 kg ≤ 0.35 kg ✅
20 % margin 0.048 kg included
Total volume 89 cm³ ≤ 226 cm³ ✅
Utilization 39 % plenty of headroom

If adding a GNSS module pushes the result over budget, disable the camera placeholder or drop to a 14500-cell battery.

8. Typical mission phases

The mission_types registry (flight-software/core/mission_types.py) defines these for cansat_standard; cansat_minimal inherits them:

pre_launch  →  launch_detect  →  ascent  →  apogee  →  descent  →  landed

Each phase gates which modules are active:

Phase Active modules Duration
pre_launch telemetry, health, imu, barometer until launch ARM
launch_detect imu (accel threshold 3 g), barometer ≤ 10 min
ascent + data_logger @ 10 Hz ≤ 2 min
apogee + descent_controller (eject parachute) ≤ 30 s
descent full telemetry, high-rate logging ≤ 5 min
landed telemetry + comm only (conserve battery) ≤ 1 h

9. Testing checklist (bench)

Legend: [x] = verified in software / CI / SITL (passes in the current release); [ ] = requires bench hardware, RF range test, or flight-day field activity — team must sign off manually.

10. Flight-day checklist

11. Known limitations

12. Post-flight debrief

Capture and archive:

  1. Full AX.25 ground-station capture (.bin + timestamp) under flight_logs/<YYYY-MM-DD>/.
  2. On-board CSV log from the data_logger module (pull over USB post-recovery).
  3. Photographs of any visible damage to the structure / electronics.
  4. Completed flight-day checklist with any deviations noted.
  5. Lessons-learned summary — file under docs/operations/flight_reports/.

Data to analyse:


Previous profile: — · Next profile: cansat_standard.md