Wednesday, 23 April 2014
You are here: Home > Arduino Tutorial > Arduino – Tutorial Costruire un Drone con webcam telecomandato da Pc tramite CSharp

Arduino – Tutorial Costruire un Drone con webcam telecomandato da Pc tramite CSharp

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 )

—————————————————————————————————————————-

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

 

Questo articolo viene aggiornato periodicamente con nuove caratteristiche. E’ da considerarsi parzialmente completo,  nella versione attuale è già possibile pilotare il drone.  Non ho ancora rilasciato i sorgenti dei software in quanto ancora instabili e richiedono ancora un pò di lavoro per essere ottimizzati.

Se vuoi rimanere aggiornato iscriviti alla mia newsletter, non riceverai mai spam ma un email periodica con gli ultimi aggiornamenti. Iscriviti alla Newsletter 

Presto in arrivo lo schema di montaggio con foto

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