Visage
added to the journal ago
Designing the Firmware
The flight controller needs a boss to give it commands. So, I finished designing the basic firmware for the ground station.
Breakdown Of the Firmware
- I wrote a custom protocol that sends a 13-byte package to the FC in the same format as designed in the firmware for the FC.
- Joystick Axis:
Throttle,Yaw,Pitch,Roll - Knobs: Direct Control for Gimbal Pitch and Roll
- Buttons: Sends
CAM UP,CAM DOWN,ARMandDISARMin a bitmask byte.
- Joystick Axis:
- I did not want to complicate things by getting the telemetry back from the drone itself instead, it sends the telemetry to the Raspberry Pi via
UART5. The Raspberry Pi streams this telemetry back along with the video feed.- The ground station itself is set to blind transmission for now.
- Instead of displaying
BATTERY: 3.5Von the OLED, I added some basic maths to map the voltage into a clean percentage based system. Now the OLED displaysBATTERY: 78%. - Although the UI for the OLED is pretty basic, it displays:
- Battery percentage on the top.
- Drone arm status:
ARMED/DISARMEDin the middle. - Raw stick values:
Throttle:,Roll:andPitch:on the bottom.
This wraps up the firmware part, although I might modify this as I progress.
Visage
added to the journal ago
Redesigned the Ground Station
Note:
I decided to split the Flight Controller from the entire drone build and have uploaded it as a separate project, or perhaps a sub-project. Thus, I won't be posting the progress on the Flight Controller here anymore, but it can be viewed here.
Issues:
Since I decided to split the FC as a standalone project, I had to redesign my ground station to support it.
- I did not add a way to see the remaining battery level on the ground station.
Fix:
- Since
GPIO 21andGPIO22are the dedicated I2C pins on the ESP32 Dev Board, I had to adjust the existing connections. - I moved two of the four buttons on the ground station to
GPIO 16andGPIO17respectively to vacate pins for the OLED display.- I had no idea
RX2andTX2were GPIO pins, due to which I had to brainstorm my way through the datasheets. O_o
- I had no idea
- OLED
SCLandSDApins are now connected toGPIO 21andGPIO22respectively. - Added two resistors to get the battery voltage at
GPIO25.
This is how the schematic looks like now:
I have also changed the functionality of two buttons to "Arm" and "Disarm" the drone.
- The ground station will initially start in "Disarmed" Mode.
- The drone will not respond to any commands from the ground station.
- The motors will not spin even if the battery is connected.
This is more of a safety mechanism than a feature. I wouldn't want the drone to shave off my head while I'm plugging in the battery :skull:.
- When the "Arm" button is pressed, the drone starts taking commands from the ground station via the receiver.
- If the "Disarm" button is pressed when the drone is flying, the drone will not disarm instantly. The drone will only disarm mid-flight if the "Disarm" button is pressed twice.
- Why? - To prevent accidental button presses.
PCB Layout and On-Board Documentation
I revised the placement and routing of all the components to make the layout as clean and polished as possible.
- Added a header for the OLED display instead of a footprint for the OLED, as there would be a gap between the PCB and the display itself. Also to accommodate any future changes in the display.
- Added On-Board documentation so I don't have to look back at my schematics again and again while wiring everything up.
Personal Touch
-
Added a small artwork on the top layer referencing beatbox (Yes, I like beatbox)

-
Added a little name for the Ground Station I'm making.

Why Pulse? - It references Pulse Width Modulation that drives the motors and also the beat from beatbox theme.
Overall Look
Visage
added to the journal ago
Finalising PCB Schematics and Layout
Had to make a lot of changes to the initial schematics as well as additions.
Issue #1
Starting off with the ground station, after designing the entire layout and routing it, while cross verifying everything, I stumbled upon the LDO issue. In my previous schematic, the LDO on the DevBoard was handling everything: the inputs, radio, USB, and the ESP Chip as well. It wasn't an issue until I realised the radio link alone would pull approximately 580 mA, and the LDO on the DevBoard (AMS1117) would just heat up and shut down mid flight.
So, I added a separate LDO for the Radio.
This LDO would step down the 5V coming from the MT3608 to clean 3.3V that would only be used by the Radio module.
Result
- Reduced heat on the DevBoard
- No abrupt shut downs
Ground station PCB Layout
Issue #2
In my previous schematics for the drone, although I designed it to support a 6S 25.2V Li-Ion battery structure, I did not account for the change in the buck converter. The TPS563200 is designed to support only a 4S battery structure. And I also forgot to include a connector for the Raspberry Pi module.
So, I redesigned the entire power module to support not just 25.2V but up to 40V by changing the buck converter to LMR14030SDDAR
Result
- Now has a connector to connect the Raspberry Pi module.
- Has a robust buck converter supporting up to 40V battery structure.
Drone PCB Layout
Initially, I struggled a lot with the layout as I couldn't fit everything on a board this small. It was then I researched about multi-layer PCBs and decided to go with a 4-layer one. I had little to no experience with multi-layer PCBs so it took me quite a while to figure out how this works.
-
All connectors and the Power module are on the top layer.

The idea was, everything that I may need to interact with should be on the top, and everything that I don't need to interact with goes on the bottom layer. -
The MCU, sensors, and motor drivers are on the bottom layer

Layers 2 and 3 have little to no routing on them, which provides a great heat sink to the PCB.
The Power module being on the top layer keeps all the noise away from the motor drivers, ensuring smooth functioning for the gimbal.
Visage
added to the journal ago
Drone Schematics
Finished the schematics for the drone part. This includes the flight controller and the motor drivers for the gimbal motors. Tried to make the schematic as clean as I possibly can, learning from my last project.
Summary
- It is designed to support a high voltage 6S 25.2V Li-ion power structure with
TPS563200as the Buck Converter to get clean 5V, andAMS1117-3.3as the LDO to get clean 3V3 without losing much power. - Uses
ICM-42688-Pas the IMU andBMP280as the barometer to feed gyroscopic and altitudinal data toSTM32F405RGT6 - Includes a USB-C port for firmware flashing
- Uses a dedicated UART port for the ELRS receiver
- Instead of having another separate board for the gimbal motor drivers,
DRV8313are integrated on the FC itself and uses capacitors to filter out any noise. - I decided to use a pre-built 4-in-1 ESC, as the cost of getting one designed is surprisingly more than getting a finished unit.
Initially, I had planned to include an ON/OFF switch on the drone as well, but the motors draw approximately 100 Amps when starting up or when given full throttle, which would burn the switch. Instead, I'll just physically unplug the battery when it's not in use.
Visage
added to the journal ago
Ground Station Schematics
I have completed the ground station schematics; honestly, it didn't take that long this time, except for the radio linking part. I got confused between the datasheets for 2 different versions of the chip.
So far, the schematic looks something like this:
I have decided to complete the schematics for the drone part as well before I move on to the PCB layouts, as it will be easier for me to make changes if I have to.
Summary of the Schematic
- I have used a standard USB-C Port with
TP4056for charging, along with 2 connectors for LED(s) which I'll mount on the controller panel to show the charging status. - An ON/OFF switch (Yeah, I actually added it this time)
-
MT3608for boosting the 3.7V to 5V and feeding it into the ESP32 Board (Which will then be stepped down to 3.3V for the rest of the systems) -
E28-2G4M27Sfor the radio link which connects to the ESP32 Board - 2x
5 Pin connectorsfor the joystick which will control the drone flight-
Left Joystickcontrols Throttle and Yaw movement -
Right Joystickcontrols Pitch and Roll movement - I won't be using the switch that comes with the joystick.
-
- 2x
3 Pin connectorsfor the knobs which will control the gimbal arms - 4x
2 Pin connectorsfor the buttons (For now, I have thought of assigning quick camera movement to them, but I'll probably change the functionality later)
Changes to Initial Plan
- I decided to upgrade the battery to increase the flight time - Now I'll be using a 6S LiPo battery
Why? - I did some digging and decided I can use a 6S LiPo battery but limit the motor's output to 66%, which would make the drone perform exactly like when it would be connected to a 4S battery, which would increase the flight time significantly and reduce heating potential. I'll use a Synchronous Buck Converter instead of Linear regulators to provide 5V to the Raspberry Pi, which saves approximately 15% power, giving another bump to the flight time.
Visage
added to the journal ago
Research and Components
Learning from my last project, this time I did the research according to the parts available in the JLCPCB library, so I don't have to just rip out an entire block from my schematics again.
Why a Drone?
I have always wanted to make a drone myself; the high school resources were never enough to actually do this. But the program extension just gave me the time and resources I needed.
Initial Plan
I plan to include the following:
- A fully functional camera with a 2-axis gimbal for stabilisation.
- A dedicated ground station which includes, but is not limited to:
- USB-C Charging
- Mount for the phone
- Gimbal arm controls
- Modes
Components
Unlike the last time when I had to make changes several times mid-way through finishing my project, this time I have chosen the components that are available.
Ground Station (Remote Control)
- MCU: ESP32 Dev Board (Why? - Reduces cost and includes the basic circuitry that I otherwise would have to build)
- Radio Link: LoRa 2.4Ghz with an antenna
- Display: I scratched the idea of a dedicated display; instead, I'll mount my phone as the display.
-
Controls:
- 2x Joysticks (Flight Control)
- 4x Switches (To switch modes)
- 2x Knobs or Potentiometers (Adjust gimbal arms)
-
Battery/Power:
- 18650 Li-ion cell
- TP4056 + USB-C Receptacle (For charging)
- MT3608 (Why? - To boost 3.7V to 5V because the ESP32 dev board has its own regulator to step 5V down to 3.3V but can't step down 3.7V to 3.3V)
- ON/OFF Switch (Yeah, I'm writing it down this time O_O)
Drone
- MCU: STM32F405RGT6
- Sensors: ICM-42688-P (Gyro and Acceleration) & BMP280 (Barometer)
- Motors: 4x Readytosky 2207
- ESC: 4-in-1 or dedicated (Not decided yet, depends on availability)
- Propellers: HQProp Ethix S5 (Might change)
- Radio Receiver: Happymodel EP1
-
Video System:
- Computer: Raspberry Pi Zero 2 W
- Camera: Raspberry Pi Camera Module v2
- Flexible Ribbon Cable (For Connecting the Camera module to the computer)
- External 5V 3A UBEC (For stable power)
-
Battery/Power:
- Battery: 4S 14.8V 1500mAh 100C (Might Change)
- Charger: Haven't figured this one out yet
Gimbal
- Drivers: 2x DRV8313 (Integrated on the FC)
- Motors: 2805 140KV Gimbal BLDC
Why did I not use a transmitter and receiver for the video system?
Currently, in India, it is not possible to source receivers and transmitters for drone gear due to an import ban. I did think of creating my own, but again, the components needed are not available in India. So, I resorted to Raspberry Pi. Raspberry Pi, being a whole computer in itself, unlocks a lot of future enhancements like object tracking, infinite range.

Visage
started Cypher - 2 Axis Rhythm Rig ago
1/23/2026 - Research and Components
Learning from my last project, this time I did the research according to the parts available in the JLCPCB library, so I don't have to just rip out an entire block from my schematics again.
Why a Drone?
I have always wanted to make a drone myself; the high school resources were never enough to actually do this. But the program extension just gave me the time and resources I needed.
Initial Plan
I plan to include the following:
- A fully functional camera with a 2-axis gimbal for stabilisation.
- A dedicated ground station which includes, but is not limited to:
- USB-C Charging
- Mount for the phone
- Gimbal arm controls
- Modes
Components
Unlike the last time when I had to make changes several times mid-way through finishing my project, this time I have chosen the components that are available.
Ground Station (Remote Control)
- MCU: ESP32 Dev Board (Why? - Reduces cost and includes the basic circuitry that I otherwise would have to build)
- Radio Link: LoRa 2.4Ghz with an antenna
- Display: I scratched the idea of a dedicated display; instead, I'll mount my phone as the display.
-
Controls:
- 2x Joysticks (Flight Control)
- 4x Switches (To switch modes)
- 2x Knobs or Potentiometers (Adjust gimbal arms)
-
Battery/Power:
- 18650 Li-ion cell
- TP4056 + USB-C Receptacle (For charging)
- MT3608 (Why? - To boost 3.7V to 5V because the ESP32 dev board has its own regulator to step 5V down to 3.3V but can't step down 3.7V to 3.3V)
- ON/OFF Switch (Yeah, I'm writing it down this time O_O)
Drone
- MCU: STM32F405RGT6
- Sensors: ICM-42688-P (Gyro and Acceleration) & BMP280 (Barometer)
- Motors: 4x Readytosky 2207
- ESC: 4-in-1 or dedicated (Not decided yet, depends on availability)
- Propellers: HQProp Ethix S5 (Might change)
- Radio Receiver: Happymodel EP1
-
Video System:
- Computer: Raspberry Pi Zero 2 W
- Camera: Raspberry Pi Camera Module v2
- Flexible Ribbon Cable (For Connecting the Camera module to the computer)
- External 5V 3A UBEC (For stable power)
-
Battery/Power:
- Battery: 4S 14.8V 1500mAh 100C (Might Change)
- Charger: Haven't figured this one out yet
Gimbal
- Drivers: 2x DRV8313 (Integrated on the FC)
- Motors: 2805 140KV Gimbal BLDC
Why did I not use a transmitter and receiver for the video system?
Currently, in India, it is not possible to source receivers and transmitters for drone gear due to an import ban. I did think of creating my own, but again, the components needed are not available in India. So, I resorted to Raspberry Pi. Raspberry Pi, being a whole computer in itself, unlocks a lot of future enhancements like object tracking, infinite range.

1/24/2026 - Ground Station Schematics
I have completed the ground station schematics; honestly, it didn't take that long this time, except for the radio linking part. I got confused between the datasheets for 2 different versions of the chip.
So far, the schematic looks something like this:
I have decided to complete the schematics for the drone part as well before I move on to the PCB layouts, as it will be easier for me to make changes if I have to.
Summary of the Schematic
- I have used a standard USB-C Port with
TP4056for charging, along with 2 connectors for LED(s) which I'll mount on the controller panel to show the charging status. - An ON/OFF switch (Yeah, I actually added it this time)
-
MT3608for boosting the 3.7V to 5V and feeding it into the ESP32 Board (Which will then be stepped down to 3.3V for the rest of the systems) -
E28-2G4M27Sfor the radio link which connects to the ESP32 Board - 2x
5 Pin connectorsfor the joystick which will control the drone flight-
Left Joystickcontrols Throttle and Yaw movement -
Right Joystickcontrols Pitch and Roll movement - I won't be using the switch that comes with the joystick.
-
- 2x
3 Pin connectorsfor the knobs which will control the gimbal arms - 4x
2 Pin connectorsfor the buttons (For now, I have thought of assigning quick camera movement to them, but I'll probably change the functionality later)
Changes to Initial Plan
- I decided to upgrade the battery to increase the flight time - Now I'll be using a 6S LiPo battery
Why? - I did some digging and decided I can use a 6S LiPo battery but limit the motor's output to 66%, which would make the drone perform exactly like when it would be connected to a 4S battery, which would increase the flight time significantly and reduce heating potential. I'll use a Synchronous Buck Converter instead of Linear regulators to provide 5V to the Raspberry Pi, which saves approximately 15% power, giving another bump to the flight time.
1/25/2026 - Drone Schematics
Finished the schematics for the drone part. This includes the flight controller and the motor drivers for the gimbal motors. Tried to make the schematic as clean as I possibly can, learning from my last project.
Summary
- It is designed to support a high voltage 6S 25.2V Li-ion power structure with
TPS563200as the Buck Converter to get clean 5V, andAMS1117-3.3as the LDO to get clean 3V3 without losing much power. - Uses
ICM-42688-Pas the IMU andBMP280as the barometer to feed gyroscopic and altitudinal data toSTM32F405RGT6 - Includes a USB-C port for firmware flashing
- Uses a dedicated UART port for the ELRS receiver
- Instead of having another separate board for the gimbal motor drivers,
DRV8313are integrated on the FC itself and uses capacitors to filter out any noise. - I decided to use a pre-built 4-in-1 ESC, as the cost of getting one designed is surprisingly more than getting a finished unit.
Initially, I had planned to include an ON/OFF switch on the drone as well, but the motors draw approximately 100 Amps when starting up or when given full throttle, which would burn the switch. Instead, I'll just physically unplug the battery when it's not in use.
1/28/2026 - Finalising PCB Schematics and Layout
Had to make a lot of changes to the initial schematics as well as additions.
Issue #1
Starting off with the ground station, after designing the entire layout and routing it, while cross verifying everything, I stumbled upon the LDO issue. In my previous schematic, the LDO on the DevBoard was handling everything: the inputs, radio, USB, and the ESP Chip as well. It wasn't an issue until I realised the radio link alone would pull approximately 580 mA, and the LDO on the DevBoard (AMS1117) would just heat up and shut down mid flight.
So, I added a separate LDO for the Radio.
This LDO would step down the 5V coming from the MT3608 to clean 3.3V that would only be used by the Radio module.
Result
- Reduced heat on the DevBoard
- No abrupt shut downs
Ground station PCB Layout
Issue #2
In my previous schematics for the drone, although I designed it to support a 6S 25.2V Li-Ion battery structure, I did not account for the change in the buck converter. The TPS563200 is designed to support only a 4S battery structure. And I also forgot to include a connector for the Raspberry Pi module.
So, I redesigned the entire power module to support not just 25.2V but up to 40V by changing the buck converter to LMR14030SDDAR
Result
- Now has a connector to connect the Raspberry Pi module.
- Has a robust buck converter supporting up to 40V battery structure.
Drone PCB Layout
Initially, I struggled a lot with the layout as I couldn't fit everything on a board this small. It was then I researched about multi-layer PCBs and decided to go with a 4-layer one. I had little to no experience with multi-layer PCBs so it took me quite a while to figure out how this works.
-
All connectors and the Power module are on the top layer.

The idea was, everything that I may need to interact with should be on the top, and everything that I don't need to interact with goes on the bottom layer. -
The MCU, sensors, and motor drivers are on the bottom layer

Layers 2 and 3 have little to no routing on them, which provides a great heat sink to the PCB.
The Power module being on the top layer keeps all the noise away from the motor drivers, ensuring smooth functioning for the gimbal.
2/4/2026 - Redesigned the Ground Station
Note:
I decided to split the Flight Controller from the entire drone build and have uploaded it as a separate project, or perhaps a sub-project. Thus, I won't be posting the progress on the Flight Controller here anymore, but it can be viewed here.
Issues:
Since I decided to split the FC as a standalone project, I had to redesign my ground station to support it.
- I did not add a way to see the remaining battery level on the ground station.
Fix:
- Since
GPIO 21andGPIO22are the dedicated I2C pins on the ESP32 Dev Board, I had to adjust the existing connections. - I moved two of the four buttons on the ground station to
GPIO 16andGPIO17respectively to vacate pins for the OLED display.- I had no idea
RX2andTX2were GPIO pins, due to which I had to brainstorm my way through the datasheets. O_o
- I had no idea
- OLED
SCLandSDApins are now connected toGPIO 21andGPIO22respectively. - Added two resistors to get the battery voltage at
GPIO25.
This is how the schematic looks like now:
I have also changed the functionality of two buttons to "Arm" and "Disarm" the drone.
- The ground station will initially start in "Disarmed" Mode.
- The drone will not respond to any commands from the ground station.
- The motors will not spin even if the battery is connected.
This is more of a safety mechanism than a feature. I wouldn't want the drone to shave off my head while I'm plugging in the battery :skull:.
- When the "Arm" button is pressed, the drone starts taking commands from the ground station via the receiver.
- If the "Disarm" button is pressed when the drone is flying, the drone will not disarm instantly. The drone will only disarm mid-flight if the "Disarm" button is pressed twice.
- Why? - To prevent accidental button presses.
PCB Layout and On-Board Documentation
I revised the placement and routing of all the components to make the layout as clean and polished as possible.
- Added a header for the OLED display instead of a footprint for the OLED, as there would be a gap between the PCB and the display itself. Also to accommodate any future changes in the display.
- Added On-Board documentation so I don't have to look back at my schematics again and again while wiring everything up.
Personal Touch
-
Added a small artwork on the top layer referencing beatbox (Yes, I like beatbox)

-
Added a little name for the Ground Station I'm making.

Why Pulse? - It references Pulse Width Modulation that drives the motors and also the beat from beatbox theme.
Overall Look
2/5/2026 - Designing the Firmware
The flight controller needs a boss to give it commands. So, I finished designing the basic firmware for the ground station.
Breakdown Of the Firmware
- I wrote a custom protocol that sends a 13-byte package to the FC in the same format as designed in the firmware for the FC.
- Joystick Axis:
Throttle,Yaw,Pitch,Roll - Knobs: Direct Control for Gimbal Pitch and Roll
- Buttons: Sends
CAM UP,CAM DOWN,ARMandDISARMin a bitmask byte.
- Joystick Axis:
- I did not want to complicate things by getting the telemetry back from the drone itself instead, it sends the telemetry to the Raspberry Pi via
UART5. The Raspberry Pi streams this telemetry back along with the video feed.- The ground station itself is set to blind transmission for now.
- Instead of displaying
BATTERY: 3.5Von the OLED, I added some basic maths to map the voltage into a clean percentage based system. Now the OLED displaysBATTERY: 78%. - Although the UI for the OLED is pretty basic, it displays:
- Battery percentage on the top.
- Drone arm status:
ARMED/DISARMEDin the middle. - Raw stick values:
Throttle:,Roll:andPitch:on the bottom.
This wraps up the firmware part, although I might modify this as I progress.










