LiteWing - ESP32 Based Programmable Drone


Introduction

LiteWing is a compact, WiFi-controlled drone based on the ESP32-S3 microcontroller. Designed for hobbyists, makers, and engineers, LiteWing offers a simple yet powerful platform for drone experimentation and development. It is an open-hardware project, making it easy to modify and expand. Whether you're new to drones or an experienced developer looking to create custom flight applications, LiteWing provides an accessible and affordable way to explore drone technology. Unlike traditional drones that require proprietary controllers, LiteWing connects to your smartphone, allowing for an intuitive flying experience without additional hardware.


The latest version includes more GPIO pins, sensor mounts, onboard buttons, and LED indicators to make it easier to tinker with and program. The PCB frame design keeps it lightweight while reducing costs, making it one of the most affordable DIY drones available. With open-source firmware (based on Crazyflie), LiteWing can be easily customised for advanced functionalities like height-hold and position-hold. Whether you want to fly it out of the box or modify it with additional sensors, LiteWing is built for creativity and experimentation.

Specifications

Here are some of the key specifications of LiteWing.

LiteWing Image with Specs and Modules

Specification

Microcontroller ESP32-S3 (Dual-core Xtensa LX7, 240 MHz, 512 KB SRAM)
IMU Sensor MPU6050 (3-Axis Gyroscope + 3-Axis Accelerometer)
Optional Sensors
  • VL53l1x ToF Senor for Height Hold
  • MS5611 Barometric Pressure Sensor for Altitude hold
  • PMW3901 Optical Flow Sensor for Position Hold
Motor Type 720 Coreless DC Motors
Propeller Size 55mm or 65mm
Battery 3.7V 1S LiPo Battery 20C or higher
Charging Circuit TP4056 Li-ion Charging IC (1A Max)
Voltage Regulator SPX3819, 500mA, Low Noise LDO
Communication WiFi 2.4GHz
Communication Protocol CRTP over UDP
Programming Interface USB Type-C (CH340 USB to UART bridge)
Motor Control MOSFET-based PWM Speed Control
Frame Material Custom PCB Frame
Expansion Port
  • 24Pin GPIO Breakouts for Additional Sensors
  • SMD Solder pads for Popular sensors on the PCB bottom
LED Indicators
  • Power Indicator
  • Charging Indicator
  • Full Charge Indicator
  • System Status Indicator Indicator
  • Link Status Indicator
  • Error Indicator
Audio Connector for optional Passive buzzer for audio indications
Weight ~45g (without battery)
Payload Capacity ~25g with 55mm propeller
Dimensions 100mm x 100mm
Mobile App Android & iOS (WiFi-based control)
PC Control CFClient Support and Custom Python SDK Support
Open-Source Yes (Based on Crazyflie firmware, customisable)

Basic Hardware Overview

The LiteWing drone is powered by the ESP32-S3, a highly efficient microcontroller that offers low power consumption and an increased number of GPIO pins for enhanced expandability. It is powered by a dual-core XTensa LX7 core, capable of running at 240 MHz, accompanied by 512 KB of internal SRAM and integrated 2.4 GHz, 802.11 b/g/n Wi-Fi and Bluetooth 5 (LE) connectivity.

ESP32-S3 Module Closeup

 Its improved computational efficiency ensures better flight stabilisation and allows seamless future firmware upgrades. The built-in USB interface simplifies programming, debugging, and firmware updates, making it easier for developers to enhance drone capabilities over time.

MPU6050 for Flight Control

MPU6050 Close Up of LiteWing

For precise flight stability, the LiteWing features an MPU6050 IMU, which provides accurate motion tracking and stabilisation. 

Programming Interface

Close up ch340 2n7002DW area of LiteWing

The LiteWing can be easily programmed through the onboard USB type-C connector without the need for any external programmers or debuggers, thanks to the onboard USB - UART bridge controller and auto reset circuitry. Even though the ESP32-S3 features an integrated USB peripheral, we opted for an external USB to UART bridge so that the debugging process would be a bit easier. The auto-reset circuitry ensures that there is no need for manual button presses during the firmware flashing.

Drone PCB Closeup and Starp Hole of Lite Wing

Designed for minimalist efficiency, the LiteWing drone incorporates an all-in-one PCB frame, eliminating the need for additional structural components. This design choice not only reduces the overall cost but also enhances durability and simplifies assembly. The frame includes hook & loop battery strap slots, allowing for easy mounting and removal of the battery, ensuring a hassle-free user experience.

Power Management

tp4056, ldo and USB connector of LiteWing

LiteWing features a simple but efficient power management circuit. The built-in TP4056 battery charger ensures that the battery is charged properly when the LiteWing is plugged in. It can charge the battery with a maximum current of up to 1A. Depending on the battery we use we can change the charging current by replacing the programming resistor, if needed. In order to power the LiteWing from the 1S LiPo battery we have used an ultra-low-noise LDO, the SPX3819. It provides the 3.3V for the ESP32-SoC, IMU and other essential components. Then we have the power path control circuit built around a P Channel Mosfet and a Schottky diode, which ensures that we can power the LiteWing directly from the USB port during programming and testing without the need to attach the battery.

Motor Drivers

LiteWing Motor Driver Closeup Shots

The LiteWing employs PWM-based motor control, ensuring smooth acceleration and manoeuvrability with precision. The motor driver circuit is built around an N-channel MOSFET along with a flyback diode and a pull-down resistor. The minimal component count and the simplicity of the circuit make this design not just cost-effective but also easier to control.

Status & Debugging Indicators

LEDS on LiteWing

LiteWing features an intuitive LED status system for real-time feedback. It includes battery charging indicators to indicate the battery charging status, a power indicator to show LiteWing’s on/off state, a System LED to show the system status and a Link status LED to indicate the connection status. Additionally, a red LED serves as an error indicator, showing a low battery warning and any other system errors.

Indicator Function
PWR Power Indicator. It is on when LiteWing is turned on.
CHRG Charging Indicator. It is on when the battery is charging.
FULL Full Charge Indicator. It is on when the battery is fully charged.
SYS System Status. Slow flash indicating sensor calibration. Normal flash when ready to fly.
ERR Error Indicator. Turn it on when the battery is low.
Link Link Status Indicator. Flashes when connected to the App.

Optional Audible Header

Audio Connector

LiteWing also features an option for audio indications. For that, we have provided a 1.25mm pith JST connector near the ESP32-S3 SoC, which can be directly connected to a small passive piezo buzzer for audible indications.

Easy Assembly & Affordable

Unassembled Lite Wing with Mechanical Parts

The LiteWing drone is designed for quick and simple assembly, requiring minimal soldering. Unlike many DIY drones, it does not require 3D-printed parts, as all essential components are integrated into the PCB itself. By using affordable components, LiteWing stands out as one of the most cost-effective DIY drones available, making it an excellent choice for beginners, hobbyists, and educators looking for an easy-to-build and highly functional drone.

WiFi-Based Smart Control

LiteWing Wireless Communication with app, cfclient, and Python Code

LiteWing removes the need for an external transmitter by integrating WiFi-based smart control. The drone can be operated via a dedicated mobile app available for both Android and iOS devices. The app supports a virtual joystick, allowing users to control movement, speed, and flight modes effortlessly. This WiFi-based approach reduces cost and complexity, making it an ideal choice for hobbyists and developers. It can also be controlled from any PC using the CFclient or the custom Python SDK we provide.

Expansion Pins 

Pinout Diagram of LiteWing

With extra GPIO breakout pins, the LiteWing is designed for expandability, allowing users to integrate additional sensors such as Time-of-Flight (ToF), Barometer, and Optical Flow sensor for enhanced flight capabilities. The open-source firmware encourages community-driven modifications and customisations. Furthermore, expansion ports enable the seamless integration of additional modules, ensuring the drone remains adaptable to evolving needs.

Expansion Pin Function
IO15 ESP32-S3 GPIO15
IO16 ESP32-S3 GPIO16
IO17 ESP32-S3 GPIO17
IO18 ESP32-S3 GPIO18
IO19 ESP32-S3 GPIO19
IO20 ESP32-S3 GPIO20
 
IO1 ESP32-S3 GPIO1
TX UART0 TX Pin. Connected to TXD0
RX UART0 RX Pin. Connected to RXD0
IO48 ESP32-S3 GPIO15
SCL1 Auxiliary I2C Clock Pin. Used for VL53L1X ToF sensor. Connected to GPIO41.
SDA1 Auxiliary I2C DataPin. Used for VL53L1X ToF sensor. Connected to GPIO40.
 
SCL I2C0 Clock Pin. Used for MPU6050. Connected to GPIO10.
SDA I2C0 Data Pin. Used for MPU6050. Connected to GPIO11.
IO13 ESP32-S3 GPIO13
3V3 3.3V Output
GND Ground Connection
VBUS Vbus Connection
 
IO39 Buzzer +. ESP32-S3 GPIO39
IO38 Buzzer -. ESP32-S3 GPIO38
MISO SPI MISO. Used for PMW3901 Optical Flow Sensor. Connected to GPIO37
CLK SPI CLK. Used for PMW3901 Optical Flow Sensor. Connected to GPIO36
MOSI SPI MOSI. Used for PMW3901 Optical Flow Sensor. Connected to GPIO35
CS SPI CS. Used for PMW3901 Optical Flow Sensor. Connected to GPIO42

Important Silkscreen Labeling Correction: In the first revision of this product, there is incorrect silkscreen labeling for some IO pins. Please take note of the following corrections: 
IO48 is incorrectly marked as IO42. 
CS/IO42 is incorrectly marked as IO47. 

How to Identify the Correct Pins? 

Refer to the image provided in this manual for the correct pin labelling. When using these IO pins, please follow the actual functionality as described in the pinout diagram rather than the incorrect silkscreen markings. This issue has been corrected in the latest revision, but if you are using an older version, please be aware of this discrepancy. 

Optional Modules for Assisted Flight Control

Optional Modules for Assisted Flight Control

In addition to the existing features,  the firmware is designed with future updates in mind, enabling features such as position hold and altitude hold, making it a versatile platform for various applications. At the moment, the height hold functionality has been tested and is working. Other module supports will be added to the firmware soon. One important thing is that assisted flight control is currently supported only with CFclient and the custom Python SDK. 

Getting Started with LiteWing

LiteWing's Propellers

When you order LiteWing, you will get a fully assembled LiteWing along with two sets of propellers(4 CW and 4 CCW). To use the LiteWing, you have to fix the four propellers to the correct motors. For that, take two CW propellers(Marked with A) and two CCW propellers(Marked with B). The remaining four propellers are provided so that you can replace them if any of them are damaged.

Propeller Blade of LiteWing

The position where the propellers are installed is very important. To make this procedure easier, we have already marked them on the PCB. On the top side near the motors, you can notice the corresponding letter and direction of rotation are marked.

Marked PCB Showing Propeller Rotation and Letters on LiteWing

Fix the correct propellers to the corresponding position using these markings. You can also use the below image not only for assembling the propellers but also to confirm their direction of rotation during testing.
 

Direction and Propeller Marking

The next thing you will need to do to start flying the LiteWing is the LiPo Battery. Refer to the below section to learn more about selecting the right battery for LiteWing.

Development and Programming

The LiteWing drone firmware is built using ESP-IDF, the official development framework by Espressif for ESP32-series microcontrollers. ESP-IDF provides a set of libraries, drivers, and tools essential for embedded development, making it an ideal choice for building IoT and real-time applications. It includes built-in support for Wi-Fi, Bluetooth, and FreeRTOS, allowing seamless multitasking and wireless communication. The framework also offers debugging, performance monitoring, and power management tools to optimize firmware execution. The LiteWing firmware is based on ESP-Drone, an open-source flight control firmware specifically designed for ESP32-powered drones. ESP-Drone integrates flight control algorithms from the Crazyflie open-source project, providing a solid foundation for simple autonomous and manual flight control. The firmware consists of multiple components, including a flight control core, hardware drivers, and dependency libraries. The flight control core manages key functionalities such as sensor data processing, stabilization, motor control, and PID-based adjustments for stable flight.

The hardware drivers handle communication with onboard peripherals such as gyroscopes, accelerometers, barometers, magnetometers, and motor controllers. These drivers are organized by interface types like I2C, SPI, and UART, making it easy to add or modify hardware components. The firmware also includes communication modules that enable telemetry, remote control, and data logging using Wi-Fi or external radio modules. In addition to core flight control and hardware management, the LiteWing firmware incorporates various software libraries, including default ESP-IDF components and third-party DSP libraries. These libraries provide additional functionalities such as signal filtering, sensor fusion, and real-time data processing. 

To know more about the coding environment and firmware flashing process check out the next section.

Hardware Design and Files

The hardware design for LiteWing, including the schematics and gerber file is made open-source for people to try and experiment. This section discusses the hardware design with schematics and also provides GitHub link and interactive BoM for you to download and build your own LiteWing. Please note all designs are under CC license, you are free to build, modify and share. 

PCB of LiteWing

Circuit Diagram Explanation

For better understanding, let’s discuss the schematics section by section. A type C USB port is used for both charging as well as programming purposes. The pull-down resistor on the CCx lines ensures that the LiteWing can be charged or programmed from any standard USB A or USB-C port. The power from the USB port is connected to a power path controller circuit built around a P-Channel MOSFET U1 and a Schottky diode D1. When USB power is available, the device will be powered from the USB and will also charge the internal battery. When USB power is not present, the device will automatically change to battery power. For voltage regulation, we have used a SPX3819 3.3V LDO from Maxlinear, which is capable of providing up to 500mA of current with a very low dropout voltage of 550mV, even at full load.

Schematics of USB Input ,Power Control and 3.3V LDO

To charge the internal battery, we use the classic TP4056 charge controller IC, which is capable of a maximum charge current of 1A. The charge current can be changed by changing the value of the current programming resistor R5. The TP4056 also has two charge status indicator outputs, one for charging and the other for charge completion. Both of these outputs were connected to LED indicators for visual feedback. It also features a battery temperature monitoring option, but we haven’t used this feature with our circuit.

Schematics of  Battery Charger

For battery voltage sensing we have used a classic voltage divider, which will reduce the battery voltage to a safe level for measurement. The output from the voltage divider is then connected to an ADC input of the ESP32, which will continuously monitor the battery voltage levels. To turn on/off the LiteWing, we are using a small slide switch. The slide switch with a pullup resistor is connected to the enable pin of SPX3819. When this pin is pulled to the ground, the LDO will be shut down and hence the other parts of the device too, except the battery charging section.

Schematics of Battery Monitoring and on/off Switch

Next we have the programming circuit. Even though the ESP32-S3 has native USB support, we have chosen to add an external USB to UART bridge for the firmware flashing. Here we have used the CH340K USB to UART bridge controller from WCH. It features hardware full duplex UART interface, integrated transmit-receive buffer, and supports communication baud rates that vary from 50bps to 2Mbps. It also has an integrated crystal oscillator, which eliminates the need for an external one, and helps to reduce the required board area. For auto reset we opted to use a 2N7002DW, which is a dual N channel MOSFET in a single tiny package. By using this single package we were not only able to reduce the number of components, but also to save precious PCB space.

Schematics-USB-UART-Bridge / Programming Circuit Schematics

In the next section we have the ESP32-S3 module. The as standard we have also included manual reset and boot buttons for easier operation and debugging if needed.  All the connections are labelled and apart from the two strapping and one normal GPIO, all other pins are either used for the LiteWing’s functionality or brought out as expansion ports. You can also see a two-pin connector which can be connected to a small piezo buzzer for audio output. Apart from that, you can also find standard bypass capacitors and pullup resistors required by the ESP32-S3 module.

Schematics ESP32 S3 SoC

The MPU6050 is a crucial component of the LiteWing drone, providing 6-axis motion tracking with an integrated 3-axis gyroscope and 3-axis accelerometer. It helps the drone maintain stability, detect orientation changes, and respond to flight movements in real time. The MPU6050 communicates with the ESP32 via the I2C interface, allowing the flight controller to process raw sensor data and apply sensor fusion algorithms for precise attitude estimation. In the LiteWing firmware, this sensor is integrated within the flight control core, where it works alongside the PID controller to adjust motor speeds based on pitch, roll, and yaw readings. Proper calibration of the MPU6050 is essential to minimise drift and improve flight accuracy, ensuring smooth and stable performance during operation.

MPU6050 IMU Schematics

Next, we have the motor driver circuit, which controls the drone’s motors. Each motor driver consists of an IRLML6344 N-Channel MOSFET, a flyback diode, and a pull-down resistor. There are four identical circuits, one for each motor. When a high signal is applied to the MOSFET’s gate, it turns on, allowing current to flow and powering the motor. PWM (Pulse Width Modulation) signals are used to control the motor speed by varying the duty cycle of the signal. The flyback diode prevents damage from back EMF generated by the motor when switching states, while capacitors help suppress voltage spikes, ensuring stable operation.

Schematics of Motor Driver

Three debugging LEDs are included in addition to the power and charging indicators. Each LED provides visual feedback for different system states. The greeb LED blinks slowly during sensor calibration and switches to fast blinking when the system is ready for takeoff. The blue LED starts blinking when a UDP connection is established with the controller app, indicating successful communication. The red LED serves as a low battery indicator, it remains lit continuously when the battery voltage drops below the safe threshold, alerting the user to recharge or land the drone.

Schematics Status LEDs

Next we have the expansion connectors. We have a set of four expansion connectors, with a total of 24 pins. We have brought out the standard power pins including VBUS, +3.3V and GND along with all the communications and interfacing pins including UART, I2C, Auxiliary I2C and SPI. Apart from that, there are eleven more GPIOs for our use. This expansion connector can be used for future expansion shields or other DIY purposes.

Schematics of Expansion Connector

As we have already mentioned in the specifications, the LiteWing can support height hold, position hold and altitude hold. We have included SMD solder parts on the bottom side of the LiteWing so that the users can easily test these modules when needed. While using these solderpads, users may need to attach the battery on top of LiteWing. These solder pads bring out SPI connections for the PMW3901 optical flow sensor, I2C for MS5611 altitude sensor and Auxiliary I2C for the VL53L1X ToF sensor.

Schematics of Expansion Module

Flight Troubleshooting

  • App Connection Issue.
    • Ensure mobile data is off and Wi-Fi is connected to the drone’s hotspot.
    • If you are using any kind of VPN, turn it off.
    • Some smartphones will automatically switch to a WiFi connection if the connected WiFi network has no internet access. Turn this feature off to stay connected to the LiteWing’s access point.
    • Restart the ESP-Drone APP if the connection fails.
  • Drone Disconnecting or Rebooting During Takeoff.
    • This indicates the battery cannot provide sufficient power.
    • Use a higher discharge rating battery (e.g., 650mAh 30C).
  • The LiteWing is turned on, and the app is connected, but responding to Controls.
    • Check if the LiteWing is properly connected to the app.
    • Check the LED indicators. If the system LED is blinking in a very slow rate, that indicates that the drone is in the calibration state. Place the LiteWing on a flat surface and reset the LiteWing.
    • Don’t forget to place the LiteWing on a flat surface before turning it on. Or reset it manually after placing it on a flat surface.
  • Propellers Spinning Incorrectly or Drone Not Taking Off Properly.
    • Verify the motor rotation directions and propeller installation. Use the markings on the PCB to verify the placement of the rotors before installation.

Correct Incorrect Propeller Placement

The LiteWing’s PCB is designed to integrate all essential components into a compact space, ensuring efficient power distribution, minimal signal interference, and compact placement of components to optimise performance.

For those interested in building the LiteWing from scratch, we are providing the Gerber files needed for PCB fabrication. These files include all the essential details such as copper traces, drill holes, solder mask, and silkscreen layers, allowing you to get the PCB manufactured by any standard fabrication service.  These files can be used with any standard PCB fabrication service to produce the LiteWing drone’s circuit board.