Skip to the content
PCBKitNew board
4 layers80 × 80 mmPayload, the printed circuit board in 3D

Open Source Earth Imaging Satellite Hardware + Firmware

Size
80 × 80 mm
Copper layers
4
Thickness
1.6 mm
Parts
60
Nets
211
Pads
551
Tracks, vias
808, 641
Pours
3
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
23 Aug 2025
Updated
8 Nov 2026

Overview

Payload is an open-source printed circuit board by OSUSat, from the OSUSat/cubesat repository on GitHub, published under the MIT licence. It is a 4-layer board of 80 × 80 mm with 60 parts on 211 nets, routed with 808 tracks and 641 vias.

It is built around the SN65HVD230D, 74LVC1G07 and DRV8846RGE, with the ARJM11C7-502-AB-EW2 among its other parts. Its parts include 16 capacitors, 15 resistors, 7 ICs, 7 connectors and 6 diodes. It belongs with the Raspberry Pi (Linux) boards of this library.

Main components

4

README

README.md

Oregon State University (OSU) AIAA OSUSat/SCRT Climate Science CubeSat

Welcome to the central repository for the OSUSat Climate Science CubeSat project. This repository contains the hardware designs, firmware, and documentation for the sub-systems comprising the satellite.


Mission Context & Goals

The OSUSat Climate Science CubeSat is a low-Earth orbit (LEO) satellite designed to capture high-resolution imagery and scientific data for climate science research.

Mission Objectives

  1. Earth Observations: Capture multispectral or high-resolution imagery using a dual-camera payload to study surface health, atmospheric conditions, cloud formations.
  2. Reliable Power Delivery (EPS): Harvest solar power from 6 body-mounted solar panels, manage charge for 4x 18650 Li-ion batteries, and distribute and regulate power rails to prevent overcurrent/overvoltage events.
  3. Command & Telemetry (OBC): Orchestrate system operations, manage communication buses (CANBus, UART, I2C, SPI), process ground commands, and monitor satellite health.

System Architecture

The satellite is divided into five primary subsystems interconnected via a shared backplane connector (exposing power rails and UART/CAN control buses):

mermaid
graph TD
    Solar[Solar Panels & Batteries] --> EPS[Electrical Power System - EPS]

    EPS -->|Power| OBC[On-Board Computer - OBC]
    EPS -->|Power| Payload[Science Camera Payload]
    EPS -->|Power| ADCS[Attitude Determination & Control - ADCS]
    EPS -->|Power| Comms[UHF Communications]

    OBC <-->|Control Bus| EPS
    OBC <-->|Control Bus| Payload
    OBC <-->|Control Bus| ADCS
    OBC <-->|Control Bus| Comms

    Comms <-->|Radio Link| Ground[Ground Station]

1. Electrical Power System (EPS)

  • Microcontroller: NXP S32K3 Series / STM32L496xx (ARM Cortex-M4)
  • Responsibilities:
    • Solar energy harvesting with Maximum Power Point Tracking (MPPT).
    • Battery charge/discharge management (2 independent packs of 2x 18650 cells).
    • Voltage regulation (3.3V & 5V rails) with software-controllable load switches.
    • Fast hardware-level and software-level overcurrent protection.
    • Hardware watchdog monitoring.
    • Broad mission context management using the MCU

2. On-Board Computer (OBC)

  • Microcontroller: Main MCU + STM32H743xx (ARM Cortex-M7)
  • Responsibilities:
    • Master command parsing and state management.
    • Health heartbeats and telemetry collection.
    • Orbital calculations and scheduling payload imaging windows.
    • Ground station radio communication interface.

3. Payload

  • Processor: Raspberry Pi Compute Module 4 (CM4)
  • Responsibilities:
    • High-speed dual-camera scientific imaging.
    • Actuator/motor driver control (e.g., lens shutters, filter wheels) (V1 Only).
    • Image compression and storage before downlink.

4. Attitude Determination and Control System (ADCS)

  • Responsibilities: Detumbling the spacecraft, aligning the imaging payload to nadir pointing, and tracking target orientations.

5. UHF Communications (Comms)

  • Responsibilities: Uplinking commands and telemetry requests from ground stations, and downlinking collected science data and telemetry beacons.

Repository Structure

The project uses a versioned directory structure separating hardware and firmware iterations:

text
.
├── .github/                     # GitHub Workflows & Issue/PR Templates
│   └── workflows/
│       ├── build_and_docs.yml   # CI/CD action defining the pipeline
│       └── build_and_test.sh    # Dynamic build script runner
│
├── adcs/                        # Attitude Determination and Control System
│   ├── v1/
│   └── v2/
│
├── eps/                         # Electrical Power System Subsystem
│   ├── v1/                      # Version 1 (Prototype Model)
│   │   ├── firmware/            # STM32L4 firmware (CMake, CUnit tests, mocks)
│   │   ├── hardware/            # KiCad schematic, layout, symbols, & footprints
│   │   └── documentation/       # Doxygen, Sphinx configuration & spec files
│   ├── v2/                      # Version 2 (Placeholder for v2 development)
│   └── documentation/           # Bootflows, subsystem specifications, & kickoff info
│
├── obc/                         # On-Board Computer Subsystem
│   ├── v1/                      # Version 1 (Prototype Model)
│   │   ├── firmware/            # STM32H7 firmware (CMake)
│   │   ├── hardware/            # KiCad schematic and layout
│   │   └── tests/               # Pico-based LoRa packet transmission test
│   ├── v2/                      # Version 2 (Placeholder for v2 development)

Getting Started & Building

1. Prerequisite Toolchains

Ensure you have the following installed on your host system:

  • ARM Cross Compiler: gcc-arm-none-eabi
  • Build System Tools: cmake, make, g++
  • Documentation Generators: doxygen, Python 3 + sphinx

2. Fetching Submodules

This repository utilizes submodules (such as osusat/core and osusat/messaging). Clone with submodules or initialize them:

bash
git submodule update --init --recursive

3. Hardware Development & KiCad Templates

To create new expansion / daughterboard hardware designs in KiCad, symlink the shared template directory to your local KiCad user template path:

  • Linux:
    bash
    mkdir -p ~/.local/share/kicad/10.0/template
    ln -sf /path/to/cubesat/repo/shared/kicad/templates/test_board ~/.local/share/kicad/10.0/template/test_board
  • Windows (PowerShell):
    powershell
    New-Item -ItemType Directory -Force -Path "$env:APPDATA\kicad\10.0\template"
    New-Item -ItemType SymbolicLink -Path "$env:APPDATA\kicad\10.0\template\test_board" -Target "C:\path\to\cubesat\repo\shared\kicad\templates\test_board"

Once symlinked, open KiCad, click File → New Project from Template..., select the User Templates tab, and choose OSUSat Backplane Test Board Template.

For full manual setup options and details, see shared/kicad/README.md.

4. Compilation Guide

Building for the ARM Target (e.g., EPS v1)

To build the firmware binaries to flash onto the MCU:

bash
cd eps/v1/firmware
cmake -B build_arm -S . -DCMAKE_TOOLCHAIN_FILE=arm-none-eabi-toolchain.cmake
cmake --build build_arm

Outputs: .elf, .hex, and .bin files will be generated under build_arm/.

Building Host Tests / Hardware-in-the-Loop (HITL) Mocks

To build and execute unit tests on your local machine:

bash
cd eps/v1/firmware
cmake -B build_hitl -S . -DTARGET_ARCH=HOST -DBUILD_HITL=ON
cmake --build build_hitl
cd build_hitl && ctest --output-on-failure

CI/CD Pipeline

The repository uses a generalized GitHub Actions workflow:

  • Scope-Based Execution: Uses git diffs to detect which subsystem version has been modified (e.g. eps/v1/ vs obc/v1/) and builds only the affected firmware.
  • Continuous Integration: Runs host-based CTests automatically to verify changes.
  • Documentation Deployments: Generates Doxygen API listings and Sphinx documentation on successful builds. Pull Requests automatically receive a comment with links to Pages-hosted previews of the documentation.

Quality Assurance & Contributions

Before submitting a Pull Request, contributors must follow the project's QA procedures found in /documentation:

  1. Issue Checkout: Before work or contributions begin, ensure your changes are encapsulated by an issue in the GitHub project
  2. Design Guidelines: For any and all changes, follow the design guidelines.
  3. Design Reviews: Complete the Schematic Review Checklist and Layout Review Checklist checklists before fabricating PCBs.
  4. Firmware Guidelines: Adhere to the HITL Guidelines and Keeping the HAL Policy Free design rules.
  5. Acceptance Tests: All hardware deliverables require a formal ATP (Acceptance Test Procedure).

Parts

60
QtyValueFootprintReferences
9100nCapacitor_SMD:C_0402_1005MetricC1, C4, C9, C10, C11, C12, C13, C15, C16
4, , ,
41kResistor_SMD:R_0402_1005MetricR1, R2, R10, R11
4D_ZenerDiode_SMD:D_SOD-323D3, D4, D5, D6
4TBDCapacitor_SMD:C_0402_1005MetricC5, C6, C7, C8
35.1kResistor_SMD:R_0402_1005MetricR3, R4, R7
21Resistor_SMD:R_1206_3216MetricR5, R6
2120Resistor_SMD:R_0402_1005MetricR12, R13
220 MHzCrystal:Crystal_SMD_SeikoEpson_TSX3225-4Pin_3.2x2.5mmY1, Y2
251kResistor_SMD:R_0402_1005MetricR17, R18
2LEDLED_SMD:LED_0805_2012MetricD1, D2
2MCP2517FD-xJHAPackage_DFN_QFN:DFN-14-1EP_3x4.5mm_P0.65mm_EP1.65x4.25mmU2, U5
2SN65HVD230Package_SO:SOIC-8_3.9x4.9mm_P1.27mmU4, U7
110uCapacitor_SMD:C_0402_1005MetricC2
112kResistor_SMD:R_0402_1005MetricR8
11uCapacitor_SMD:C_0402_1005MetricC14
12.2uCapacitor_SMD:C_0402_1005MetricC3
12kResistor_SMD:R_0402_1005MetricR9
174LVC1G07Package_TO_SOT_SMD:SOT-23-5U6
1ARJM11C7-502-ABpayload:ARJM11C7-502-LEDsJ2
1CM4payload:Module_Raspberry_Pi_CM4U1
1Conn_01x05Connector_JST:JST_XH_B5B-XH-AM_1x05_P2.50mm_VerticalJ5
1Conn_02x04_Odd_EvenConnector_PinHeader_2.54mm:PinHeader_2x04_P2.54mm_VerticalJ4
1Conn_02x20_Odd_EvenConnector_Samtec_EdgeRate:Samtec_ERF8-020-XX.X-DV_2x20_P0.8mm_SocketJ10
1DRV8846Package_DFN_QFN:VQFN-24-1EP_4x4mm_P0.5mm_EP2.45x2.45mm_ThermalViasU9
1Jumper_2_OpenConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJP1
1SW_PushButton_Switch_SMD:SW_SPST_PTS810SW1
1USB_C_Receptacle_USB2.0_16PConnector_USB:USB_C_Receptacle_GCT_USB4110J3
1~Connector_FFC-FPC:Amphenol_F32Q-1A7x1-11022_1x22-1MP_P0.5mm_HorizontalJ1
1~Connector_FFC-FPC:Amphenol_F32R-1A7x1-11022_1x22-1MP_P0.5mm_HorizontalJ7

The 59 most common of 60 parts.

Questions

How big is the Payload PCB?

It measures 80 × 80 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Payload use?

60 parts, built around the SN65HVD230D, 74LVC1G07, DRV8846RGE and ARJM11C7-502-AB-EW2. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Payload KiCad files?

From the OSUSat/cubesat repository on GitHub, at the commit this page was made from: the board is payload/v1/hardware/payload.kicad_pcb and its schematic eps/v1/battery_contact_l/battery_contact.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Payload design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

More from OSUSat/cubesat

6
  • 6 layers80 × 80 mmEps, the printed circuit board in 3D

    Eps

    OSUSat/cubesat

    Open Source Earth Imaging Satellite Hardware + Firmware

    413 parts8MIT
  • 4 layers80 × 80 mmObc, the printed circuit board in 3D

    Obc

    OSUSat/cubesat

    Open Source Earth Imaging Satellite Hardware + Firmware

    151 parts8MIT
  • 2 layers73 × 28 mmBattery contact panel, the printed circuit board in 3D

    Battery contact panel

    OSUSat/cubesat

    Open Source Earth Imaging Satellite Hardware + Firmware

    34 parts8MIT
  • 2 layers35 × 28 mmBattery contact, the printed circuit board in 3D

    Battery contact

    OSUSat/cubesat

    Open Source Earth Imaging Satellite Hardware + Firmware

    11 parts8MIT
  • 2 layers35 × 28 mmBattery contact, the printed circuit board in 3D

    Battery contact

    OSUSat/cubesat

    Open Source Earth Imaging Satellite Hardware + Firmware

    11 parts8MIT
  • 4 layers12.6 × 17 mmUsb c, the printed circuit board in 3D

    Usb c

    OSUSat/cubesat

    Open Source Earth Imaging Satellite Hardware + Firmware

    9 parts8MIT

Similar boards

  • 4 layers105 × 120 mmTvac, the printed circuit board in 3D

    Tvac

    thanasipantazides/tate-thermovac

    Readout board and code for the Tate 220 thermovacuum chamber

    154 parts
  • 4 layers85 × 85 mmEPS, the printed circuit board in 3D

    EPS

    rgw3d/1KCubeSat_Hardware

    Hardware design files for my $1000 CubeSat.

    657 parts158GPL-3.0
  • 4 layers51.4 × 61 mmGB LIVE32, the printed circuit board in 3D

    GB LIVE32

    Gekkio/gb-hardware

    Game Boy -related custom hardware by gekkio

    61 parts379CC-BY-4.0
  • 6 layers121 × 83 mmPS2 79004 Rev 0 4, the printed circuit board in 3D

    PS2 79004 Rev 0 4

    tschicki/PS2-Portable

    A custom designed PS2 Portable

    770 parts207MIT
  • 4 layers120 × 120 mmYellow, the printed circuit board in 3D

    Yellow

    NabuCasa/yellow

    Home Assistant Yellow - hardware for Home Assistant which grows with your needs.

    322 parts116
  • 4 layers38 × 38 mmAgnus, the printed circuit board in 3D

    Agnus

    jbilander/ReAgnus

    A drop-in replacement PCB for the Amiga Agnus chip

    38 parts97CC-BY-SA-4.0
  • 4 layers72.6 × 170 mmOpenJBOD RP2040, the printed circuit board in 3D

    OpenJBOD RP2040

    OpenJBOD/rp2040

    This repository contains the hardware design files OpenJBOD RP2040 Baseboard.

    129 parts87CERN-OHL-P-2.0
  • 4 layers66 × 90 mmIctester, the printed circuit board in 3D

    Ictester

    jakubfi/ictester

    Logic IC tester

    104 parts79