Quadcopter Project with Arduino Nano
Quadcopter Project with Arduino Nano
POLYTECHNIC
Submitted by
SHANTOM GAYEN D222301307
2025
A.P.C. RAY POLYTECHNIC
DEPARTMENT OF ELECTRONICS AND INSTRUMENTATION
ENGINEERING
CERTIFICATE OF APPROVAL
Kolkata-700032 and this work has not been submitted elsewhere before for
_________________________
Sri. Debasis Mondal
Lecturer in Electronics and Instrumentation Engineering
_________________________
Head of the Department
Electronics and Instrumentation Engineering
ACKNOWLEDGEMENT
This Project Report would not have been possible without the guidance and the help of several
individuals who in one way or another contributed and extended their valuable guidance and
support in the preparation and completion of this.
Firstly, we want to express our sincere gratitude and thank our supervisor Sri. DEBASIS MONDAL,
Lecturer in Electronic & Instrumentation Engineering A.P.C. Ray Polytechnic, Jadavpur for their
unreserved help, motivation, enthusiasm and constant guidance to finish our project work step by
step. Under his supervision we successfully overcame many adversities and learned a lot. We
extend our deep sense of obligation and honour to him for inspiring discussions, kind cooperation
and constant encouragement throughout the period of our project work which has been
influential in the success of the project.
Secondly, we want to convey heartfelt thanks to all the faculty members and staff of A.P.C. Ray
Polytechnic, Jadavpur and our project members for their indebted help and valuable suggestions
for successful completion of the project work.
Last but not least, we would like to pay high regards to our parents, our friends and the
omnipresent God for giving us strength in all the critical situations and supporting us spiritually
throughout our lives.
INTRODUCTION----------------------------------------------------------------------------------------------- 1
WORKING PRINCIPLE---------------------------------------------------------------------------------------- 1
MATERIALS REQUIRED---------------------------------------------------------------------------------------4
COMPONENT DESCRIPTION------------------------------------------------------------------------------- 5
Arduino NANO------------------------------------------------------------------------------------------------ 5
NRF24L01 (With Power Amplifier)------------------------------------------------------------------------ 7
7805 IC----------------------------------------------------------------------------------------------------------9
1117 IC----------------------------------------------------------------------------------------------------------9
OLED Display-------------------------------------------------------------------------------------------------10
Joystick Module----------------------------------------------------------------------------------------------10
BLDC Motor with ESC-------------------------------------------------------------------------------------- 11
3s Li-Po Battery---------------------------------------------------------------------------------------------- 13
MPU6050----------------------------------------------------------------------------------------------------- 14
TRANSMITTER CIRCUIT------------------------------------------------------------------------------------ 16
RECEIVER CIRCUIT------------------------------------------------------------------------------------------ 17
TRANSMITTER CODE--------------------------------------------------------------------------------------- 18
Code Explanation-------------------------------------------------------------------------------------------- 20
RECEIVER CODE--------------------------------------------------------------------------------------------- 22
Code Explanation-------------------------------------------------------------------------------------------- 30
ADVANTAGES-------------------------------------------------------------------------------------------------34
DISADVANTAGES-------------------------------------------------------------------------------------------- 34
ERROR----------------------------------------------------------------------------------------------------------34
PRECAUTIONS------------------------------------------------------------------------------------------------35
CONCLUSION-------------------------------------------------------------------------------------------------------- 35
BIBLIOGRAPHY---------------------------------------------------------------------------------------------- 36
INTRODUCTION
A quadcopter drone is a small flying aircraft that uses four spinning propellers to lift off the ground
and move through the air. Quadcopters have four smaller rotors positioned at each corner of the
frame, giving them their distinctive quad (meaning 'four') name. The four propellers spin to create
lift through the principles of aerodynamics. Each propeller blade is angled to push air downward as
it rotates, creating an upward force that counteracts gravity. By spinning faster or slower, the
drone can go up or down. The beauty of the quadcopter design lies in its ability to achieve precise
movement through subtle adjustments to individual rotor speeds.
The flight control system works by varying the speed of each propeller independently. When all
four propellers spin at the same speed, the drone hovers in place. To ascend, all propellers increase
speed simultaneously. To descend, they all slow down together. By tilting slightly in different
directions, it can move forward, backward, left, or right. This tilting motion is achieved by creating
slight speed differences between opposing propellers, causing the drone to lean in the desired
direction of travel.
The pilot controls all of this using a handheld remote control that sends radio signals to the drone.
Controllers typically feature two joysticks that correspond to different flight functions. One
joystick usually controls throttle (up and down movement) and yaw (rotation around the vertical
axis), while the other manages pitch (forward and backward tilt) and roll (left and right tilt).
Quadcopters also include sophisticated stabilization systems with gyroscopes and accelerometers
that help maintain steady flight even in windy conditions. These sensors constantly monitor the
drone's orientation and make rapid adjustments to keep it level and stable, making them much
easier to fly than earlier remote-controlled aircraft.
Quadcopters are popular for recreational flying and photography, but their applications extend far
beyond hobbyist use. Many people enjoy the challenge of learning to pilot them smoothly through
the air that can be both relaxing and exhilarating.
The versatility of quadcopters has led to their adoption in numerous professional fields. They're
used for agricultural monitoring, where they can survey large crop areas and identify problems
like pest infestations or irrigation issues. Search and rescue operations employ drones to locate
missing persons in difficult terrain. Infrastructure inspection has been transformed by drones that
can safely examine bridges, power lines, and tall buildings without putting human inspectors at
risk.
The technology continues to evolve rapidly, with improvements in battery life, and autonomous
flight capabilities. As regulations adapt to accommodate these versatile machines, quadcopters
are likely to become even more integrated into both our recreational activities and professional
industries, making them one of the most significant technological innovations of the modern era.
1
WORKING PRINCIPLE
The drone generates lift through four rotors arranged in a cross configuration. Each rotor consists
of propeller blades that create a pressure differential by accelerating air downward, generating an
upward thrust force according to Newton's third law. The total lift must equal or exceed the
drone's weight to achieve flight.
The drone controls its orientation and movement by varying the speed of individual rotors:
● Roll Motion: By spinning the left rotors faster than the right rotors (or vice versa), the
drone creates unequal lift forces that generate a rolling moment about the longitudinal
axis.
● Pitch Motion: Similarly, increasing thrust from the rear rotors while decreasing front rotor
thrust creates a pitching moment about the lateral axis.
● Yaw Motion: Adjacent rotors spin in opposite directions to cancel out torque. By slightly
increasing the speed of rotors spinning in one direction while decreasing the others, a net
torque is created, causing the drone to rotate about the vertical axis.
● Vertical Motion: All rotors increase or decrease speed simultaneously to climb or descend.
The drone's dynamics are governed by rigid body equations of motion. The key relationships
include:
● Angular Momentum: τ = 𝐼α, where torque (𝜏) equals moment of inertia (I) times angular
acceleration (ɑ).
● Force Balance: The net force in each direction determines linear acceleration according to
𝐹 = 𝑚𝑎.
● Complementary Filtering: The drone combines gyroscope and accelerometer data using a
weighted average:
𝐴𝑛𝑔𝑙𝑒 = α × (𝑝𝑟𝑒𝑣𝑖𝑜𝑢𝑠_𝑎𝑛𝑔𝑙𝑒 + 𝑔𝑦𝑟𝑜_𝑟𝑎𝑡𝑒 × 𝑡𝑖𝑚𝑒) + (1 − α) × 𝑎𝑐𝑐𝑒𝑙𝑒𝑟𝑜𝑚𝑒𝑡𝑒𝑟_𝑎𝑛𝑔𝑙𝑒
The drone achieves stability through continuous feedback correction. Any external disturbance
creates an angular error, which the PID controller detects and corrects by adjusting motor speeds.
The high-frequency control loop (typically 100-1000 Hz) enables rapid corrections that maintain
stable flight despite disturbances like wind gusts.
2
1. Action-Reaction Forces: As the motor applies torque to spin the propeller clockwise, the
propeller applies an equal and opposite torque to the aircraft frame, trying to rotate it
counterclockwise.
2. Angular Momentum Conservation: The spinning propeller has angular momentum. To
maintain the system's total angular momentum, the aircraft body must develop an
opposite angular momentum.
3. Gyroscopic Effects: The spinning propeller acts as a gyroscope, creating additional torques
when the aircraft changes orientation.
To control yaw (rotation about the vertical axis), the drone deliberately creates a torque
imbalance:
3
MATERIALS REQUIRED
TRANSMITTER RECEIVER
ADDITIONAL EQUIPMENTS
4
COMPONENT DESCRIPTION
Arduino NANO
Nano is a compact microcontroller board
based on the 8-bit ATmega328P
microcontroller. Along with ATmega328P,
it consists of other components such as a
crystal oscillator, USB interface, voltage
regulator, and reset button to support the
microcontroller.
Since its introduction, the Arduino Nano has become a popular choice among students, hobbyists,
and developers working on compact and space-constrained projects. Like other Arduino boards, it
is an open-source platform, allowing anyone to modify and customize the board and its code for
specific use cases. The Arduino IDE (Integrated Development Environment) supports Nano as well
and allows programming in C and C++ with minimal setup.
Input/Output Pins Digital Pins D0–D13 Can be used as input or output digital pins.
Serial D0 (Rx), D1 (Tx) Used to receive (Rx) and transmit (Tx) TTL
5
serial data.
Operating Voltage 5V
SRAM 2 KB
EEPROM 1 KB
6
Arduino IDE
The Arduino IDE is the official software platform used to write, compile, and upload code to
Arduino boards. It provides a simple and beginner-friendly interface that allows users to develop
programs (called sketches) using C and C++ programming languages. The IDE includes built-in
libraries, code examples, and tools that make it easy to interface with sensors, modules, and other
hardware components.
Available for Windows, macOS, and Linux, the Arduino IDE supports a wide range of boards
beyond just Arduino via board manager extensions. It communicates with the board over a serial
USB connection. With features like syntax highlighting, automatic formatting, and serial monitor, it
is ideal for both beginners and experienced developers. The open-source nature of the IDE also
allows community-driven improvements and third-party board and library integrations, making it
a flexible tool for embedded system development.
7
Pin Description
Pin Name Type Description
VCC Power Power supply input. Should be 3.3V (not 5V!). Connecting to 5V
will damage the module.
CE Digital In Chip Enable. Used to toggle between standby and active modes
(transmit/receive). High to enable.
CSN (CS) Digital In Chip Select Not. Active low. Used to select the SPI device. Set
low before SPI communication.
MOSI Digital In Master Out Slave In. Data sent from the microcontroller to the
nRF24L01.
MISO Digital Out Master In Slave Out. Data sent from nRF24L01 to the
microcontroller.
IRQ Digital Out Interrupt Request. Active low. Can be used to notify the MCU
about transmit/receive events. (Optional, not always needed for
basic setups.)
Pin Connections
nRF24L01 Pin Connected to
GND GND
CE D9
SCK D13
MOSI D11
MISO D12
8
7805 IC
The 7805 is a widely used linear voltage regulator from the 78xx series,
designed to provide a stable +5 V output from a higher unregulated input
(typically between 7 V and 35 V). Because of its simplicity, affordability, and
built-in protection features, the 7805 is ubiquitous in hobbyist and
professional electronics projects whenever a reliable 5 V supply is needed.
Specification Details
1117 IC
The AMS1117-3.3 (commonly referred to as 1117 3.3V) is a widely used
low-dropout linear voltage regulator from the AMS1117 series,
designed to provide a stable +3.3V output from a higher unregulated
input (typically between 4.5V and 15V). Because of its low dropout
voltage, compact form factor, and built-in protection features, the
AMS1117-3.3 is extremely popular in modern electronics projects,
especially those involving microcontrollers, WiFi modules, and other
3.3V digital circuits.
Specification Details
9
OLED Display
An OLED display (Organic Light Emitting Diode) uses organic
compounds to emit light when electricity is applied. Known for high
contrast, wide viewing angles, and low power consumption, especially
with dark content.
Unlike LCDs, OLEDs emit their own light without requiring a backlight,
enabling true blacks, lower power consumption for dark screens, and
faster response times.
It is ideal for embedded systems, Arduino projects, IoT devices, and
any application requiring compact, high-contrast displays with
efficient power usage.
OLED Specifications
Specification Details
Interface I2C
Driver IC SSD1306f
SCL A5
SDA A4
VCC 5V or 3.3V
GND GND
Joystick Module
The joystick module is a fundamental input device widely used in Arduino
and embedded system projects to provide two-axis analog control with
an integrated push-button switch. Based on potentiometer technology,
this module outputs variable voltage levels corresponding to the
joystick's X and Y positions, making it ideal for directional control
10
applications. The module typically operates on 3.3V to 5V supply voltage and provides analog
outputs that can be directly interfaced with microcontroller ADC pins.
Pin Configuration
VRx X-axis output Analog voltage output (0-5V) for horizontal movement
VRy Y-axis output Analog voltage output (0-5V) for vertical movement
Technical Specifications
Parameter Value
11
suitable for applications requiring high-speed operation with moderate
torque output.
The BLDC motor and ESC work together through electronic commutation, where the ESC
replaces the mechanical brushes found in traditional DC motors. The ESC contains six MOSFETs
arranged in three half-bridge configurations, each controlling one phase of the motor's
three-phase winding. Using back-EMF sensing or Hall effect sensors, the ESC determines rotor
position and switches the appropriate MOSFETs to maintain continuous rotation.
The Arduino communicates with the ESC using standard servo PWM protocol: 1000μs pulse
width for minimum throttle (motor stop), 1500μs for half throttle, and 2000μs for maximum
throttle. The ESC interprets these signals and adjusts the motor's speed accordingly by varying the
switching frequency and duty cycle of the three-phase output.
Motor Specifications
ESC Specifications
12
Control Signal PWM (1000-2000μs) Standard servo PWM protocol
Signal White/Yellow PWM Input Arduino PWM pin (D3 - D6; D9 - D11)
3s Li-Po Battery
The 3S Li-Po (Lithium Polymer) battery configuration
represents one of the most versatile power solutions
for Arduino and embedded systems applications. With
a nominal voltage of 11.1V (3.7V per cell) and full
charge voltage of 12.6V, this battery pack delivers
reliable, high-density power storage in a lightweight
package. The 2200mAh capacity provides substantial
runtime for moderate power consumption projects
while maintaining portability essential for mobile
robotics, IoT devices, and portable instrumentation.
Li-Po batteries offer significant advantages over traditional power sources including high energy
density, low self-discharge rates, and consistent voltage output throughout the discharge cycle.
13
These characteristics make them particularly suitable for embedded systems requiring stable
power delivery and extended operation periods without frequent recharging.
Battery Specifications
Parameter Value
Weigh
Dimension
The 12V output is ideal for powering servo motors, stepper motors, and DC gear motors
commonly used in robotic platforms. The high current capability supports multiple actuators
simultaneously while providing sufficient voltage for motor drivers like L298N, Electronic Speed
Controller, or similar circuits.
MPU6050
The MPU6050 is a versatile 6-axis motion tracking device that
combines a 3-axis gyroscope and a 3-axis accelerometer on a single
chip. Manufactured by InvenSense (now part of TDK), this compact
sensor has become a cornerstone component in Arduino projects and
embedded systems due to its exceptional accuracy, low power
consumption, and ease of integration. The module operates on the
I2C communication protocol, making it simple to interface with
microcontrollers while providing precise motion sensing capabilities.
Technical Specifications
Parameter Value
14
Gyroscope Range ±250, ±500, ±1000, ±2000 °/sec
Pin Configuration
Pin Function Description
The MPU6050 incorporates several advanced features that make it particularly suitable for
embedded applications. Its Digital Motion Processor (DMP) can perform complex motion
processing algorithms directly on-chip, reducing the computational load on the host
microcontroller. The sensor includes a 16-bit analog-to-digital converter for each channel,
ensuring high precision measurements. Additionally, it features programmable digital filters,
multiple power management options, and built-in temperature compensation for enhanced
accuracy across varying environmental conditions.
15
TRANSMITTER CIRCUIT
16
RECEIVER CIRCUIT
17
TRANSMITTER CODE
#include <Adafruit_SSD1306.h>
#include <splash.h>
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#define CE_PIN 5
#define CSN_PIN 6
#define JOY_THROTTLE A0
#define JOY_ROLL A1
#define JOY_PITCH A2
#define JOY_YAW A3
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void setup()
{
[Link](9600);
[Link]();
[Link](address);
[Link](RF24_PA_MIN);
if ()
{
[Link]("OLED allocation failed");
}
beautifulInitialization();
[Link]();
[Link](2);
[Link](0, 16);
[Link](" Ready to\ntake off!!");
[Link]();
}
18
}
[Link]();
delay(300);
}
// Background bar
[Link](16, 25, 96, 8, SSD1306_WHITE);
// Percentage display
[Link](1);
[Link](55, 40);
[Link](progress);
[Link]("%");
[Link]();
delay(100);
}
// Final hold
delay(800);
19
[Link]();
[Link]();
}
void loop()
{
float VIN; //Battery voltage
float HGT; //Height
delay(5);
[Link]();
joystick[0] = analogRead(JOY_THROTTLE) / 4;
joystick[1] = analogRead(JOY_ROLL) / 4;
joystick[2] = analogRead(JOY_PITCH) / 4;
joystick[3] = analogRead(JOY_YAW) / 4;
[Link](&joystick, sizeof(joystick));
delay(5);
[Link]();
while (![Link]())
{
[Link]();
[Link](0, 0);
[Link]("NO SIGNAL");
[Link]();
}
[Link](&VIN, sizeof(VIN));
[Link](&HGT, sizeof(HGT));
[Link]();
[Link](0, 16);
[Link](1);
[Link]("Battery:");
[Link](2);
[Link](VIN);
[Link]("V");
[Link](1);
[Link]("\nHeight:");
[Link](2);
[Link](HGT);
[Link]("m\n");
[Link]();
}
Code Explanation
setup()
Process:
20
1. Serial Communication: Starts at 9600 baud for debugging
2. Radio Setup:
○ Initializes nRF24L01 transceiver
○ Opens writing pipe with address "98830"
○ Sets power to minimum (RF24_PA_MIN) for close-range operation
3. OLED Display Setup:
○ Initializes SSD1306 display at I2C address 0x3C
○ Checks if display allocation succeeded
○ If failed, prints error to serial
4. Startup Animation: Calls beautifulInitialization() for visual feedback
5. Ready Screen: Shows "Ready to take off!!" message in large text
beautifulInitialization()
Three-Phase Animation:
loop()
Purpose: Main control loop that handles joystick input, radio communication, and display updates
Process Flow:
21
RECEIVER CODE
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <Wire.h>
#include <MPU6050.h>
#include <Servo.h>
#include <Vcc.h>
#define CE_PIN 2
#define CSN_PIN 4
#define MOTOR1 3
#define MOTOR2 5
#define MOTOR3 6
#define MOTOR4 9
#define VSENSOR_PIN A0
#define KP 1.2
#define KI 0.02
#define KD 0.8
int joystick[4];
float batt[2];
22
float heightData[2]; // Array to transmit height data [height, velocity]
void heightCalc() {
// Get raw accelerometer data
int16_t ax, ay, az, gx, gy, gz;
mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
// Debug output
23
[Link]("Height: ");
[Link](estimatedHeight, 2);
[Link]("m, Velocity: ");
[Link](verticalVelocity, 2);
[Link]("m/s, Accel: ");
[Link](filteredAccel, 2);
[Link]("m/s²");
}
void calibrateHeightBaseline() {
static int calibrationSamples = 0;
static float accelSum = 0;
const int CALIBRATION_SAMPLES = 200;
accelSum += rawVerticalAccel;
calibrationSamples++;
void transmitHeightData() {
// Stop listening to transmit data
[Link]();
if (result) {
[Link]("Height data transmitted successfully");
} else {
24
[Link]("Height data transmission failed");
}
void resetHeightTracking() {
// Function to reset height tracking (call when drone lands or resets)
estimatedHeight = 0;
verticalVelocity = 0;
verticalAccel = 0;
heightCalibrated = false;
void setup()
{
[Link](115200);
// Initialize radio
[Link]();
[Link](0, address[0]);
[Link](RF24_PA_MIN);
// Initialize ESCs
[Link](MOTOR1);
[Link](MOTOR2);
[Link](MOTOR3);
[Link](MOTOR4);
initializeESCs();
previousTime = millis();
calibrateGyro();
[Link]("Setup complete");
}
void loop()
25
{
// Calculate delta time for integration
unsigned long currentTime = millis();
deltaTime = (currentTime - previousTime) / 1000.0; // Convert to seconds
previousTime = currentTime;
heightCalc();
delay(5);
[Link]();
if ([Link]())
{
voltRead();
[Link]("Radio available");
while ([Link]())
{
[Link](&joystick, sizeof(joystick));
// Debug output
[Link]("Roll: ");
[Link](rollAngle, 2);
[Link]("° Target: ");
[Link](rollTarget, 2);
[Link]("° Throttle: ");
[Link](throttle);
}
delay(5);
[Link]();
void calibrateGyro()
{
[Link]("Calibrating gyroscope... Keep drone still!");
26
// Take 1000 samples to establish zero point
long sumGx = 0, sumGy = 0, sumGz = 0;
for (int i = 0; i < 1000; i++)
{
int16_t ax, ay, az, gx, gy, gz;
mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
sumGx += gx;
sumGy += gy;
sumGz += gz;
delay(3);
}
void initializeESCs()
{
[Link]("Initializing ESCs...");
void getMPU6050DataWithFilter()
{
int16_t ax, ay, az, gx, gy, gz;
mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
27
void applyImprovedPIDControl(int throttle, float rollTarget, float pitchTarget, int yawInput)
{
// Calculate errors (target - actual)
errorRoll = rollTarget - rollAngle;
errorPitch = pitchTarget - pitchAngle;
[Link](motor1Speed);
[Link](motor2Speed);
[Link](motor3Speed);
28
[Link](motor4Speed);
}
else
{
[Link](1000);
[Link](1000);
[Link](1000);
[Link](1000);
integralRoll = 0;
integralPitch = 0;
resetHeightTracking();
}
}
void voltRead()
{
int i;
float batt_volt = 0;
batt_volt = batt_volt / i;
[Link]("Battery: ");
[Link](batt_volt, 2);
[Link]("V ");
[Link](((batt_volt - lowBat) / (fullBat - lowBat)) * 100);
[Link]("%");
}
void transmitBatteryData()
{
int i;
batt[0] = 0;
batt[0] = batt[0] / i;
batt[1] = ((batt[0] - lowBat) / (fullBat - lowBat)) * 100;
[Link](&batt, sizeof(batt));
delay(50); // Reduced delay
}
29
Code Explanation
setup()
Process:
heightCalc()
Process:
𝑎𝑧
16384
× 9. 18
6. Creates dead zone to eliminate small vibrations (< 0.1 m/s²)
7. Double integration: acceleration → velocity → height
8. Applies velocity damping (×0.999) to prevent drift
9. Prevents negative height (ground constraint)
10.Transmits height data and prints debug info
calibrateHeightBaseline()
Purpose: Establishes the sensor's baseline acceleration to compensate for mounting errors and
bias
30
Process:
This is critical because accelerometers have bias and the drone may not be perfectly level when
powered on.
transmitHeightData()
Purpose: Sends height and velocity data to ground station via radio
Process:
resetHeightTracking()
Process:
calibrateGyro()
Process:
initializeESCs()
31
Process:
getMPU6050DataWithFilter()
Process:
applyImprovedPIDControl()
Process:
32
voltRead()
Process:
4.49
𝑉𝑜𝑙𝑡𝑎𝑔𝑒 = 4 × 𝐴𝐷𝐶 × 1023
transmitBatteryData()
Process:
loop()
Process:
1. Time Management: Calculates deltaTime for integration, caps at 100ms to prevent errors
2. Height Calculation: Calls heightCalc() every loop
3. Radio Communication:
○ Checks for incoming joystick data
○ Reads 4-channel joystick array [throttle, roll, pitch, yaw]
○ Maps joystick values to usable ranges
4. Flight Control:
○ Gets filtered sensor data
○ Applies PID control
○ Outputs motor commands
5. Telemetry: Transmits battery data back to controller
33
ADVANTAGES
● Modular Design: Easily upgradable with sensors and modules (e.g., GPS, camera, Wi-Fi).
● Wireless Control (RF): Reliable real-time control in short to medium range.
● Arduino Nano Compatibility: Cost-effective, open-source, and highly customizable.
● Inertial Measurement Unit: Better flight stability through real-time pitch, roll, yaw
monitoring.
● Telemetry Feedback: Displays battery voltage and height on OLED for live monitoring.
● DIY-Friendly: Built using readily available and affordable components.
DISADVANTAGES
● Limited Range (RF): RF communication is suitable only for short to medium distances.
● No GPS Navigation: Cannot autonomously navigate or return to home without GPS.
● Battery Constraints: Short flight time due to Li-Po battery capacity and motor
consumption.
● Lack of Obstacle Avoidance: No ultrasonic or IR sensors to detect and avoid obstacles
● Weather Dependency: Performance can degrade in wind, rain, or harsh environmental
conditions.
ERROR
34
PRECAUTIONS
Flying a drone responsibly is crucial to ensure both safety and legal compliance. One of the most
important rules is to always keep your drone within your line of sight—this helps prevent accidents
and allows for immediate intervention if something goes wrong. Never fly your drone beyond
visual range. Before taking off, check the weather conditions thoroughly. Flying in strong winds,
rain, or during storms can result in loss of control and potential damage to your drone or harm to
people and property.
It's essential to stay well away from sensitive locations such as airports, crowded public areas, or
any form of restricted airspace. Not only is it dangerous to fly in these zones, but it may also
violate airspace laws. Always inspect your drone before each flight to ensure there are no physical
damages, and confirm that the batteries are fully charged and in good condition to avoid mid-air
failure.
Choose open areas for flying where there are minimal obstacles like power lines, trees, or
buildings that could interfere with your flight path. Be mindful of others’ privacy and avoid flying
over private property without prior permission. In many regions, drone registration is
mandatory—make sure to register your device as required by your local aviation authority.
Plan your flight with safety in mind, including identifying a suitable landing area free from people,
animals, and moving vehicles. Lastly, take the time to learn and follow all local drone laws and
regulations to ensure your drone operations remain safe, legal, and respectful of your
surroundings. Responsible flying protects you, your equipment, and the community.
CONCLUSION
This project successfully demonstrates the fundamental principles of quadcopter flight using
Arduino Nano and RF communication. Through effective use of PID control, IMU sensor data, and
real-time telemetry, the drone achieves stable, controlled flight and basic maneuvering. While it
may not match commercial drones in terms of range or autonomy, this prototype offers a valuable
learning platform for embedded systems, control theory, and wireless communication.
It not only strengthens the practical understanding of electronics and instrumentation but also
opens doors to future innovations such as GPS integration, camera modules, autonomous
navigation, and AI-based obstacle detection. With further development, this system has the
potential to serve as a robust base for educational, industrial, and research-based drone
applications.
35
BIBLIOGRAPHY
1. Arduino NANO Hardware Documentation - [Link]
2. Getting Started with Arduino IDE 2 - Arduino Documentation -
[Link]
3. Language Reference - Arduino Documentation -
[Link]
4. Quadcopter Drones: A Comprehensive Beginner’s Guide -
[Link]
1 2 3 4
36