Dragonfly : Rocket Controller
A flight controller for rockets
Created by
Notdragon 24
Tier 2
11 views
0 followers
Notdragon 24
submitted Dragonfly : Rocket Controller for review ago
Kai the Jolly Guy 🚀
requested changes for Dragonfly : Rocket Controller ago
Hey there, nice flight controller, but the boards themselves are pretty expensive! Make sure you're BOM optimizing and aren't using over the top components for a hobby board. Could you also just add a screenshot breakdown of all your component costs for your board, and also add a screenshot of all the possible shipping options just so we know it's the cheapest! If you need any help, feel free to ask in #blueprint ;)
Notdragon 24
submitted Dragonfly : Rocket Controller for review ago
Notdragon 24
added to the journal ago
Routing Finalization and Trace Validation
I have completed 99% of the routing for the flight controller PCB. All major signal paths, power rails, and data buses are now connected. The focus has shifted from making connections to optimizing the layout for signal integrity and manufacturing reliability. The board is nearly ready for the final Design Rule Check (DRC) and generation of fabrication files.
Current Status
Signal Routing: High-speed data lines, including SPI for the sensors and SDIO for the SD card, are routed with short, direct paths to minimize latency and noise.
Power Distribution: The 5V and 3.3V power rails are fully routed using wider traces to ensure stable voltage delivery to the STM32 and peripheral components.
Footprint Compliance: Verified that all 0201 and 0402 passives are correctly connected to their pads, maintaining the clearances required for automated PCBA.

Notdragon 24
added to the journal ago
PCB Layout
I have finalized the physical placement of all components on the PCB. The board is now organized logically, with clear separation between the power delivery and the high-speed data sections. With the footprints correctly assigned and the passives grouped, I am moving into the routing phase to establish the electrical connections
Current Status
Component Placement: All integrated circuits (ICs), connectors, and passive components are locked into their final positions on the board.


Notdragon 24
added to the journal ago
PCB Organization
I have completed the transition from the schematic to the PCB Editor. All footprints are confirmed, and the initial layout of the passive components is complete. By focusing on component grouping, I have ensured the board remains as compact as possible while following the guide's specific hardware requirements.
Footprint Selection: All resistors below 80k are assigned the 0201 footprint to support the PCBA (automated assembly) process.
High-Value Resistors: Resistors 100k and above are assigned the 0402 footprint for better stability.
Capacitor Sizing: Decoupling and small caps are set to 0402, while large power filter capacitors (10µF+) use 0805 footprints.
Thermal Pad Integration: The Exposed Pad (Pin 25/EP) on the main chips is connected directly to the GND net.



Notdragon 24
added to the journal ago
Firmware
Instead of using the STM32CubeMX software, I decided to write the firmware logic manually. This saves a lot of disk space and keeps the project folder a bit more manageable while I focus on the core flight functions.
Pin Mapping: I manually assigned the pins based on my schematic. I’m using PA5-PA7 for the IMU (SPI1) and PB8-PB9 for the Barometer/Charger (I2C1). Doing this manually helps me stay familiar with where everything is connected on the chip.
Flight State Machine: I built a logic loop that tracks the rocket's status. It starts at "Pad" and moves to "Boost" when it detects a high G-force. Once that force drops, it switches to "Coast" to prepare for the peak of the flight.
Apogee Detection: This is the most important part. I wrote a function that constantly updates the maximum altitude reached. If the current altitude drops about 2 meters below that peak, the code triggers the parachute servo.
Data Logging: I integrated the FatFS library logic so the controller can write all the sensor data to a .csv file on the SD card during flight.

What’s next: With the schematics and the core code logic finished, the next big step is the PCB Layout. I'll be moving into KiCad's PCB editor to start placing the components and routing the copper traces.
Notdragon 24
added to the journal ago
Completed Schematics
Wrapped up the entire hardware schematic today. Everything from the power delivery to the sensors and the "brain" (the STM32 chip) is now connected on paper.
The STM32F722RET6: I finally brought in the big chip. It’s got a ton of pins, so I spent most of my time making sure the power pins had their decoupling capacitors and that the crystal oscillator was set up right so the chip can actually "tick."

Final Connections: I finished the wiring for the servos (for the rocket fins) and the buzzer/LEDs so I can actually get some feedback from the rocket when it’s sitting on the pad.

Labeling: I went through and double-checked all my Net Labels. It’s way cleaner than having a thousand lines crossing each other. Now, as long as the labels match, KiCad knows they’re connected.
What’s next: Tomorrow is the big STM32CubeMX day. I’ll be taking all these pins I just labeled and assigning them in the software so the chip knows that, for example, Pin A5 is supposed to talk to the Barometer. Once that’s done, I can finally move on to the PCB layout and start actually placing components!
Notdragon 24
added to the journal ago
Adding the Senses and Memory
Spent some time getting the sensors and the microSD card slot wired up. This is the part where the board actually starts acting like a flight controller instead of just a power bank.
BMP580 (The Barometer): I set this up to handle altitude data. I went with the I2C connection since it’s the standard for this chip. Since it’s sharing the same "bus" (the communication line) as the battery charger I did earlier, I didn't even need to add extra pull-up resistors—the ones from before handle the job.

ICM-45686 (The IMU): This is the sensor that tracks how the rocket is moving and rotating. I decided to switch things up and use SPI for this one instead of I2C. SPI is way faster, which is great for getting smooth, high-speed motion data when the rocket is mid-flight.

MicroSD Slot: This was the most tedious part because of the resistors. Every single pin on the SD card (except for power and ground) needs a 10K pull-up resistor to work right. I set it up for SDIO mode so I can save data much faster than a standard connection.

What’s next: Now that everything is ready, it's time to bring in the "brain"—the STM32 microcontroller. I’ll be using STM32CubeMX to figure out which pins on the chip connect to all these parts I’ve just finished.
Notdragon 24
added to the journal ago
Stepping down the power
Finished up the regulator circuits. Since the battery puts out about 7.4V and the USB gives 5V, I needed a way to get a steady 5V for the servos and a clean 3.3V for the "brain" (the STM32) and the sensors.
The 5V Line (TPS63070): I set up the TPS63070 as a "buck-boost" regulator. This is cool because even if the battery voltage starts to sag, it’ll keep the output at a solid 5V so the servos don't twitch or lose power. I went with the "fixed" version of the circuit because it uses fewer parts and is already set to 5V.

The 3.3V Line (LMR51430): For the main system power, I used the LMR51430. This is a "buck" regulator that drops the voltage down to 3.3V.

Switching Frequency: I had to choose between a fast (1.1 MHz) or a slow (500 kHz) switching speed for the 3.3V line. I went with 500 kHz. It makes the circuit a little bit bigger, but it's way more efficient, stays cooler, and most importantly, creates less electrical noise. Since I'm going to be reading sensitive sensor data later, "less noise" is definitely the move.
What’s next: Power is officially done. Now I’m moving on to the fun stuff: wiring up the sensors (BMP580 barometer and ICM-45686 IMU) and the MicroSD slot so I can actually log flight data.
Notdragon 24
added to the journal ago
Power Systems & USB Interface
Got the main power circuits sorted out in the schematic. This basically covers how the rocket gets its "juice" whether it's sitting on my desk or on the launch pad.
USB-C Port: Finished the USB-C section. It’s mostly there so I can plug it into my computer to program the brain (the STM32) and get some power while I'm testing. I added those 5.1K resistors on the CC pins so the power source actually knows to send 5V.

Battery Charger: Set up the circuit for the BQ25883 chip. This is what’s going to handle charging the 2-cell LiPo battery. I followed the "cheat sheet" (reference schematic) in the datasheet to make sure I didn't mess up the resistor values for the charging limits.

Cleaning up the noise: I made sure to keep the "dirty" power ground (where the heavy charging happens) separate from the "clean" ground the sensors use. It’s a bit of a pain to track two different grounds, but it keeps the data from getting jumpy later.
What’s next: Now that I have 5V coming in, I need to step it down. Next step is wiring up the two regulators—one to keep a steady 5V for the servos and another to drop it to 3.3V for the sensors and the microcontroller.
Notdragon 24
started Dragonfly : Rocket Controller ago
1/4/2026 7 PM - Power Systems & USB Interface
Got the main power circuits sorted out in the schematic. This basically covers how the rocket gets its "juice" whether it's sitting on my desk or on the launch pad.
USB-C Port: Finished the USB-C section. It’s mostly there so I can plug it into my computer to program the brain (the STM32) and get some power while I'm testing. I added those 5.1K resistors on the CC pins so the power source actually knows to send 5V.

Battery Charger: Set up the circuit for the BQ25883 chip. This is what’s going to handle charging the 2-cell LiPo battery. I followed the "cheat sheet" (reference schematic) in the datasheet to make sure I didn't mess up the resistor values for the charging limits.

Cleaning up the noise: I made sure to keep the "dirty" power ground (where the heavy charging happens) separate from the "clean" ground the sensors use. It’s a bit of a pain to track two different grounds, but it keeps the data from getting jumpy later.
What’s next: Now that I have 5V coming in, I need to step it down. Next step is wiring up the two regulators—one to keep a steady 5V for the servos and another to drop it to 3.3V for the sensors and the microcontroller.
1/4/2026 8 PM - Stepping down the power
Finished up the regulator circuits. Since the battery puts out about 7.4V and the USB gives 5V, I needed a way to get a steady 5V for the servos and a clean 3.3V for the "brain" (the STM32) and the sensors.
The 5V Line (TPS63070): I set up the TPS63070 as a "buck-boost" regulator. This is cool because even if the battery voltage starts to sag, it’ll keep the output at a solid 5V so the servos don't twitch or lose power. I went with the "fixed" version of the circuit because it uses fewer parts and is already set to 5V.

The 3.3V Line (LMR51430): For the main system power, I used the LMR51430. This is a "buck" regulator that drops the voltage down to 3.3V.

Switching Frequency: I had to choose between a fast (1.1 MHz) or a slow (500 kHz) switching speed for the 3.3V line. I went with 500 kHz. It makes the circuit a little bit bigger, but it's way more efficient, stays cooler, and most importantly, creates less electrical noise. Since I'm going to be reading sensitive sensor data later, "less noise" is definitely the move.
What’s next: Power is officially done. Now I’m moving on to the fun stuff: wiring up the sensors (BMP580 barometer and ICM-45686 IMU) and the MicroSD slot so I can actually log flight data.
1/5/2026 7 PM - Adding the Senses and Memory
Spent some time getting the sensors and the microSD card slot wired up. This is the part where the board actually starts acting like a flight controller instead of just a power bank.
BMP580 (The Barometer): I set this up to handle altitude data. I went with the I2C connection since it’s the standard for this chip. Since it’s sharing the same "bus" (the communication line) as the battery charger I did earlier, I didn't even need to add extra pull-up resistors—the ones from before handle the job.

ICM-45686 (The IMU): This is the sensor that tracks how the rocket is moving and rotating. I decided to switch things up and use SPI for this one instead of I2C. SPI is way faster, which is great for getting smooth, high-speed motion data when the rocket is mid-flight.

MicroSD Slot: This was the most tedious part because of the resistors. Every single pin on the SD card (except for power and ground) needs a 10K pull-up resistor to work right. I set it up for SDIO mode so I can save data much faster than a standard connection.

What’s next: Now that everything is ready, it's time to bring in the "brain"—the STM32 microcontroller. I’ll be using STM32CubeMX to figure out which pins on the chip connect to all these parts I’ve just finished.
1/5/2026 8 PM - Completed Schematics
Wrapped up the entire hardware schematic today. Everything from the power delivery to the sensors and the "brain" (the STM32 chip) is now connected on paper.
The STM32F722RET6: I finally brought in the big chip. It’s got a ton of pins, so I spent most of my time making sure the power pins had their decoupling capacitors and that the crystal oscillator was set up right so the chip can actually "tick."

Final Connections: I finished the wiring for the servos (for the rocket fins) and the buzzer/LEDs so I can actually get some feedback from the rocket when it’s sitting on the pad.

Labeling: I went through and double-checked all my Net Labels. It’s way cleaner than having a thousand lines crossing each other. Now, as long as the labels match, KiCad knows they’re connected.
What’s next: Tomorrow is the big STM32CubeMX day. I’ll be taking all these pins I just labeled and assigning them in the software so the chip knows that, for example, Pin A5 is supposed to talk to the Barometer. Once that’s done, I can finally move on to the PCB layout and start actually placing components!
1/7/2026 6 PM - Firmware
Instead of using the STM32CubeMX software, I decided to write the firmware logic manually. This saves a lot of disk space and keeps the project folder a bit more manageable while I focus on the core flight functions.
Pin Mapping: I manually assigned the pins based on my schematic. I’m using PA5-PA7 for the IMU (SPI1) and PB8-PB9 for the Barometer/Charger (I2C1). Doing this manually helps me stay familiar with where everything is connected on the chip.
Flight State Machine: I built a logic loop that tracks the rocket's status. It starts at "Pad" and moves to "Boost" when it detects a high G-force. Once that force drops, it switches to "Coast" to prepare for the peak of the flight.
Apogee Detection: This is the most important part. I wrote a function that constantly updates the maximum altitude reached. If the current altitude drops about 2 meters below that peak, the code triggers the parachute servo.
Data Logging: I integrated the FatFS library logic so the controller can write all the sensor data to a .csv file on the SD card during flight.

What’s next: With the schematics and the core code logic finished, the next big step is the PCB Layout. I'll be moving into KiCad's PCB editor to start placing the components and routing the copper traces.
1/7/2026 8 PM - PCB Organization
I have completed the transition from the schematic to the PCB Editor. All footprints are confirmed, and the initial layout of the passive components is complete. By focusing on component grouping, I have ensured the board remains as compact as possible while following the guide's specific hardware requirements.
Footprint Selection: All resistors below 80k are assigned the 0201 footprint to support the PCBA (automated assembly) process.
High-Value Resistors: Resistors 100k and above are assigned the 0402 footprint for better stability.
Capacitor Sizing: Decoupling and small caps are set to 0402, while large power filter capacitors (10µF+) use 0805 footprints.
Thermal Pad Integration: The Exposed Pad (Pin 25/EP) on the main chips is connected directly to the GND net.



1/8/2026 7 PM - PCB Layout
I have finalized the physical placement of all components on the PCB. The board is now organized logically, with clear separation between the power delivery and the high-speed data sections. With the footprints correctly assigned and the passives grouped, I am moving into the routing phase to establish the electrical connections
Current Status
Component Placement: All integrated circuits (ICs), connectors, and passive components are locked into their final positions on the board.


1/8/2026 9 PM - Routing Finalization and Trace Validation
I have completed 99% of the routing for the flight controller PCB. All major signal paths, power rails, and data buses are now connected. The focus has shifted from making connections to optimizing the layout for signal integrity and manufacturing reliability. The board is nearly ready for the final Design Rule Check (DRC) and generation of fabrication files.
Current Status
Signal Routing: High-speed data lines, including SPI for the sensors and SDIO for the SD card, are routed with short, direct paths to minimize latency and noise.
Power Distribution: The 5V and 3.3V power rails are fully routed using wider traces to ensure stable voltage delivery to the STM32 and peripheral components.
Footprint Compliance: Verified that all 0201 and 0402 passives are correctly connected to their pads, maintaining the clearances required for automated PCBA.
