Skip to the content
PCBKitNew board
2 layers64.8 × 56 mmCubeSAT, the printed circuit board in 3D

Core code for Cubesat

Size
64.8 × 56 mm
Copper layers
2
Thickness
1.6 mm
Parts
7
Nets
8
Pads
19
Tracks, vias
48, 107
Pours
1
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
20 Aug 2023
Updated
11 Jun 2024

Overview

CubeSAT is an open-source printed circuit board by CristeaTeodorAndrei, from the CristeaTeodorAndrei/CubeSat repository on GitHub, published under the MIT licence. It is a 2-layer board of 64.8 × 56 mm with 7 parts on 8 nets, routed with 48 tracks and 107 vias.

README

README.md

CubeSat

Introduction

About CubeSat

A CubeSat is a compact but sophisticated space platform, meticulously engineered to achieve its scientific goals. These miniaturised satellites are created with precision and purpose, representing a cost-effective and efficient approach to space exploration. Their primary role involves specific scientific, technological or educational missions.
Equipped with payloads, sensors and specialised instruments, CubeSats are deployed to collect critical data, monitor phenomena or conduct experiments in space. Their modular nature allows for versatility, enabling CubeSats to address a wide range of research objectives, from observing Earth to studying cosmic phenomena.
They contribute to advancing our understanding of the cosmos, demonstrating that innovation can thrive even within the confines of a compact form factor.

About the project

The project was developed with the objective of understanding the complexity of space systems, approaching the different problems that arise in this field and solving them in the most energy and cost efficient way.
The future of this project consists in creating a stable platform that allows future improvements so that young students in this domain can develop.

CubeSat specifications

Hardware specs

text
1. Raspberry PI 4 Model B
2. MPU6050 Accelerometer and Gyroscope Sensor
3. BMP280 Pressure Sensor
4. Raspberry Pi Camera Module 2
5. NRF20L01 Wireless Module
6. Battery System UPS 

Software specs

OBSW was developed in Python, and the operating system on which the software runs is Raspberian on which some software optimizations have been applied.
The project is structured in 4 phases:

  • Activating Remote Control Phase
  • Optimization phase
  • Testing phase
  • OBSW phase

Each of these phases has a well-defined objective and must be fulfilled before the final code runs.

Guideline

Activating Remote Control Phase

Keep in mind that each script that will run will be sent as a command through the GCM.

Power on the GCM, run the script and open the receiver Interface.

  • The Interface should prompt a successful connection message.
  • A warning message should appear to notify the failure to connect with the OBC.

Power on the OBC.

  • Both GREEN and RED LEDs should be ON indicating that OBC is active and ready for requests.
  • A succesful connection message should appear on GCM's Interface to ensure that communcations with the OBC is active and can proceed to the optimization phase.

GCM will try to connect with the OBC every 5 seconds.

Optimization Phase

In order to reduce energy usage and ensure efficient performance of the whole system, a number of optimizations have been implemented:

  • Deactivating Wi-Fi Module
  • Deactivating Bluetooth Module
  • Deactivating Update Module
  • Deactivating UI

By requesting the OBC to run the script Optimization.py via GCM all of those optimizations will be applied and after that the OBC will reboot.
After restarting the system, the GREEN LED will turn ON and RED LED OFF to indicate successful optimization and a confirmation message should appear in GCM's Interface.

OBC can proceed to the testing phase.

Testing Phase

By requesting the OBC to run the script Test.py, the OBC begins testing sequence and a custom TM is sent back to the GCM that indicates the sensors has been detected.
If the RFM is not working or is not responding the RED LED will blink continuously.
If the RFM is working the GREEN LED will blink continuously and a TM will be send to the GCM with the following format:

  • [0x00, 0x00, 0x00, 0x00]

TM's params should have the following values:

  1. (First) 0x00 - MPU6050 has been detected.
  • 0x01 - MPU6050 has not been detected.
  1. (Second) 0x00 - BMP280 has been detected.
  • 0x01 - BMP280 has not been detected.
  1. (Third) 0x00 - Camera Module has been detected.
  • 0x01 - Camera Module has not been detected.
  1. (Fourth) 0x00 - Power supply voltage is nominal.
  • 0x05 - The OBC is undervoltage and the power supply should be verified.

If the TM's values are not nominal OBSW will repeat the test every 5 seconds.
OBC can proceed to the running phase or main code.

Running phase

In the phase of running the main code all CubeSat components should work according to the parameters.

By requesting the OBC to run the main code OBSW.py nominal TMs should appear in GCM's Interface.
As discussed in the SDCard chapter before the CubeSat leaves the range of the GCM the OBSW will send a warning message that it will soon disconnect and the data will be written locally.

That's the final state for the CubeSat before the flight.

TMTC Format

A nominal TM should have the following format:

  • [TimeStamp, Voltage, Temperature, Load, AccX, AccY, AccZ, GyroX, GyroY, GyroZ, Altitude, Pressure]

TM's params should have the following values:

  1. TimeStamp [seconds] float (Eg. 1.00) and represent the relative time.
  2. Voltage float (Eg. 1.2) and represent the core voltage.
  3. Temperature[degrees] float (Eg. 57.01) and represent the OBC's temperature.
  4. Load [%] integer (Eg. 5%) and represent the OBC's load.
  5. Acceleration{X,Y,Z}[m/s^2] float (Eg. 10.32) and represent the acceleration on each axis.
  6. Gyro{X,Y,Z}[deg/s] float (Eg. 11.01) and represent the rotation on each axis.
  7. Altitude[meters] integer (Eg. 1100) and represent the altitude of the CubeSat.
  8. Pressure[hPa] float (Eg. 1013.89) and represent the pressure applied to the CubeSat.

One TM is sent every 5 seconds.
Keep in mind that TMTC will only be available for a period of time until the CubeSat moves out of range of the GCM.

SDCard

Cubesat will have a Raspberry Pi Camera Module 2 connected and the record will be stored on the SD Card.
Because the RFM allows communication over a relatively short distance with the GCM the flight parameters will be stored on the OBC's internal SD Card.
The OBSW will notify the approaching maximum range and detect the loss of GCM connection, and the data will be passed in .txt format.

Acronyms

  • OBSW - OnBoard Software
  • UI - User Interface
  • OBC - OnBoard Computer
  • TMTC - Telemetry/Telecommand
  • GCM - Ground Communication Module
  • RFM - Radio Frequency Module

About me

Parts

7
QtyValueFootprintReferences
4MountingHoleMountingHole:MountingHole_2.7mmH1, H2, H3, H4
1Conn_01x07_PinConnector_PinHeader_2.54mm:PinHeader_1x07_P2.54mm_HorizontalJ8
1Conn_02x04_Odd_EvenConnector_PinHeader_2.54mm:PinHeader_2x04_P2.54mm_VerticalJ2
1LOGOLogo:LogoG***

Questions

How big is the CubeSAT PCB?

It measures 64.8 × 56 mm and has 2 copper layers, 1.6 mm thick.

What parts does the CubeSAT use?

7 parts. 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 CubeSAT KiCad files?

From the CristeaTeodorAndrei/CubeSat repository on GitHub, at the commit this page was made from: the board is CubeSat_HW/CubeSAT/CubeSAT.kicad_pcb and its schematic CubeSat_HW/CubeSAT/CubeSAT.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the CubeSAT 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 CristeaTeodorAndrei/CubeSat

2
  • 2 layers64.7 × 56 mmPower, the printed circuit board in 3D

    Power

    CristeaTeodorAndrei/CubeSat

    Core code for Cubesat

    19 partsMIT
  • 2 layers64.8 × 56 mmCubeSAT Experiments, the printed circuit board in 3D

    CubeSAT Experiments

    CristeaTeodorAndrei/CubeSat

    Core code for Cubesat

    14 partsMIT

Similar boards

  • 2 layersEncoder, the printed circuit board in 3D

    Encoder

    byrantech/laptop

    anyon_e, a highly integrated, high end, open source laptop. Attempt the impossible.

    7 parts4.3kMIT
  • 2 layers40 × 20 mmSensor smd, the printed circuit board in 3D

    Sensor smd

    scottbez1/splitflap

    DIY split-flap display

    7 parts4.2k
  • 2 layers19.8 × 30 mmZ limit, the printed circuit board in 3D

    Z limit

    opulo-inc/lumenpnp

    The LumenPnP is an open source pick and place machine.

    7 parts3.7k
  • 2 layers35.6 × 58.2 mmDisplay Carrier, the printed circuit board in 3D

    Display Carrier

    AxxAxx/AxxSolder

    STM32 Based soldering station for JBC cartridges, 9-24 VDC and USB-PD power

    7 parts1.7kGPL-3.0
  • 2 layers20.3 × 16.3 mmMap MPX, the printed circuit board in 3D

    Map MPX

    rusefi/rusefi

    rusefi - GPL internal combustion engine control unit

    7 parts1.2k
  • 2 layers26 × 44 mmCompact carrier board, the printed circuit board in 3D

    Compact carrier board

    jamro/tiny-engineer

    A small desktop robot that brings an AI coding assistant to life, physically acting out when it reads files, thinks, writes code, and finishes work.

    7 parts1.1k
  • 2 layers26.4 × 53.8 mmAtari pickup, the printed circuit board in 3D

    Atari pickup

    hoglet67/RGBtoHDMI

    Bare-metal Raspberry Pi project that provides pixel-perfect sampling of Retro Computer RGB/YUV video and conversion to HDMI

    7 parts1kGPL-3.0
  • 2 layersRj45 breakout, the printed circuit board in 3D

    Rj45 breakout

    rene-dev/stmbl

    AC Servo Driver for STM32F4

    7 parts990GPL-3.0