Project showcase
UAV Arduino

UAV Arduino

This is one of my personal budget/project made for University to graduate. This Airplane (UAV) is made fully homemade using only Arduino.

  • 218 respects

Components and supplies

Ph a000066 iso (1) ztbmubhmho
Arduino UNO
514orbmw1rl. sl500 ss115
Inertial Measurement Unit (IMU) (6 deg of freedom)
GPS ATtiny
Geiger Counter

Necessary tools and machines

Homemade PCB

Apps and online services

About this project


This project was made to graduate my University, the project and budget was all mine idea and money, I chose this project because I was optimist to build a fully homemade airplane using only Arduino. The airplane is build as well by me, no help, i made tons of research on internet and decided to make this personal design, using isolation foam and hot wire I managed to cut the pieces and hand sanding them to look nice and smooth.

Testing the Brushless motor


Decided to use arduino Uno because that's what I had and more than 10x Atmegas328p so I made the circuit design using EAGLE added the components:

  • MPU6050 Gyro Axx.
  • GPS
  • DHT Temp humidity sensor
  • Geiger counter for nuclear radiation sensor mSv
  • BMP for pressure and altitude
  • and many other SD card for black box saving all my data..etc

So made the Circuit design and came up with 3 circuits on of the top of other as shield/sandwich.

Etching process (photos)/instructions.

I made the PCB's in EAGLE (free version) software using as base the ATmega328p microcontroller and adding the parts that I need, buttons, LEDs, regulators, pins for nRF24L01 .etc

Using the transfer paper process I used laser printer and photo glossy paper to print the circuit then cut exactly the side of it and cutting as well a double side copper PCB. After that carefully cleaning and placing the papers and locking them with paper tape, ironing it about 10 minutes both sides, pressing hard and carefully the sides. After 10 minutes placing the PCB in the water so the paper to get wet and being easy to peel.

Peel really carefully/gently the the paper, after cleaning all the paper is time for etching, using warm water making the process faster and a small sponge which is not in the picture carefully cleaning it.

At the end use a high sand paper sponge or a dish cleaner sponge to rub all the black ink / color on the PCB and finally you get a clean homemade ready PCB to use.

<<< Press the arrows to see the process >>>

All PCB are double side, hand made/homemade

This is the 1st PCB only there is more.

Radio Control:

As well managed to control the ESC and motor with the Arduino and used a cheap joystick and nRF24L01 PA as Radio Control, took the gaming joystick modified it added and extra pot as speed control and programmed the joystick with another circuit I made.

Testing the Transmitter homemade PCB

Testing the modified joystick on/off button

Testing the modified joystick buttons

Same joystick, open and testing the potentiometers

General purpose

The airplane was made to fly and collect data in regions not accessible for humans or hazard zones or just collect weather data. The airplane is capable to collect, temperature, humidity, radiation (x,gama) in mSv, as well collecting altitude data, GPS coordinates, gyro, Gforce..etc

The airplane as well is capable to fly like autopilot just need to insert the coordinates and it will go then come back, it's self stabilized using MPU6050 and it's hard to crash.

Total build/design time: 35~40 days. Took me like an year to build because I worked with this project only in my free time + I had to wait the components to arrive from China.

P.s. Sadly I don't have more footage or info, I will keep looking in my project folder and update what else I got. Keep up, be optimists and always keep walking and make your dreams come true.

Support me if you can:





Transmitter CodeC/C++
Modified Joystick, nRF24L01 and 3x buttors , 3x leds
/* ©Gorceag Victor / Domino60 2016 / Arduino 1.0.5
   - Joystick 3 Potentiometers 
   - nRF24L01 PA 2db antenna
   - 3x Buttons 3x Leds 

//-------------------------------------- nRF24
#include <nRF24L01.h>
#include <RF24.h>
#include <RF24_config.h>
#include <SPI.h>

RF24 radio(9,10);
const uint64_t pipe = 0xE8E8F0F0E1LL;

int dataToSend[6];

int PotSpeed;
int PotY;
int PotX;

long nowP = 0;
long intervalP = 60;

void Potentiometers(){
    if(millis() - nowP >= intervalP){      
   PotSpeed = analogRead(A0);  
   PotY = analogRead(A1); 
   PotX = analogRead(A2);   
     nowP = millis();

// ************************************************************ LED_BUTTON 1
int led1 = 3;
int button1 = 6;

long now1 = 0;
long interval1 = 1000;
int x1 = 0;
void Button1_Led1(){
   if(millis() - now1 >= interval1){
  int valofbutton1 = digitalRead(button1); //value of the button 0 or 1 (LOW or HIGH) 
   if(valofbutton1 == 1){ //if button HIGH
     x1++;  // x+1;  x=1
     if(x1 == 1){  //if x = 1 
        digitalWrite(led1, HIGH); //then led HIGH
     if(x1 == 2){  // if we press again x=2  
        digitalWrite(led1, LOW); // if x = 2 led LOW
        x1 =0;   // making x = 0 for the next loop
   now1 = millis();

// ************************************************************ LED_BUTTON 2
int led2 = 4;
int button2 = 7;

long now2 = 0;
long interval2 = 1000;
int x2 = 0;
void Button1_Led2(){
   if(millis() - now2 >= interval2){
  int valofbutton2 = digitalRead(button2); //value of the button 0 or 1 (LOW or HIGH) 
   if(valofbutton2 == 1){ //if button HIGH
     x2++;  // x+1;  x=1
     if(x2 == 1){  //if x = 1 
        digitalWrite(led2, HIGH); //then led HIGH
     if(x2 == 2){  // if we press again x=2  
        digitalWrite(led2, LOW); // if x = 2 led LOW
        x2 =0;   // making x = 0 for the next loop
   now2 = millis();

// ************************************************************ LED_BUTTON 3
int led3 = 5;
int button3 = 8;

long now3 = 0;
long interval3 = 1000;
int x3 = 0;
void Button1_Led3(){
   if(millis() - now3 >= interval3){
  int valofbutton3 = digitalRead(button3); //value of the button 0 or 1 (LOW or HIGH) 
   if(valofbutton3 == 1){ //if button HIGH
     x3++;  // x+1;  x=1
     if(x3 == 1){  //if x = 1 
        digitalWrite(led3, HIGH); //then led HIGH
     if(x3 == 2){  // if we press again x=2  
        digitalWrite(led3, LOW); // if x = 2 led LOW
        x3 =0;   // making x = 0 for the next loop
   now3 = millis();

// -----------------------------------------SETUP
void setup() {                
  radio.setChannel(108); //108 - 2.508 Ghz //0-124 2.4gHz-2.5gHz
  pinMode(led1, OUTPUT);  
  pinMode(button1, INPUT);
  pinMode(led2, OUTPUT);  
  pinMode(button3, INPUT);
  pinMode(led3, OUTPUT);  
  pinMode(button3, INPUT);

// -----------------------------------------LOOP
void loop() {

    dataToSend[0] = PotSpeed;     
    dataToSend[1] = PotY;    
    dataToSend[2] = PotX;     
    dataToSend[3] = x1;    
    dataToSend[4] = x2;    
    dataToSend[5] = x3;
    radio.write(dataToSend, sizeof(dataToSend));


Transmitter circuit
Personal Design using EAGLE software


Similar projects you might like


Project in progress by Team Petoi

  • 2,190 respects

Autopilot Drone

Project in progress by suhaskd

  • 170 respects

Arduino Quadcopter

Project tutorial by RoboCircuits

  • 138 respects

Autonomous Drone / UAV Project For Plane

Project in progress by The Architect

  • 83 respects

Solar Panel Sun Tracker - Phone Charger

Project tutorial by FIELDING

  • 251 respects

Security Access Using RFID Reader

by Aritro Mukherjee

  • 500 respects
Add projectSign up / Login