Skip to the content
PCBKitNew board
6 layers80 × 80 mmEps, the printed circuit board in 3D

Open Source Earth Imaging Satellite Hardware + Firmware

Size
80 × 80 mm
Copper layers
6
Thickness
1.6 mm
Parts
413
Nets
316
Pads
1,345
Tracks, vias
4,165, 712
Pours
98
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
23 Aug 2025
Updated
8 Nov 2026

Overview

Eps is an open-source printed circuit board by OSUSat, from the OSUSat/cubesat repository on GitHub, published under the MIT licence. It is a 6-layer board of 80 × 80 mm with 413 parts on 316 nets, routed with 4,165 tracks and 712 vias.

It is built around the 74LVC1G07SE-7-MS, SN65HVD230D and IRLML0030. Its parts include 135 resistors, 116 capacitors, 40 ICs, 20 transistors and 12 diodes.

Main components

3

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

413
QtyValueFootprintReferences
58100nCapacitor_SMD:C_0402_1005MetricC10, C13, C103, C105, C113, C114, C115, C116, C117, C118, C119, C120, C121, C122, C123, C124 +42
251MResistor_SMD:R_0402_1005MetricR4, R23, R24, R26, R48, R49, R51, R54, R55, R57, R60, R61, R63, R66, R67, R69 +9
18TestPointTestPoint:TestPoint_Pad_D1.0mmTP1, TP2, TP3, TP4, TP5, TP6, TP7, TP10, TP11, TP12, TP13, TP14, TP15, TP16, TP17, TP18 +2
170Resistor_SMD:R_0402_1005MetricR6, R21, R25, R46, R50, R52, R56, R58, R62, R64, R68, R70, R74, R76, R80, R82 +1
16IRLML0030Package_TO_SOT_SMD:SOT-23Q5, Q6, Q7, Q8, Q9, Q10, Q11, Q12, Q13, Q14, Q15, Q16, Q17, Q18, Q19, Q20
15100kResistor_SMD:R_0402_1005MetricR5, R22, R30, R47, R53, R59, R65, R71, R77, R83, R105, R106, R114, R115, R133
101.5kResistor_SMD:R_0402_1005MetricR122, R123, R124, R125, R126, R127, R128, R129, R130, R131
1022uCapacitor_SMD:C_0805_2012MetricC94, C95, C96, C97, C98, C106, C107, C108, C109, C110
910kResistor_SMD:R_0402_1005MetricR13, R19, R29, R89, R90, R96, R97, R109, R112
91uFCapacitor_SMD:C_0402_1005MetricC3, C26, C54, C59, C64, C69, C74, C79, C84
822nCapacitor_SMD:C_0402_1005MetricC4, C5, C14, C21, C89, C92, C101, C104
874LVC1G07SE-7Package_TO_SOT_SMD:SOT-353_SC-70-5U6, U12, U16, U20, U24, U28, U32, U36
8NCS214RSQT2GPackage_TO_SOT_SMD:SOT-363_SC-70-6U5, U11, U15, U19, U23, U27, U31, U35
8NetTie_2NetTie:NetTie-2_SMD_Pad0.5mmNT1, NT2, NT3, NT4, NT5, NT6, NT7, NT8
8TPS22810DRVRPackage_SON:WSON-6-1EP_2x2mm_P0.65mm_EP1x1.6mmU8, U14, U18, U22, U26, U30, U34, U38
8~Package_TO_SOT_SMD:SOT-23-6U7, U13, U17, U21, U25, U29, U33, U37
720mResistor_SMD:R_1206_3216MetricR31, R35, R37, R39, R41, R43, R45
64.7uCapacitor_SMD:C_0402_1005MetricC7, C8, C9, C12, C19, C46
6Conn_01x02Connector_JST:JST_PH_B2B-PH-K_1x02_P2.00mm_VerticalJ3, J4, J5, J6, J7, J8
6D_SchottkyDiode_SMD:D_SOD-323D2, D4, D6, D8, D10, D12
6D_TVSDiode_SMD:D_SOD-523D1, D3, D5, D7, D9, D11
6FiducialFiducial:Fiducial_1mm_Mask2mmFID1, FID2, FID3, FID4, FID5, FID6
6PolyfuseFuse:Fuse_0402_1005MetricF1, F2, F3, F4, F5, F6
51uCapacitor_SMD:C_0402_1005MetricC11, C18, C36, C90, C102
44.7kResistor_SMD:R_0402_1005MetricR9, R10, R15, R16
4470kResistor_SMD:R_0402_1005MetricR110, R111, R119, R120
4499kResistor_SMD:R_0402_1005MetricR88, R91, R95, R98
450kResistor_SMD:R_0402_1005MetricR107, R108, R116, R117
4MountingHoleMountingHole:MountingHole_3.2mm_M3H1, H2, H3, H4
4NMOSfootprints:TRANS_FDMC8327LQ1, Q2, Q3, Q4
2100uCapacitor_Tantalum_SMD:CP_EIA-7343-15_Kemet-WC87, C99
210mResistor_SMD:R_1206_3216MetricR14, R20
210pCapacitor_SMD:C_0402_1005MetricC48, C50
210uCapacitor_SMD:C_0402_1005MetricC15, C22
210uCapacitor_SMD:C_1206_3216MetricC16, C23
2120Resistor_SMD:R_0402_1005MetricR135, R137
2120RInductor_SMD:L_0603_1608MetricFB1, FB2
2140kResistor_SMD:R_0402_1005MetricR32, R34
216mResistor_SMD:R_1206_3216MetricR11, R17
218kResistor_SMD:R_0402_1005MetricR7, R8
21uCapacitor_SMD:C_0805_2012MetricC47, C49
220pCapacitor_SMD:C_0402_1005MetricC38, C40
222uCapacitor_SMD:C_0603_1608MetricC88, C100
22kResistor_SMD:R_0402_1005MetricR27, R102
2300kResistor_SMD:R_0402_1005MetricR38, R42
24.7uCapacitor_SMD:C_1206_3216MetricC111, C112
24.7uInductor_SMD:L_KOHERelec_MDA5030L4, L5
2430kResistor_SMD:R_0402_1005MetricR93, R100
25.1kResistor_SMD:R_0402_1005MetricR1, R2
251kResistor_SMD:R_0402_1005MetricR134, R136
26.8uInductor_SMD:L_Vishay_IHLP-2020L2, L3
263.4kResistor_SMD:R_0402_1005MetricR12, R18
2680kResistor_SMD:R_0402_1005MetricR104, R113
2Conn_01x03Connector_JST:JST_PH_S3B-PH-K_1x03_P2.00mm_HorizontalJ9, J10
2LOGOLOGOG***, G***
2LTC4162-LPackage_DFN_QFN:QFN-28-1EP_4x5mm_P0.5mm_EP2.65x3.65mmU3, U4
2LTC4415Package_SO:MSOP-16-1EP_3x4.039mm_P0.5mm_EP1.651x2.845mmU41, U42
2MP28167-APackage_DFN_QFN:MPS_QFN-16_3x3mm_P0.5mmU39, U40
2SN65HVD230Package_SO:SOIC-8_3.9x4.9mm_P1.27mmU43, U44
1107kResistor_SMD:R_0402_1005MetricR101
110MResistor_SMD:R_0402_1005MetricR3
110nCapacitor_SMD:C_0402_1005MetricC51
1187kResistor_SMD:R_0402_1005MetricR94
11kResistor_SMD:R_0402_1005MetricR103
1200kResistor_SMD:R_0402_1005MetricR36
120kResistor_SMD:R_0402_1005MetricR44
122uCapacitor_SMD:C_1206_3216MetricC6
12mResistor_SMD:R_1206_3216MetricR33
132KHzCrystal:Crystal_SMD_3225-4Pin_3.2x2.5mmY2
1390Resistor_SMD:R_0402_1005MetricR28
14.7uFCapacitor_SMD:C_0402_1005MetricC2
1402kResistor_SMD:R_0402_1005MetricR132
147uFCapacitor_SMD:C_1206_3216MetricC1
149.9kResistor_SMD:R_0402_1005MetricR40
16.8uHInductor_SMD:L_Sunlord_SWPA4018SL1
1806kResistor_SMD:R_0402_1005MetricR99
18MHzCrystal:Crystal_SMD_3225-4Pin_3.2x2.5mmY1
1900kResistor_SMD:R_0402_1005MetricR92
1Conn_01x02Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ2
1Conn_02x20_Counter_ClockwiseConnector_Samtec_EdgeRate:Samtec_ERM8-020-XX.X-DV_2x20_P0.8mm_TerminalJ12

The 386 most common of 413 parts.

Questions

How big is the Eps PCB?

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

What parts does the Eps use?

413 parts, built around the 74LVC1G07SE-7-MS, SN65HVD230D and IRLML0030. 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 Eps KiCad files?

From the OSUSat/cubesat repository on GitHub, at the commit this page was made from: the board is eps/v1/hardware/eps.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 Eps 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
  • 4 layers80 × 80 mmObc, the printed circuit board in 3D

    Obc

    OSUSat/cubesat

    Open Source Earth Imaging Satellite Hardware + Firmware

    151 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 layers68 × 87 mmSpha gateway, the printed circuit board in 3D

    Spha gateway

    sillevl/spha-gateway-hardware

    Gateway PCB integrating a Raspberry Pi Compute Module 4, CAN circuitry, and power circuitry.

    75 parts
  • 4 layers55 × 14.7 mmMinCab, the printed circuit board in 3D

    MinCab

    merocle/mincab

    small carrier board for Raspberry Pi CM4

    41 parts180CC-BY-SA-4.0
  • 4 layers54.6 × 57.1 mmCM5 MINIMA, the printed circuit board in 3D

    CM5 MINIMA

    piecol/CM5_MINIMA_REV1

    CM5 LoRaWAN carrier board in a compact, feature-filled footprint

    98 parts63CERN-OHL-S-2.0
  • 2 layers114 × 102 mmRpi cm4-switch board, the printed circuit board in 3D

    Rpi cm4-switch board

    sequoia-hope/rpi-cm4-switch-board

    A Raspberry Pi (RPi) Compute Module 4 (CM4) Carrier Board with integrated gigabit switch

    94 parts45
  • 6 layers76 × 56 mmCM4 MANET, the printed circuit board in 3D

    CM4 MANET

    ties1887/Mesh-radio-Halow-LoRa

    Modular mesh radio system using Raspberry Pi + HaLow (802.11ah) + LoRa.

    122 parts40
  • 4 layers170 × 170 mmCM5IO, the printed circuit board in 3D

    CM5IO

    sanctuary-systems-com/rpi-cm5io-mini-itx

    A mini ITX board with PCIe x16 based on the Raspberry Pi Comput Module 5 IO board

    75 parts29CERN-OHL-P-2.0
  • 6 layers80.9 × 63 mmCM4IOv5, the printed circuit board in 3D

    CM4IOv5

    neatstranger/Pi-In-The-Skyy

    PoE Camera, Based on Raspberry Pi CM4

    69 parts24
  • 4 layers110 × 100 mmBitcart, the printed circuit board in 3D

    Bitcart

    skot/bitcart

    Raspberry Pi CM4 based antminer control board

    134 parts23