/DroneIno

Arduino code for ESP32 based DIY quadcopter drones, providing autonomous flight via artificial neural network.

Primary LanguageC

    |                      |   
    |                      |   
 ---4---                ---1---
    |\                    /|   
    | \                  / |   
       \                /      
         ---------------       
         |  DroneIno!  |       
         ---------------       
       /                \      
    | /                  \ |   
    |/                    \|   
 ---3---                ---2---
    |                      |   
    |                      |   

DroneIno

Arduino code for ESP32 based DIY quadcopter drones.


Usage

Clone this repo

git clone git@github.com:sebastiano123-c/DroneIno.git

or download the .zip file.

New update: PID auto-tuning!

Use the Artificial Neural Network (ANN) to get rid of the PID setting, take a closer look here.

Description

Based on the YMFC project, DroneIno allows you to control a quadcopter with:

  • gyroscope MPU6050;
  • radio controller and a receiver (e.g. FlySky);
  • 11.1V 3S >20C LiPo battery (2200mAh or 3800mAh);
  • four 30A ESCs;
  • four brushless DC motors (around 1000KV).

Optional addons:

  • ESP32-CAM;
  • BMP280 pressure sensor;
  • GPS Beitian BN-880.

The code is intended to be used with PlatformIO IDE.

Boards supported

  • ESP32 D1 R32 (note: the Wemos D1 R32 has shown problems with UART communication, so I recommend to choose an AZ-Delivery board);
  • ESP32 DevKit.

Features

                                1) Auto-leveling
                                2) Altitude hold
                                3) GPS (NOT TO USE AT THE MOMENT, DEVELOPING)
                                4) WiFi telemetry system 
                                5) SD flight data storage (only with ESP32-CAM)
                                6) Auto-tuning PID

Important: otherwise telemetry system is implemented using the native ESP32 WiFi, I strongly recommend to add DroneIno the Esp32-cam-telemetry for astonishing results (including video streaming and SD card storage).

Documentation

See the full wiki documentation for the circuit scheme and the detailed construction steps.

Here I will describe the main features of DroneIno.

Auto-leveling

DroneIno automatically corrects spurious drifts using the gyroscope signals.

Altitude hold

Altitude hold function uses barometric data of the barometer sensor, for example the BMP280.

GPS

NOT TO USE AT THE MOMENT Now on developing, DroneIno provides GPS for:

  • flight adjustments;
  • if you use ESP32-CAM telemetry, cool plots showing the flight route of DroneIno.

DroneInoTelemetry web app

DroneInoTelemetry is a web app that makes everything simple and easy reach. Use it to fine-tune your PID or fix gyroscope set point and altitude hold PID parameters.

Using this app, you can adjust on the fly these parameters and much more.

Connection using only ESP32

Exploiting the ESP32 native WiFi access point (AP), DroneInoTelemetry web app promises to be very smart in terms of time savings and feedback.

After connecting to DroneInoTelemetry network using the password DroneIno, dial in your browser's search bar 292.168.4.1. That's it. You don't have to download anything, it's just there.

Connection using ESP32-CAM

ESP32-CAM is best solution for the telemetry.

With the ESP32-CAM, the flying experience is much more interactive including:

  • on flight camera streaming;
  • tune camera settings;
  • set PID parameters;
  • pitch, roll, altitude pressure, flight mode and battery telemetry system.

See the complete esp32-cam-telemetry repo for the sketch and more information.

SD card for data storage

With esp32-cam-telemetry, you can also save your flight data on a SD card. All you need is a SD card formatted in FAT32 to put into your ESP32-CAM.

Auto-tuning PID

If you are tired of manually tune the PIDs of the quadcopter you should try the auto-tuning PID feature. PID can be automatically set using a neural network (NN). The PIDs gains are continuously updated by a neural network (NN) and sent to the control system. You can try the NN in examples section at BPNN lib.

Roadmap

Future improvements:

  • flight planned;
  • following me flight;
  • Gimbal CAM;
  • use other boards.

Previous version

The first version of DroneIno can be downloaded here as zip file. It is intended to work with Arduino IDE.

Author

Sebastiano Cocchi