Skip to the content
PCBKitNew board
4 layers80 × 80 mmObc, 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
151
Nets
194
Pads
700
Tracks, vias
1,011, 940
Pours
8
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
23 Aug 2025
Updated
8 Nov 2026

Overview

Obc 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 151 parts on 194 nets, routed with 1,011 tracks and 940 vias.

It is built around the STM32H743ZGT6, SN65HVD230D and TPS564242DRL, with the LM66100DCK, AMS1117-3.3 and FM24CL16B-G among its other parts. Its parts include 48 capacitors, 37 resistors, 22 diodes, 15 ICs and 9 connectors. It belongs with the STM32 boards of this library.

Main components

12

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

151
QtyValueFootprintReferences
23100nFCapacitor_SMD:C_0402_1005MetricC1, C2, C3, C4, C10, C11, C15, C23, C24, C25, C26, C31, C32, C33, C34, C36 +7
16D_ZenerDiode_SMD:D_SOD-882D6, D7, D8, D9, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21
1010kResistor_SMD:R_0402_1005MetricR2, R8, R9, R10, R11, R14, R15, R16, R19, R21
80Resistor_SMD:R_0402_1005MetricR26, R27, R28, R29, R30, R31, R32, R33
810uFCapacitor_SMD:C_0603_1608MetricC22, C27, C28, C30, C40, C41, C44, C45
851kResistor_SMD:R_0402_1005MetricR1, R3, R4, R5, R6, R17, R18, R20
722uCapacitor_SMD:C_0603_1608MetricC29, C38, C39, C43, C47, C48, C49
4MountingHoleMountingHole:MountingHole_3.2mm_M3H1, H2, H3, H4
31kResistor_SMD:R_0402_1005MetricR34, R35, R36
21.5uHInductor_SMD:L_Vishay_IHLP-2020L2, L3
212pFCapacitor_SMD:C_0402_1005MetricC17, C18
215pFCapacitor_SMD:C_0402_1005MetricC19, C20
21uFCapacitor_SMD:C_0402_1005MetricC16, C35
22.2uFCapacitor_SMD:C_0402_1005MetricC13, C14
230kResistor_SMD:R_0603_1608MetricR23, R25
25.1kResistor_SMD:R_0402_1005MetricR7, R12
2Conn_CoaxialConnector_Coaxial:U.FL_Hirose_U.FL-R-SMT-1_VerticalJ3, J5
2LM66100DCKPackage_TO_SOT_SMD:SOT-363_SC-70-6U10, U11
2SN65HVD230Package_SO:SOIC-8_3.9x4.9mm_P1.27mmU7, U8
2TPS564242Package_TO_SOT_SMD:SOT-563U14, U15
110Resistor_SMD:R_1206_3216MetricR13
110nFCapacitor_SMD:C_0402_1005MetricC12
1120kResistor_SMD:R_0603_1608MetricR22
115kResistor_SMD:R_0402_1005MetricR37
11N5819WSDiode_SMD:D_SOD-323D3
1220kResistor_SMD:R_0603_1608MetricR24
125 MHzCrystal:Crystal_SMD_3225-4Pin_3.2x2.5mmY1
127nHInductor_SMD:L_0402_1005MetricL1
132.768 kHzCrystal:Crystal_SMD_3215-2Pin_3.2x1.5mmY2
14.7uFCapacitor_SMD:C_0402_1005MetricC21
1600RInductor_SMD:L_0603_1608MetricFB1
1AMS1117-3.3Package_TO_SOT_SMD:SOT-223-3_TabPin2U9
1AO3400APackage_TO_SOT_SMD:SOT-23Q2
1AO3401APackage_TO_SOT_SMD:SOT-23Q1
1CR2032Battery:BatteryHolder_Keystone_3002_1x2032BT1
1Conn_01x03Connector_JST:JST_PH_S3B-PH-K_1x03_P2.00mm_HorizontalJ9
1Conn_02x02_Odd_EvenConnector_PinHeader_2.54mm:PinHeader_2x02_P2.54mm_VerticalJ6
1Conn_ARM_JTAG_SWD_10Connector_PinHeader_1.27mm:PinHeader_2x05_P1.27mm_Vertical_SMDJ1
1D_TVSDiode_SMD:D_SOD-882D5
1ERF8-020-09.0-L-DV-TRConnector_Samtec_EdgeRate:Samtec_ERF8-020-XX.X-DV_2x20_P0.8mm_SocketJ11
1FM24CL16BPackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU5
1GreenLED_SMD:LED_0805_2012MetricD4
1ISM6HG256XPackage_LGA:LGA-14_3x2.5mm_P0.5mm_LayoutBorder3x4yU13
1JumperConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJP1
1MAX-M10SRF_GPS:ublox_MAXU4
1MAX6369Package_TO_SOT_SMD:SOT-23-8U3
1MS5607-02BAPackage_LGA:LGA-8_3x5mm_P1.25mmU6
1Micro_SD_CardConnector_Card:microSD_HC_Molex_47219-2001J2
1RFM96W-433S2RF_Module:HOPERF_RFM9XW_SMDU2
1RedLED_SMD:LED_0805_2012MetricD2
1SI7129DN-T1-GE3Package_SO:Vishay_PowerPAK_1212-8_SingleQ3
1STM32H743ZGT6Package_QFP:LQFP-144_20x20mm_P0.5mmU1
1SW_PushButton_Switch_SMD:SW_SPST_TS-1088-xR020SW2
1SW_SPDTButton_Switch_SMD:SW_SPDT_Shouhan_MSK12C02SW1
1USBLC6-2P6Package_TO_SOT_SMD:SOT-666U12
1USB_C_Receptacle_USB2.0_16PConnector_USB:USB_C_Receptacle_G-Switch_GT-USB-7010ASVJ4
1WhiteLED_SMD:LED_0805_2012MetricD1
1YellowLED_SMD:LED_0805_2012MetricD22
1~Connector_Samtec_EdgeRate:Samtec_ERM8-020-XX.X-DV_2x20_P0.8mm_TerminalJ10

The 148 most common of 151 parts.

Questions

How big is the Obc PCB?

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

What parts does the Obc use?

151 parts, built around the STM32H743ZGT6, SN65HVD230D, TPS564242DRL and LM66100DCK. 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 Obc KiCad files?

From the OSUSat/cubesat repository on GitHub, at the commit this page was made from: the board is obc/v1/hardware/obc.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 Obc 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 mmPayload, the printed circuit board in 3D

    Payload

    OSUSat/cubesat

    Open Source Earth Imaging Satellite Hardware + Firmware

    60 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 layers60 × 150 mmHAL-1-HW, the printed circuit board in 3D

    HAL-1-HW

    liquid-rocketry-illinois/HAL-1-HW

    Hardware designs for HAL-1, including EDA files, datasheets, AV Bay CAD files, and other relevant files for final design.

    114 parts
  • 4 layers66 × 42 mmCommBoard, the printed circuit board in 3D

    CommBoard

    icl-rocketry/Ricardo-RadioBoard

    93 parts
  • 4 layers80 × 80 mmBLDC Version1 1 0, the printed circuit board in 3D

    BLDC Version1 1 0

    DJAY101/Dynamiq_BLDC_Controller

    Bringing brushless motor control to the masses

    125 partsGPL-3.0
  • 2 layers40 × 60 mmJoint controller board rev d logic, the printed circuit board in 3D

    Joint controller board rev d logic

    aliahumanoid/alia-humanoid-core

    Humanoid research project (Phase 0): firmware, host software, STL files and electronics for tendon-driven joints inside real human proportions. GPLv3 software, CC BY-NC-ND hardware files.

    43 parts12GPL-3.0
  • 4 layers90.2 × 95.9 mmPiridium bus, the printed circuit board in 3D

    Piridium bus

    Alan-JH/piridium-bus

    Flight Computer Board for TJ Cubesat Bus design

    162 parts