Portfolio – Green HOrnet – Cinewhoop 2.5″ esp32-s3 fpv drone

Project intro

This drone represents a major milestone in my builds: it’s the first one flying on a custom PCB I designed myself.

The PCB is the key breakthrough compared to my earlier drones. It simplifies assembly, saves space, and makes the frame less bulky. The layout also allows the IMU to be positioned more symmetrically and mounted softly, minimizing vibrations and delivering far more precise measurements.

I also upgraded the IMU itself — moving from the MPU6050 to the BMI270, which provides better accuracy and lower noise. On top of that, I added new features such as RX lost-signal detection, so if the receiver connection drops, the drone automatically enters a safe mode.

Another big step forward is in wireless communication. The previous setup sometimes glitched, but now I’ve streamlined everything with raw TCP communication, ensuring faster, safer, and crash-free links between the drone and ground control. This is the result of careful work done to refine TCP handling, making the connection stable even under demanding conditions.

All these improvements come together in a drone that’s easier to build, cleaner in design, and more reliable in flight — a leap forward in both performance and user-friendliness.

Key Concepts

Below are the new key concepts introduced with this drone. For foundational drone concepts like stabilization, gyroscope, accelerometer, and barometer functionality, I recommend reviewing the previous projects in my portfolio.

PCB Design – After taking a course in Udemy on how to use KiCad (see Studies section) I ventured in my first PCB design project. Soldering was quite challenging but with a few trials and a hot plate i managed to get it right and the board works perfectly.

Telemetry Capabilities – Earlier builds used Wi-Fi and Telnet, which were slow and often crashed when sending data. This drone moves to a binary telemetry system over raw TCP sockets. Flight data is stored in a fixed-size ring buffer during flight and safely dumped once the drone disarms, ensuring nothing is lost. Each packet is framed with a clear header and length information, so the ground tool always knows where data starts and ends. Packets are also CRC-checked to detect corruption and version-tagged with record size, so even if the firmware changes in the future, the logs can still be correctly decoded. Combined with OTA updates and an automatic SoftAP fallback, this creates a fast, robust, and crash-free pipeline for telemetry, logging, and real-time commands.

Magnetometer and GPS – While the hardware was present, both modules were disabled in this build. EMI from the motors disrupted the magnetometer when mounted on the PCB, and GPS placement between the battery and PCB made reception too weak. These features were shelved for now and will be reintroduced in the next generation with improved layout solutions.

Components

  • Cinewhoop 2.5” frame
  • BMI270 IMU
  • MS5611 Barometer
  • ESP32 S3 Zero as flight controller
  • 4-in-1 ESC Blheli-S
  • Camera and VTX
  • 4 Brushless Motors
  • Active Buzzer
  • IBUS Receiver

Sources:

The code can be downloaded here.

For the KiCad schematics and PCB design click here.

For the first code to upload via USB to enable OTA click here.

For ESP32 S3 pins overview guidelines click here – we can use freely all the white pins.