Costruisci il tuo Drone in casa con Arduino - Guida Completa con links e foto


NON TROVERETE ALTRI ARTICOLI COSI DETTAGLIATI IN TUTTO INTERNET

In questo articolo fornisco l’elenco dei componenti e i link d’acquisto per  creare il vostro drone (quadricottero) telecomandato da pc. Chi non ha mai sognato almeno una volta di avere un giocattolo Realmente Hi Tech da mandare in giro. A tutorial finito avrete un drone a regola d’arte.
Partiamo dal punto chiave. Cosa Acquistare ?



Hardware Necessario :
Materiale Meccanico Necessario :
  • 1x Drone Frame – Telaio ( Link Acquisto )
  • 2x di questi per un estetica migliore  ( Link Acquisto )
  • 30x Viti con bullone, dal vostro negozio  ferramenta di fiducia
  • 4x motori -> Turnigy D2836/11 750KV Brushless Outrunner Motor ( Link Acquisto ) Carico Massimo 1,8 Kg
  • 4x Regolartori di velocità per motori – Hobbyking SS Series 25-30A ESC ( Link Acquisto )
  • 2x coppie di eliche – Slow Fly Electric Prop 12×4.5R SF ( Link Acquisto )
  • 1x Connettori vari – Per control board ( Link Acquisto )
Materiale  Opzionale :
—————————————————————————————————————————
Software Necessario :
  • Arduino IDE ( Link Download )
  • Programma in C# da me creato per installare il sistema operativo del drone su Arduino ( Link Download )
  • Programma in C# da me creato per testare i motori con arduino ed inviare segnali alla control board ( Link Download )
  • Programma in C# per telecomandare tramite wifi XBee il nostro drone ( Link Download )
—————————————————————————————————————————-
In questa guida ho emulato i segnali del radi-comando tramite Arduino, in questo modo posso pilotare il Drone dal pc
Sorgente Arduino -> Controllare la HobbyKing Multi-Rotor Control Board V3.0 con Arduino (da scrivere dentro ad Arduino tramite la sua IDE)


#include
Servo ail;
Servo ele;
Servo thr;
Servo rudd;

void setup()
{
  Serial.begin(9600); // Abilito l'ascolto dei comandi tramite seriale

  ail.attach(3); // AIL
  ele.attach(5); // ELE
  thr.attach(9); // THR
  rudd.attach(11); // RUDD

}

void sail(int speed){
  int angle = map(speed, 0, 100, 0, 180);
  ail.write(angle);
}

void sele(int speed){
  int angle = map(speed, 0, 100, 0, 180);
  ele.write(angle);
}

void sthr(int speed){
  int angle = map(speed, 0, 100, 0, 180);
  thr.write(angle);
}

void srudd(int speed){
  int angle = map(speed, 0, 100, 0, 180);
  rudd.write(angle);
}

void loop() // Inizio Loop
{

  int speed;

  if (Serial.available() > 0) {
    int comando = Serial.read(); // Creo una variabile chiamata Comando
    // Se comando è uguale ad 1 

   // AIL
   //-----------------------------------------------------------------------------------------
   if (comando == 10) {  sail(0);  Serial.println("AIL 0"); delay(100);  }
   if (comando == 11) {  sail(10);  Serial.println("AIL 10"); delay(100);  }
   if (comando == 12) {  sail(20);  Serial.println("AIL 20"); delay(100);  }
   if (comando == 13) {  sail(30);  Serial.println("AIL 30"); delay(100);  }
   if (comando == 14) {  sail(40);  Serial.println("AIL 40"); delay(100);  }
   if (comando == 15) {  sail(50);  Serial.println("AIL 50"); delay(100);  }
   if (comando == 16) {  sail(60);  Serial.println("AIL 60"); delay(100);  }
   if (comando == 17) {  sail(70);  Serial.println("AIL 70"); delay(100);  }
   if (comando == 18) {  sail(80);  Serial.println("AIL 80"); delay(100);  }
   if (comando == 19) {  sail(90);  Serial.println("AIL 90"); delay(100);  }
   if (comando == 110) {  sail(100);  Serial.println("AIL 100"); delay(100);  }

   // ELE
   //-----------------------------------------------------------------------------------------
   if (comando == 20) {  sele(0);  Serial.println("ELE 0"); delay(100);  }
   if (comando == 21) {  sele(10);  Serial.println("ELE 10"); delay(100);  }
   if (comando == 22) {  sele(20);  Serial.println("ELE 20"); delay(100);  }
   if (comando == 23) {  sele(30);  Serial.println("ELE 30"); delay(100);  }
   if (comando == 24) {  sele(40);  Serial.println("ELE 40"); delay(100);  }
   if (comando == 25) {  sele(50);  Serial.println("ELE 50"); delay(100);  }
   if (comando == 26) {  sele(60);  Serial.println("ELE 60"); delay(100);  }
   if (comando == 27) {  sele(70);  Serial.println("ELE 70"); delay(100);  }
   if (comando == 28) {  sele(80);  Serial.println("ELE 80"); delay(100);  }
   if (comando == 29) {  sele(90);  Serial.println("ELE 90"); delay(100);  }
   if (comando == 210) {  sele(100);  Serial.println("ELE 100"); delay(100);  }

   // THR
   //-----------------------------------------------------------------------------------------
   if (comando == 30) {  sthr(0);  Serial.println("THR 0"); delay(100);  }
   if (comando == 31) {  sthr(10);  Serial.println("THR 10"); delay(100);  }
   if (comando == 32) {  sthr(20);  Serial.println("THR 20"); delay(100);  }
   if (comando == 33) {  sthr(30);  Serial.println("THR 30"); delay(100);  }
   if (comando == 34) {  sthr(40);  Serial.println("THR 40"); delay(100);  }
   if (comando == 35) {  sthr(50);  Serial.println("THR 50"); delay(100);  }
   if (comando == 36) {  sthr(60);  Serial.println("THR 60"); delay(100);  }
   if (comando == 37) {  sthr(70);  Serial.println("THR 70"); delay(100);  }
   if (comando == 38) {  sthr(80);  Serial.println("THR 80"); delay(100);  }
   if (comando == 39) {  sthr(90);  Serial.println("THR 90"); delay(100);  }
   if (comando == 310) {  sthr(100);  Serial.println("THR 100"); delay(100);  }

   // RUDD
   //-----------------------------------------------------------------------------------------
   if (comando == 40) {  srudd(0);  Serial.println("RUDD 0"); delay(100);  }
   if (comando == 41) {  srudd(10);  Serial.println("RUDD 10"); delay(100);  }
   if (comando == 42) {  srudd(20);  Serial.println("RUDD 20"); delay(100);  }
   if (comando == 43) {  srudd(30);  Serial.println("RUDD 30"); delay(100);  }
   if (comando == 44) {  srudd(40);  Serial.println("RUDD 40"); delay(100);  }
   if (comando == 45) {  srudd(50);  Serial.println("RUDD 50"); delay(100);  }
   if (comando == 46) {  srudd(60);  Serial.println("RUDD 60"); delay(100);  }
   if (comando == 47) {  srudd(70);  Serial.println("RUDD 70"); delay(100);  }
   if (comando == 48) {  srudd(80);  Serial.println("RUDD 80"); delay(100);  }
   if (comando == 49) {  srudd(90);  Serial.println("RUDD 90"); delay(100);  }
   if (comando == 410) {  srudd(100);  Serial.println("RUDD 100"); delay(100);  }

   Serial.flush();
  }

} // Fine Loop

——————————————————————————————————————————————-
Riepilogo foto del materiale acquistato




Fonte:http://www.bartoloilliano.com/arduino-tutorial-costruire-un-drone-con-webcam-telecomandato-da-pc-tramite-csharp.html