LiteWing - ESP32 Based Programmable Drone for Makers, Developers and Educators


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 firmware on LiteWing supports Crazyflie cfclient and cflib, meaning you can program and control your drone using Python and add more features like height hold, position hold, gesture control, and more.

The latest version includes more GPIO pins, sensor mounts, 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.

Key Features

LiteWing Muilti Platform Development

Feature

Description

Open Hardware Fully open-source design with schematics and Gerber files available
WiFi Control 2.4GHz WiFi connectivity using CRTP over UDP protocol
Mobile App Support Dedicated apps for Android and iOS devices
PC Control Compatible with CFClient and custom Python SDK
Crazyflie Compatible Firmware based on ESP-Drone and Crazyflie,making it compatible with cfclient and the cflib Python library.
Easy Assembly PCB frame design eliminates need for 3D-printed parts
Expandable 24-pin GPIO breakout for additional sensors and modules

Specifications

LiteWing Specs and Modules

 

Core Specifications

Category Specification Details
Microcontroller ESP32-S3 Dual-core Xtensa LX7, 240 MHz, 512 KB SRAM
IMU Sensor MPU6050 3-Axis Gyroscope + 3-Axis Accelerometer
Communication WiFi 2.4GHz CRTP over UDP Protocol
Programming Interface USB Type-C CH340 USB to UART bridge

 

Motor and Propulsion

Component Specification
Motor Type 720 Coreless DC Motors
Propeller Size 55mm or 65mm
Motor Control MOSFET-based PWM Speed Control

Power System

Component Specification
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

Physical Specifications

Parameter Value
Frame Material Custom PCB Frame FR4
Dimensions 100mm x 100mm
Weight ~45g (without battery)
Payload Capacity             ~25g with 55mm propeller

Optional Sensors

Sensor Function
VL53L1x ToF Sensor Height Hold
MS5611 Barometric Pressure Sensor Altitude Hold
PMW3901 Optical Flow Sensor Position Hold

Control Options

Platform

Method

Mobile Android & iOS App (WiFi-based control)
PC CFClient Support and Custom Python SDK

Getting Started with LiteWing

LiteWing Completed

Quick Start Guide

Step

Action

Documentation

1 Select and install battery Battery Selection Guide
2 Assemble drone (DIY kit only) Assembly Instructions
3 Download and flash firmware (if needed) Firmware Guide
4 Download mobile app and connect Mobile Application Flight Guide
5 Calibrate & Start flying Calibration Guide
6 Control LiteWing Drone using Python (Optional) Crazyfile Cflib Python SDK Guide

Hardware Overview

ESP32-S3 Microcontroller

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.

MPU6050 IMU Sensor

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.

Drone PCB Closeup and Strap 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. The frame includes hook & loop battery strap slots for easy mounting and removal of 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.

Power Management

tp4056, ldo and USB connector of LiteWing

LiteWing features a simple but efficient power management circuit:

Component

Function

TP4056 Battery charger with up to 1A charging current
SPX3819 Ultra-low-noise 3.3V LDO for ESP32, IMU, and other components
Power Path Control P-Channel MOSFET and Schottky diode for automatic USB/battery switching

For detailed information on battery selection, see the Battery Selection Guide

Status & Debugging Indicators

LEDS on LiteWing

LiteWing features an intuitive LED status system for real-time feedback:

Indicator

Function

PWR Power Indicator. On when LiteWing is turned on.
CHRG Charging Indicator. On when the battery is charging.
FULL Full Charge Indicator. On when the battery is fully charged.
SYS System Status. Slow flash indicates sensor calibration; normal flash when ready to fly.
ERR Error Indicator. On when the battery is low.
Link Link Status Indicator. Flashes when connected to the App or PC.

Audio Indicator Option

Audio Connector

LiteWing also features an option for audio indications via a 1.25mm pitch JST connector near the ESP32-S3 SoC for connecting a passive piezo buzzer.

Expansion Capabilities

GPIO Expansion Pins

Pinout Diagram of LiteWing

With extra GPIO breakout pins, the LiteWing is designed for expandability, allowing users to integrate additional sensors for enhanced flight capabilities.

Pin

Category

Description

IO15
General GPIO
ESP32-S3 GPIO15
IO16 ESP32-S3 GPIO16
IO17 ESP32-S3 GPIO17
IO18 ESP32-S3 GPIO18
IO19 ESP32-S3 GPIO19
IO20 ESP32-S3 GPIO20
IO1 General GPIO ESP32-S3 GPIO1
TX
UART0
UART0 TX - Connected to TXD0
RX UART0 RX - Connected to RXD0
IO48 General GPIO ESP32-S3 GPIO48
SCL1
I2C1 (ToF - VL53L1X)
I2C1 Clock - Connected to GPIO41
SDA1 I2C1 Data - Connected to GPIO40
SCL
I2C0 (IMU - MPU6050)
I2C0 Clock - Connected to GPIO10
SDA I2C0 Data - Connected to GPIO11
IO13 General GPIO ESP32-S3 GPIO13
3V3
Power Pins
3.3V Regulated Output
GND Ground Connection
VBUS USB VBUS Power
IO39
Buzzer Pins
Buzzer + (GPIO39)
IO38 Buzzer - (GPIO38)
MISO
SPI (Optical Flow - PMW3901)
SPI MISO - Connected to GPIO37
CLK SPI Clock - Connected to GPIO36
MOSI SPI MOSI - Connected to GPIO35
CS SPI Chip Select - Connected to GPIO42

Important Silkscreen Labelling Correction: In the first revision of this product, there is incorrect silkscreen labeling for some IO pins:

  • IO48 is incorrectly marked as IO42
  • CS/IO42 is incorrectly marked as IO47

Refer to the pinout diagram for correct pin labelling. This issue has been corrected in the latest revision.

Optional Modules for Assisted Flight Control

Optional Modules for Assisted Flight Control

The firmware is designed with future updates in mind, enabling features such as position hold and altitude hold:

Module Interface Function Status
VL53L1X ToF Sensor Auxiliary I2C Height Hold Tested and working
MS5611 Barometer I2C Altitude Hold Coming soon
PMW3901 Optical Flow SPI Position Hold Tested and working

Assisted flight control is currently supported with the LiteWing App and the custom Python SDK. For setup details, see the New Mobile App Guide.

Development and Programming

Firmware Overview

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.
 

Framework Feature Description
WiFi & Bluetooth Built-in support for wireless communication
FreeRTOS Seamless multitasking capabilities
Debugging Tools Performance monitoring and power management

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.

Firmware Components

Component Function
Flight Control Core Sensor data processing, stabilization, motor control, PID adjustments
Hardware Drivers Communication with peripherals (I2C, SPI, UART)
Communication Modules Telemetry, remote control, data logging via WiFi
Software Libraries Signal filtering, sensor fusion, real-time data processing

Download Firmware

Code and Schematics of GPS Tracker using ESP32Code and Schematics of GPS Tracker using ESP32 Zip File

Programming Options

Platform Method Documentation
Python SDK Crazyflie cflib library Python Programming Guide
CFClient Desktop application for control and monitoring cfClient Installation Guide
Arduino ESP32-S3 Arduino programming Coming soon

CrazyFlie and Python Tutorials

LiteWing comes preloaded with firmware based on ESP-Drone and Crazyflie, making it compatible with cfclient and the cflib Python library. You can control it using an Xbox or PS4/PS5 controller and monitor flight data in real time.
 

Tutorial Description Link
Gesture Control Control LiteWing using hand gestures View Tutorial
Python SDK Basics Getting started with cflib Python Programming Guide

Arduino Tutorials

The brain of the LiteWing drone is the ESP32-S3 SoC from Espressif, allowing users to program it from scratch using the Arduino IDE. Basic flight testing with Arduino code and a user-friendly GUI for programming and monitoring has been completed. A step-by-step tutorial on flying LiteWing with Arduino will be available soon.

Hardware Design and Files

The hardware design for LiteWing, including the schematics and Gerber files, is made open-source for people to try and experiment. All designs are under a CC license; you are free to build, modify, and share.

PCB of LiteWing

Resource Description Link
Circuit Diagrams Circuit Diagrams GitHub Repository
Gerber Files Gerber Files GitHub Repository
Firmware Binary Source Firmware Binary Source GitHub Repository

 

Code and Schematics of GPS Tracker using ESP32Code and Schematics of GPS Tracker using ESP32 Zip File

Circuit Diagram Explanation

USB Input and Power Path Control

A Type-C USB port is used for both charging and 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 switch to battery power.

For voltage regulation, the design uses 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

Battery Charger Circuit

The internal battery is charged using the TP4056 charge controller IC, which is capable of a maximum charge current of 1A. The charge current can be adjusted by changing the value of the current programming resistor R5.

The TP4056 provides two charge status indicator outputs: one for charging and one for charge completion. Both outputs are connected to LED indicators for visual feedback. The IC also features a battery temperature monitoring option, though this feature is not utilised in the current circuit design.

Schematics of  Battery Charger

Battery Monitoring and Power Switch

Battery voltage sensing uses a classic voltage divider circuit that reduces the battery voltage to a safe level for measurement. The output from the voltage divider connects to an ADC input of the ESP32, which continuously monitors battery voltage levels.

A slide switch controls the on/off state of the LiteWing. The switch, with a pull-up resistor, connects to the enable pin of the SPX3819 LDO. When this pin is pulled to ground, the LDO shuts down, powering off all components except the battery charging section.

Schematics of Battery Monitoring and on/off Switch

USB to UART Programming Circuit

Although the ESP32-S3 has native USB support, the design includes an external USB to UART bridge for firmware flashing. The CH340K USB to UART bridge controller from WCH provides the following features:

Feature Description
Interface Hardware full-duplex UART
Buffer Integrated transmit-receive buffer
Baud Rate 50bps to 2Mbps
Oscillator Integrated crystal oscillator


For auto-reset functionality, a 2N7002DW dual N-channel MOSFET in a single package reduces component count and saves PCB space.

Schematics-USB-UART-Bridge / Programming Circuit Schematics

ESP32-S3 Microcontroller Schematic

The ESP32-S3 module section includes manual reset and boot buttons for easier operation and debugging. All connections are labelled, and apart from two strapping pins and one normal GPIO, all other pins are either used for LiteWing functionality or brought out as expansion ports.

A two-pin connector near the module supports a small piezo buzzer for audio output. Standard bypass capacitors and pull-up resistors required by the ESP32-S3 module are also included.

Schematics ESP32 S3 SoC

MPU6050 IMU Schematic

The MPU6050 provides 6-axis motion tracking with an integrated 3-axis gyroscope and 3-axis accelerometer. This sensor is essential for maintaining stability, detecting orientation changes, and responding to flight movements in real time.

Function Description

Communication

 

I2C interface with ESP32

 

Processing

 

Raw sensor data for attitude estimation

 

Integration

 

Works with PID controller for motor speed adjustment

 

Calibration

 

Required to minimize drift and improve flight accuracy

 


In the LiteWing firmware, the MPU6050 works alongside the flight control core to adjust motor speeds based on pitch, roll, and yaw readings
 

MPU6050 IMU Schematics

Motor Driver Circuit Schematic

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.

Component Function
N-Channel MOSFET Controls motor on/off state via gate signal
PWM Signal Controls motor speed by varying duty cycle
Flyback Diode Prevents damage from back EMF during switching
Capacitors Suppress voltage spikes for stable operation


When a high signal is applied to the MOSFET gate, it turns on and allows current to flow, powering the motor.

Schematics of Motor Driver

Status LED Schematic

Three debugging LEDs are included in addition to the power and charging indicators:
 

LED Color Behavior Meaning
Green Slow blink Sensor calibration in progress
Green Fast blink System ready for takeoff
Blue Blinking UDP connection established with controller app
Red Continuous Battery voltage below safe threshold

Schematics Status LEDs

Expansion Connector Schematic

Four expansion connectors provide a total of 24 pins for extending functionality:

Pin Category Pins Available
Power VBUS, +3.3V, GND
Communication UART, I2C, Auxiliary I2C, SPI
General GPIO 11 additional pins

Schematics of Expansion Connector

Optional Sensor Module Pads

SMD solder pads on the bottom of the LiteWing PCB enable easy installation of optional sensors for advanced flight modes:

Sensor Interface Function
VL53L1X ToF Auxiliary I2C Height hold
MS5611 Barometer I2C Altitude hold
PMW3901 Optical Flow SPI Position hold

When using these solder pads, the battery may need to be mounted on top of the LiteWing.

Schematics of Expansion Module

Troubleshooting 

Common Issues and Solutions

Issue Possible Cause Solution
App Connection Issue Mobile data interfering Ensure mobile data is off and WiFi is connected to drone's hotspot
VPN active Turn off any VPN
Auto network switching Disable automatic WiFi switching for networks without internet
App glitch Restart the LiteWing APP
Drone Disconnecting During Takeoff Insufficient battery power Use a higher discharge rating battery (e.g., 650mAh 30C). See Battery Guide
Not Responding to Controls Connection issue Check app connection and LED indicators
Sensor Calibration mode active
 
If SYS LED blinks slowly, place on flat surface and reset
Improper startup Always place on flat surface before turning on
Drone Not Taking Off Properly Wrong propeller placement Verify motor rotation and propeller installation per PCB markings. See Assembly Guide
Drone was Unstable / won’t hover straight IMU Calibration issue See the Calibration Guide.

 

Contact and Support

Litewing is designed and maintained by CircuitDigest.  If you have any questions, please post them on our forums, or you can also join our WhatsApp community to chat with our community members. We will continue to provide support and more tutorials on this page.

 

Purchase LiteWing

Available at the following stores:

For custom development or bulk enquiries, please get in touch using the Contact Us page.

Document Index

Description

Document

Assembly Guide DIY kit assembly instructions with propeller installation
Battery Selection Guide Choosing the right LiPo battery for optimal flight
Firmware Guide Downloading and flashing firmware
Flight Guide Flying with the mobile application
Calibration Guide Roll and pitch trim calibration
New Mobile App New app features including height hold
Python Programming Programming with Crazyflie cflib SDK

Last Updated: December 8, 2025 | Build Status: Tested & Verified

Sir,

How to implement Height Hold Using TOF Sensor in the litewing drone, please explain the principle, working and the necessary modification in the firmware

You don't need to do any firmware modifications. Once you connect the sensor, the diode will automatically detect the sensor. Currently, to use the height hold feature, you have to use the cfclient. Check the documentation for cfckeint for more details. We are working on incorporating these features into the mobile app. 

Can you tell if you tested your drone with this ToF Sensor - GYVL53L0XV2, or it is only compatible with VL53L1X , as there is huge difference in price ? Also recommend where to buy this sensor so there wouldn't be much issues.

Thanks, my son and I managed to connect sensor. It shows some stability over height. But got following questions :

  • Which buttons and xbox controller to press , as drone does not maintain height, thrust goes down. We tried various combinations of xbox controller looking at your video. 

Thanks for this project, I am planning on building one, of all the components I am unable to find the CH340K chip , can you please suggest any alternative please or any link where i can purchase the same. Thanks in advance.

I recently bought the Lite wing from Quarz components. When I started the system, I get the sensor errors and not able to connect. Link LED doesn't glow.

Please find below short Error log:
W (2783) ZR2: Z-down sensor [FAIL]

W (2783) SENSORS: VL53L1X I2C connection [FAIL].

I (2783) gpio: GPIO[42]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0
W (2839) SENSORS: PMW3901 SPI connection [FAIL].

Is the firmware with all three sensors?
How to bypass these sensors?
If I want to download and compile the code on github, do I need ESP-IDF version 4.4?

Please guide.

Kiran

These errors won't be an issue. These errors indicate that the height hold and position hold sensors are not attached. It doesn't affect the normal functionality. Yes, for the firmware, use the recommended IDF version, as per the GitHub repo.

i'm having an issue with the mpu-6050 ic. it doesn't seem to work. i see that the chip receives power and has a voltage across the 3v3 and ground pins, but isn't being detected by the software when i run a scan on the pins. what could be the reason for this issue? i see this issue on multiple boards. for context, i used the schematic files and ordered the drone through a vendor, and when presented with engineer questions, i directed them to fill the unused vias at several locations. maybe this is affecting it somehow? any help would be appreciated!

Sir

I want to connect VL53L1X. TOF sensor to Litewing, but the pin details( names) in the sensor are in a different order when compared to the pin labelling in the Litewing drone. What should I do ?

Hello,
How can I switch the drone from AP mode to station mode?
I have purchased 3 drones and I want them to work in swarm.

Sir , CFclient is not regoganise my litewing drone, any fix for that?

Sir my drone is booting again and again on battery it is not stable

Sir,

How to implement Height Hold Using TOF Sensor in the litewing drone, please explain the principle, working and the necessary modification in the firmware

You don't need to do any firmware modifications. Once you connect the sensor, the diode will automatically detect the sensor. Currently, to use the height hold feature, you have to use the cfclient. Check the documentation for cfckeint for more details. We are working on incorporating these features into the mobile app. 

Can you tell if you tested your drone with this ToF Sensor - GYVL53L0XV2, or it is only compatible with VL53L1X , as there is huge difference in price ? Also recommend where to buy this sensor so there wouldn't be much issues.

Thanks, my son and I managed to connect sensor. It shows some stability over height. But got following questions :

  • Which buttons and xbox controller to press , as drone does not maintain height, thrust goes down. We tried various combinations of xbox controller looking at your video. 

Thanks for this project, I am planning on building one, of all the components I am unable to find the CH340K chip , can you please suggest any alternative please or any link where i can purchase the same. Thanks in advance.

I recently bought the Lite wing from Quarz components. When I started the system, I get the sensor errors and not able to connect. Link LED doesn't glow.

Please find below short Error log:
W (2783) ZR2: Z-down sensor [FAIL]

W (2783) SENSORS: VL53L1X I2C connection [FAIL].

I (2783) gpio: GPIO[42]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0
W (2839) SENSORS: PMW3901 SPI connection [FAIL].

Is the firmware with all three sensors?
How to bypass these sensors?
If I want to download and compile the code on github, do I need ESP-IDF version 4.4?

Please guide.

Kiran

These errors won't be an issue. These errors indicate that the height hold and position hold sensors are not attached. It doesn't affect the normal functionality. Yes, for the firmware, use the recommended IDF version, as per the GitHub repo.

i'm having an issue with the mpu-6050 ic. it doesn't seem to work. i see that the chip receives power and has a voltage across the 3v3 and ground pins, but isn't being detected by the software when i run a scan on the pins. what could be the reason for this issue? i see this issue on multiple boards. for context, i used the schematic files and ordered the drone through a vendor, and when presented with engineer questions, i directed them to fill the unused vias at several locations. maybe this is affecting it somehow? any help would be appreciated!

Sir

I want to connect VL53L1X. TOF sensor to Litewing, but the pin details( names) in the sensor are in a different order when compared to the pin labelling in the Litewing drone. What should I do ?

Hello,
How can I switch the drone from AP mode to station mode?
I have purchased 3 drones and I want them to work in swarm.

Sir , CFclient is not regoganise my litewing drone, any fix for that?

Sir my drone is booting again and again on battery it is not stable