Status: design phase, ongoing (slowly). This is the first step of my avionics roadmap. Its successor is a model rocket flight computer.
Goal
Design, manufacture and bring up my own PCB that records motion (IMU) and altitude (barometer) data to onboard memory, then analyse the data in Python. This board becomes the base for the model rocket flight computer, the next project on my roadmap.
What I’m learning
- Schematic capture and PCB layout in KiCad
- Designing around an STM32 microcontroller: power, clock, programming, decoupling
- Sensor interfaces: SPI, I²C, UART
- Board bring-up and hardware debugging
- Embedded firmware: timers, interrupts, DMA, buffering, flash storage
- Data analysis in Python
Requirements
| Requirement | Target |
|---|---|
| IMU sample rate | 1 kHz |
| Barometer sample rate | 50–100 Hz |
| Logging duration | several minutes at full rate |
| Power | 1S LiPo + USB-C charging |
| Data offload | USB (virtual COM port) |
| Size | fits a model rocket body tube (aim ≤ 25 × 50 mm in rev B) |
| Mass | as low as practical |
| Expansion | spare UART + I²C headers (GPS, radio later) |
Rev A is deliberately generous: a bigger board with test points everywhere, extra LEDs and jumpers. I’ll shrink it in rev B once everything works.
Candidate parts
| Function | Candidates | Why |
|---|---|---|
| Microcontroller | STM32F411 (main pick), STM32F405, STM32G431 | The F4 family is widely used in flight controllers, has USB, and is well documented |
| IMU | BMI088 or ICM-42688-P | The BMI088 is known for vibration robustness. The ICM-42688-P is common in modern drone flight controllers |
| Barometer | BMP390 or MS5611 | Both are proven in rocketry and drones |
| Storage | W25Q128 (16 MB SPI NOR) | Survives vibration better than an SD card socket |
| Charger | MCP73831 | A simple, well-documented single-cell LiPo charger |
| Regulator | Low-noise 3.3 V LDO | Keeps the sensor supply clean, and is simpler and quieter than a switcher |
| Debug | SWD header | Programmed with an ST-Link |
| Indicators | LEDs + piezo buzzer | A buzzer is the only status you get when the board is inside a rocket |
Parts are checked against the PCB assembly house’s stock before the schematic is finalised.