Skip to the content
2 layers30 × 85.5 mmMain Deck Longitudinal v0.1, the printed circuit board in 3D

Main Deck Longitudinal v0.1

dgtaheno/RocketOS2

ESP32 flight computer with MAVLink telemetry, QGroundControl integration, GPS, BMP388 altimetry, INA219 power monitoring and fault-tolerant SD logging

Size
30 × 85.5 mm
Copper layers
2
Thickness
1.6 mm
Parts
11
Nets
55
Pads
100
Tracks, vias
285, 0
Pours
5
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
4 Jul 2026
Updated
11 Oct 2026

Overview

Main Deck Longitudinal v0.1 is an open-source printed circuit board by dgtaheno, from the dgtaheno/RocketOS repository on GitHub, published under the MIT licence. It is a 2-layer board of 30 × 85.5 mm with 11 parts on 55 nets, routed with 285 tracks and 0 vias.

It is built around the NEO-M9N-00B, BMP388 and S8050. Its parts include 6 connectors, 2 resistors, 2 ICs and 1 transistor. It belongs with the sensors and measurement and radio and wireless boards and the ESP32 boards of this library.

Main components

3

README

README.md

RocketOS

Open-source ESP32-S3 flight computer, telemetry, data-logging and validation platform for experimental model rockets.

Project Banner

Platform GPS Barometer LoRa Power MAVLink Tests Status Language PlatformIO


Project Status

RocketOS is currently at the Mk1 prototype integration stage.

The project has progressed from an ESP32 DevKitC development prototype to an ESP32-S3 N16R8 Mk1 architecture with two longitudinal prototype PCBs:

  • Main Deck v0.1 — 30 × 85.5 mm
  • Power Deck v0.1 — 30 × 85.5 mm

Both PCB designs have been released for prototype fabrication.

The current ESP32-S3 firmware builds successfully and the native regression suite passes 9/9 tests.

The Mk1 electrical configuration is now being reproduced and validated on the bench before physical PCB bring-up.

Bench validation has confirmed simultaneous shared-I2C operation of:

  • INA219 at 0x40.
  • GY-87 MPU-6050 at 0x68.
  • External BMP388 at 0x76.
  • GY-87 BMP180 at 0x77.

The external BMP388 address was changed from its default 0x77 to 0x76 to resolve the address collision with the BMP180 present on the GY-87.

The fabricated Mk1 PCBs have not yet been physically brought up or flight validated.


What RocketOS Does

RocketOS currently provides:

  • Barometric altitude measurement.
  • GPS position, altitude, speed and time.
  • Autonomous flight-state detection.
  • MicroSD flight logging.
  • Buffered recovery from temporary SD write failures.
  • Battery monitoring.
  • Runtime system-health monitoring.
  • Audible flight and system events.
  • MAVLink telemetry over USB Serial.
  • Flight-profile replay testing.
  • Native automated regression tests.
  • Serial replay on physical ESP32 hardware.

The target Mk1 ecosystem additionally includes:

  • LoRa telemetry.
  • GY-87 inertial sensing.
  • Recovery actuation.
  • Dedicated RocketOS Ground Station.
  • Post-flight Flight Analyzer.

These target functions are not all implemented yet.


Mk1 Hardware

Main Deck v0.1

The Main Deck is based on the ESP32-S3 N16R8 and provides interfaces for:

ComponentModelFunction
MicrocontrollerESP32-S3 N16R8Flight computer
GNSSu-blox NEO-M9NPosition, altitude, speed and UTC
BarometerBMP388 at I2C 0x76Pressure, temperature and altitude
StorageMicroSDFlight-data logging
IMU moduleGY-87Future inertial sensing
RadioAi-Thinker Ra-02 / SX1278Future LoRa telemetry
Audible feedbackActive buzzerStatus and recovery beacon

The external BMP388 is fixed at I2C address 0x76 by tying SDO to GND. This avoids the 0x77 address used by the BMP180 present on the Mk1 GY-87 module.

The already-released Main Deck v0.1 fabrication package predates this correction and leaves BMP388 SDO unconnected. Fabricated v0.1 boards therefore require an SDO-to-GND rework during assembly. The current KiCad source includes the corrected connection.

Main Deck envelope:

text
30 × 85.5 mm
Main Deck module references
ESP32-S3 N16R8BMP388NEO-M9N
ESP32-S3BMP388NEO-M9N
MicroSDGY-87Ra-02 / SX1278
MicroSDGY-87Ra-02
Active buzzer
Active buzzer

Power Deck v0.1

The Power Deck provides:

  • XT30 battery input.
  • 2 A resettable protection fuse.
  • Main power switching.
  • INA219 voltage/current monitoring.
  • MP1584 regulation.
  • 5 V output to the Main Deck.
  • INA219 I2C connection to the Main Deck.
  • Bulk and local decoupling.

Power Deck envelope:

text
30 × 85.5 mm
Power Deck module references
INA219MP1584
INA219MP1584

Battery

Current Mk1 development battery:

text
Tattu 2S 550 mAh LiPo
7.4 V nominal
8.4 V maximum

Tattu 2S 550 mAh LiPo

The battery is mechanically retained independently of the PCBs.

Mk1 Schematics

The current Mk1 electrical architecture is split between two longitudinal PCBs.

Main Deck v0.1

Main Deck v0.1 schematic

Power Deck v0.1

Power Deck v0.1 schematic

The schematic SVGs are exported from the current KiCad source.

Earlier flighttelemetry-v*.png schematics are retained in docs/schematics/ for historical traceability and do not represent the current Mk1 architecture.


Mk1 Architecture

text
                     2S LiPo
                        |
                        v
              +-------------------+
              |    Power Deck     |
              |                   |
              | PPTC Protection   |
              | Main Switch       |
              | INA219            |
              | MP1584            |
              +---------+---------+
                        |
               +5V / I2C / GND
                        |
                        v
              +-------------------+
              |     Main Deck     |
              |                   |
              | ESP32-S3 N16R8    |
              | BMP388 @ 0x76     |
              | NEO-M9N           |
              | MicroSD           |
              | GY-87             |
              | Ra-02 / SX1278    |

The two PCBs are designed for longitudinal installation in a mechanical sled.

The final sled geometry remains under development.


Mk1 GPIO Baseline

FunctionESP32-S3 GPIO
GPS RX17
GPS TX18
I2C SDA8
I2C SCL9
SPI MOSI11
SPI MISO13
SPI SCK12
MicroSD CS5
LoRa NSS10
LoRa RESET14
LoRa DIO015
Buzzer control21

MicroSD and LoRa share the SPI bus and use independent chip-select signals.

Integrated MicroSD + LoRa operation still requires bench validation.

DS18B20 support remains in the firmware but is disabled in the current Mk1 configuration.


Mk1 I2C Baseline

The Mk1 shared I2C bus has been bench validated with the current module set:

DeviceAddressStatus
INA2190x40Detected
GY-87 MPU-60500x68Detected and identified
External BMP3880x76Detected and flight-firmware validated
GY-87 BMP1800x77Detected and identified

The external BMP388 uses SDO tied to GND to select address 0x76.

This establishes electrical coexistence on the shared bus. GY-87 sensor acquisition is not yet integrated into the flight firmware.


Flight-State Detection

RocketOS implements the following flight-state sequence:

text
IDLE -> BOOST -> COAST -> APOGEE -> DESCENT -> LANDED

Detection currently uses BMP388 barometric altitude and derived climb rate.

This provides flight-event detection, not recovery deployment control.

Recovery actuation remains planned.


Logging

RocketOS currently supports:

  • Automatic CSV log creation.
  • GPS timestamp filenames when GPS time is available.
  • Boot-number filename fallback.
  • Flight and sensor data recording.
  • SD startup self-test.
  • Runtime SD failure detection.
  • 100-record RAM FIFO.
  • Ordered recovery after temporary SD failures.
  • Runtime event logging.

Onboard logging operates independently from the telemetry transport.


Telemetry

MAVLink

MAVLink telemetry is currently implemented over USB Serial.

Implemented messages include:

MessagePurpose
HEARTBEATVehicle presence and link status
SYS_STATUSSystem and battery status
GPS_RAW_INTGNSS position and fix
GLOBAL_POSITION_INTPosition and relative altitude
GLOBAL_POSITION_INT_COVPosition with covariance
VFR_HUDSpeed, altitude and climb rate
BATTERY_STATUSBattery voltage, current and SOC
HOME_POSITIONHome reference
STATUSTEXTSystem and flight events

LoRa

Mk1 radio hardware:

text
Ai-Thinker Ra-02
SX1278-class

The radio interface is present in the Main Deck v0.1 hardware design.

LoRa transport is not yet implemented in the flight firmware.


Flight Profile Replay Testing

RocketOS supports data-driven testing using altitude-vs-time flight profiles.

text
CSV flight profile
        |
        v
FlightStateMachine
        |
        v
Detected flight sequence
        |
        v
Expected result validation

Current profiles:

ProfileExpected ApogeePurpose
estes_c6253.9 mNominal flight
midpower_machdip904.4 mBarometric Mach-dip rejection
low_apogee71.5 mLow-altitude flight

Current native regression result:

text
9 test cases
9 succeeded

The suite contains:

  • 3 flight-profile tests.
  • 6 flight-state-machine tests.

Run it with:

bash
cd firmware/flight-computer
pio test -e native

If PlatformIO is not available globally on Windows, the project development environment can be invoked directly:

powershell
& "$env:USERPROFILE\.platformio\penv\Scripts\pio.exe" test -d "firmware\flight-computer" -e native

ESP32-S3 Firmware

The Mk1 firmware contains an ESP32-S3 N16R8 PlatformIO target.

Build with:

powershell
& "$env:USERPROFILE\.platformio\penv\Scripts\pio.exe" run -d "firmware\flight-computer" -e esp32s3_n16r8

Current validation:

text
Build: SUCCESS
Tests: 9 / 9 passed

Physical hardware identification of the current development module confirmed:

text
ESP32-S3
240 MHz
16 MB flash
~8 MiB PSRAM

Build success does not establish complete Mk1 hardware validation.


Battery Monitoring

The Mk1 BatteryMonitor uses a 2S LiPo baseline:

VoltageEstimated SOC
8.40 V100%
8.20 V90%
8.00 V80%
7.80 V70%
7.60 V60%
7.40 V50%
7.20 V40% / Warning
7.00 V25%
6.80 V10% / Critical
6.60 V0%

Below 5.0 V is treated as battery disconnected.

Bench validation on the historical development configuration demonstrated:

  • USB-powered, LiPo disconnected: approximately 4.10–4.13 V → DISCONNECTED.
  • 2S LiPo connected: approximately 7.72–7.90 V → CONNECTED / OK.

This validates the BatteryMonitor behavior.

It does not validate the complete Mk1 Power Deck.


Current Validation Boundary

Validated

  • Core flight firmware.
  • ESP32-S3 firmware compilation.
  • Physical ESP32-S3 N16R8 module identification.
  • Native regression suite: 9/9.
  • Flight-state-machine behavior.
  • Flight-profile replay.
  • Historical physical ESP32 replay.
  • 2S BatteryMonitor behavior.
  • Main Deck v0.1 PCB design release.
  • Power Deck v0.1 PCB design release.
  • Mk1 BMP388 on GPIO8/GPIO9 I2C bus.
  • Mk1 MicroSD on GPIO11/GPIO12/GPIO13 with GPIO5 CS.
  • Mk1 NEO-M9N on GPIO17/GPIO18.
  • Shared-I2C electrical coexistence of INA219, MPU-6050, BMP388 and BMP180.
  • BMP388 address correction to 0x76.
  • BMP388 + MicroSD + GPS simultaneous flight-firmware startup.
  • MicroSD flight-log creation.
  • GPS fix acquisition on the Mk1 bench configuration.

Pending

  • Buzzer circuit bench validation.
  • Ra-02 bench validation.
  • Shared MicroSD + Ra-02 SPI operation.
  • Complete Power Deck topology bench validation.
  • Main Deck physical PCB bring-up.
  • Power Deck physical PCB bring-up.
  • GY-87 firmware integration.
  • LoRa radio communication.
  • Complete integrated Mk1 bench validation.
  • Mechanical sled validation.
  • Recovery actuation.
  • Real-flight validation.

RocketOS Mk1 is therefore a prototype under integration, not a flight-qualified system.


Prototype PCB Status

Main Deck v0.1 and Power Deck v0.1 have been released for prototype fabrication.

Manufacturing baseline:

text
PCB:        FR4
Layers:     2
Size:       30 × 85.5 mm
Thickness:  1.6 mm
Copper:     1 oz
Finish:     Lead-free HASL
Mask:       Green
Silkscreen: White

Prototype order:

text
5 × Main Deck v0.1
5 × Power Deck v0.1

The exact manufacturing packages are retained in the repository.

The released Main Deck v0.1 fabrication package leaves BMP388 SDO unconnected. The five fabricated Main Deck v0.1 boards therefore require an SDO-to-GND rework when the BMP388 is installed.

The current KiCad source contains the corrected SDO-to-GND connection.

The released v0.1 fabrication package remains unchanged to preserve exact as-built traceability.

Fabrication release does not imply electrical or flight validation.


Repository Structure

text
RocketOS/
|
+-- docs/
|   +-- Baseline/
|   +-- images/
|   +-- schematics/
|
+-- firmware/
|   +-- flight-computer/
|   +-- hardware-id-test/
|
+-- hardware/
|   +-- Mk1/
|       +-- Main_Deck_Longitudinal_v0.1/
|       +-- Power_Deck_Longitudinal/
|       +-- superseded/
|
+-- README.md

The authoritative project baseline is maintained under:

text
docs/Baseline/

Key documents:

  • RocketOS_Master_Context.md
  • RocketOS_Architecture.md
  • RocketOS_System_Requirements.md
  • RocketOS_Project_History.md

Repository code, repeatable validation evidence and released hardware artifacts take precedence when determining implementation status.


Development Principles

RocketOS prioritizes:

  1. Reliability over unnecessary complexity.
  2. Commercial modules before unnecessary custom hardware.
  3. Validation before optimization.
  4. Modularity.
  5. Maintainability.
  6. Field repairability.
  7. Cost awareness.
  8. Proven solutions over experimental complexity.

The project intentionally distinguishes between:

text
IMPLEMENTED
DESIGN RELEASED
BENCH VALIDATED
PHYSICALLY INTEGRATED
FLIGHT VALIDATED

These states are not interchangeable.


Next Milestones

The immediate development sequence is:

text
1. Validate buzzer transistor circuit
2. Validate Ra-02
3. Validate shared MicroSD + Ra-02 SPI bus
4. Validate complete Power Deck topology on the bench
5. Receive and inspect prototype PCBs
6. Bring up fabricated Power Deck
7. Bring up fabricated Main Deck, including BMP388 SDO-to-GND rework
8. Develop and validate longitudinal mechanical sled
9. Integrate GY-87 firmware acquisition
10. Integrate LoRa telemetry firmware
11. Complete integrated Mk1 bench validation
12. Real-flight validation

License

MIT License

Parts

11
QtyValueFootprintReferences
11 KohmResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR1
110 KohmResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR2
1Active Buzzer(5V)Buzzer_Beeper:Buzzer_12x9.5RM7.6J7
1Ai-Thinker-Ra-02RocketOS_Mk1:Ra-02_SX1278U1
1BMP388RocketOS_Mk1:BMP388_MODULEJ1
1ESP32-S3_MINI_Nano_N16R8RocketOS_Mk1:ESP32-S3_MINI_Nano_N16R8U2
1GY-87RocketOS_Mk1:GY87J5
1Micro SDRocketOS_Mk1:MicroSDJ3
1NEO-M9NRocketOS_Mk1:NEO_M9N_MODULEJ2
1Power DeckConnector_JST:JST_XH_B5B-XH-A_1x05_P2.50mm_VerticalJ4
1S8050Package_TO_SOT_THT:TO-92_InlineQ1

More from dgtaheno/RocketOS

1
  • 2 layers30 × 85.5 mmPower Deck Longitudinal v0.1, the printed circuit board in 3D

    Power Deck Longitudinal v0.1

    dgtaheno/RocketOS

    ESP32 flight computer with MAVLink telemetry, QGroundControl integration, GPS, BMP388 altimetry, INA219 power monitoring and fault-tolerant SD logging

    8 parts2MIT

Similar boards

  • 6 layers82.5 × 82.5 mmGps, the printed circuit board in 3D

    Gps

    xDocka15/GNSS_geret

    Dokument popisuje zmeny/upravy v elektronike gnss-geret z 2024 tak aby vznikla jednodoskova prenostitelna verzia.

    201 parts
  • 4 layers194.3 × 92.8 mmVcu, the printed circuit board in 3D

    Vcu

    sufst/pcb

    Monorepo for all schematics and PCB designs

    212 parts19GPL-3.0
  • 2 layers50.8 × 22.9 mmFeather NEO M9N GPS, the printed circuit board in 3D

    Feather NEO M9N GPS

    averywallis/Feather-NEO-M9N-GPS

    KiCad files for a NEO-M9N GPS Featherwing

    61 parts6GPL-3.0
  • 4 layers60.7 × 61.3 mmPower Unit, the printed circuit board in 3D

    Power Unit

    Project-SkyFall/CanSat-2023

    This is repository for Czech CanSat team Project SkyFall

    162 parts6
  • 4 layers72 × 78.5 mmDashSight Mezzanine Card, the printed circuit board in 3D

    DashSight Mezzanine Card

    DashSight/Pine64-Mezzanine-Card

    A PineA64 mezzanine card for adding support to communicate with a vehicle's OBD2 port, obtain GPS location and determine acceleration, designed in KiCAD

    88 parts3
  • 4 layers61 × 79 mmRP2350 80QFN minimal, the printed circuit board in 3D

    RP2350 80QFN minimal

    Sphyrna-029/Pico-Pilot

    A simple auto pilot for land/water based robots based on the Raspberry Pi rp2350B/2354B

    75 parts3
  • 4 layers42 × 65 mmIcarus Flight Computer, the printed circuit board in 3D

    Icarus Flight Computer

    daedalus-ind/icarus-hardware

    Hardware of the onboard flight computer for the Icarus rocket.

    106 parts2MIT
  • 6 layers90 × 90 mmCansat, the printed circuit board in 3D

    Cansat

    DevKiDCosmo/SATELLITE-EDGE-MODULE

    A satellite edge module ready for competition

    220 parts2GPL-3.0

Questions

How big is the Main Deck Longitudinal v0.1 PCB?

It measures 30 × 85.5 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Main Deck Longitudinal v0.1 use?

11 parts, built around the NEO-M9N-00B, BMP388 and S8050. 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 Main Deck Longitudinal v0.1 KiCad files?

From the dgtaheno/RocketOS repository on GitHub, at the commit this page was made from: the board is hardware/Mk1/Main_Deck_Longitudinal_v0.1/Main_Deck_Longitudinal_v0.1.kicad_pcb and its schematic hardware/Mk1/Main_Deck_Longitudinal_v0.1/Main_Deck_Longitudinal_v0.1.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Main Deck Longitudinal v0.1 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).