Ogma

- A Modular Flight Computer for High-Powered Rocketry

Description

Ogma is the modular flight computer I lead for the University of Limerick's high-powered rocketry team. It is built for a student rocket targeting roughly 9km altitude.

It's split across five four-layer PCBs connected over CAN: Croí handles flight state, sensors, and logging; Teachtaire does LoRa and GNSS; Foinse handles power; Lámh drives the airbrakes; Pléasc handles recovery deployment. A separate groundstation receives telemetry on the ground.

The stack is designed to slide into a rail mount system in the avionics bay.

Progress

I designed the architecture and lead a team of five. I specced the common power, CAN, and board interfaces, ran KiCad onboarding sessions, and held routing sessions where we laid out boards together at a projector. I also handled the BOM, Gerber review, and manufacturing. Ogma's Rev 1 PCBs were generously sponsored through EasyEDA Education, with Domenico (Dom) Qin arranging the support, and manufactured by JLCPCB.

I hand-stencilled the solder paste and placed every component for Rev 1, then spent a long time hand-bodging the assembled boards into working hardware. We currently have two Croí, two Foinse, and two Teachtaire boards complete; one Lámh and one Pléasc are nearly complete, pending the correct optocouplers. It worked, but the time cost was totally unreasonable. Rev 2 will be ordered as fully assembled PCBAs.

Rev 1 worked, but debugging it exposed avoidable problems. Croí needed SWD signal damping, SPI bodges, and a repaired power path. Foinse had a dead battery-ORing path that was hidden by an alternate power input covering for it. On Lámh, a broken RTOS tick integration showed that a servo can report successful I2C writes while still receiving no power or PWM at all downstream. On Teachtaire, the fitted radio module, UART handling, and packet format had all drifted from the docs.

We wrote bare peripheral probes and a Python console that identifies, flashes, and diagnoses each board over SWD. Croí can stream live status over SRAM, retrieve append-only flash logs, and plot them locally. The stack now shares pinned CAN contracts, and actuator and recovery commands use explicit leases and defined safe states.

On 15 August 2026, Croí, Foinse, Lámh and Teachtaire flew together in an L1 rocket, with Mu beside them as a separate payload. The stack returned live groundstation telemetry and a valid onboard flight log. The flight record and full report are below.

Documentation

Repos: Croí, Teachtaire, Foinse, Lámh, Pléasc, Groundstation.

Reddit reviews: initial review, Rev 1.2 final review.

self flagellating component placing is my pasttime

Rev 1 flight, 15 August 2026

Ogma flew as a four-board stack: Croí, Foinse, Lámh and Teachtaire. Pléasc stayed on the ground because its optocouplers and full bring-up were not finished. The stack reached READY, obtained a GPS fix, streamed live data through the flight and wrote Croí's onboard flash log.

Croí detected liftoff, burnout and apogee. It measured a peak Kalman altitude of 778.55m and commanded the attached servo to 45° from T+2.126s until T+5.072s. The groundstation captured 18,986 decoded CAN frames over 828 seconds. The longest packet gap around the flight was 0.736s, and we kept the LoRa link through launch and recovery.

Croí reset 14.976 seconds after liftoff, while Mu still measured roughly 696m relative altitude. A 26.68g and 1,670°/s event appeared 1.042 seconds before the reset. It may be related, but the cause is unknown. Croí recalibrated and later returned to READY over LoRa. MAIN and LANDED were never reached in the recovered onboard run.

The onboard log proves the 45° and stow commands. Servo current rose to 386mA, 204mA and 265mA during that window. There was no position sensor, so the data cannot prove the shaft angle or mechanical travel.

Ogma Rev 1 closes here. Rev 2 has to address the aloft reset, field-bypassed battery connector, hand-bodged boards, loose SWD leads and uncommitted flight source. The full report includes both plotbooks and the requirements for the next stack.

Final fit. The four Ogma boards and Mu arranged inside the printed nosecone rail before the drive north.
Final assembly. Joining and taping the two rocket sections together on the rail.
Launch. The flight record begins at Croí's POWERED transition.
Groundstation. The receiver kept feeding Ogma Console while the rocket was out of sight.
Recovery. I came back holding both sections and laughing. The data survived too.

Croí - Flight computer

Croí flight computer 3D board render Croí flight computer PCB layout Croí flight computer schematic

Teachtaire - Telemetry and GNSS

Teachtaire telemetry and GNSS 3D board render Teachtaire telemetry and GNSS PCB layout Teachtaire telemetry and GNSS schematic

Foinse - Power

Foinse power board 3D render Foinse power board PCB layout Foinse power board schematic

Lámh - Airbrakes

Lámh airbrake controller 3D board render Lámh airbrake controller PCB layout Lámh airbrake controller schematic

Pléasc - Recovery

Pléasc recovery controller 3D board render Pléasc recovery controller PCB layout Pléasc recovery controller schematic