AR Drone 2.0 + 1Sheeld: Streaming Data Penerbangan Real-Time ke PC
Komponen dan Perlengkapan
 | | × | 2 | |
 | | × | 1 | |
| | × | 1 | |
| | × | 2 | |
Tentang Proyek Ini
Proyek kami memungkinkan pengendalian berbagai data penerbangan yang direkam oleh smartphone dan ditransmisikan secara real-time ke komputer, seperti sensor akselerometer, posisi GPS, derau drone, orientasi, giroskop, dan lainnya.
Kami menggunakan dua Arduino untuk pengontrolan data: satu dipasang pada drone, dan satu lagi pada komputer. Dua modul xBee digunakan untuk berkomunikasi dan mengirim data jarak jauh dari 1Sheeld ke komputer Anda.
Cara menyenangkan dan mudah untuk memanfaatkan semua fitur dan sensor smartphone, sekaligus mengambil beberapa foto bagus ;)
Kode
- Kode Master
- Kode Peranda (Slave)
Kode MasterC/C++
Kode ini dimuat pada Arduino yang terhubung ke PC, untuk mengontrol Arduino pada drone. Pertama, Anda perlu mengunduh perpustakaan https://www.pjrc.com/teensy/td_libs_AltSoftSerial.html
#include <AltSoftSerial.h> int verifica=0; AltSoftSerial xBee; char c; char h; char stop='s'; void setup() { Serial.begin(115200); Serial.println("Master OK"); Serial.println(); Serial.println("Digit for:"); Serial.println("'o' orientation sensor value"); Serial.println("'a' acceleration sensor value"); Serial.println("'b' brightness sensor value"); Serial.println("'g' GPS position"); Serial.println("'m' microfone noise"); Serial.println("'p' take a picture"); xBee.begin(9600); } void loop() { Serial.flush(); if (Serial.available()>0) { c = Serial.read(); if(c=='o'||c=='a'||c=='m'||c=='g'||c=='b'||c=='p'){ //----------Orientament----------------------------------------- if(c=='o'){ Serial.println("Orientament"); c='1'; xBee.print(c); for(int i=0; i<10;i++){ delay(20); c='o'; xBee.print(c); do{ h=0; h=xBee.read(); Serial.print(h); } while(xBee.available()>0); delay(100); i=i-1; if(Serial.available()>0); if(stop==Serial.read()){ Serial.println("Analysis Stopped"); c='0'; Serial.println(); Serial.println("Digit for:"); Serial.println("'o' orientation sensor value"); Serial.println("'a' acceleration sensor value"); Serial.println("'b' brightness sensor value"); Serial.println("'g' GPS position"); Serial.println("'m' microfone noise"); Serial.println("'p' take a picture"); xBee.print(c); i=11; } } } //----------Acceleration----------------------------------------- if(c=='a'){ Serial.println("Acceleration"); c='2'; xBee.print(c); for(int i=0; i<10;i++){ delay(20); c='a'; xBee.print(c); do{ h=0; h=xBee.read(); Serial.print(h); } while(xBee.available()>0); delay(100); i=i-1; if(Serial.available()>0); if(stop==Serial.read()){ Serial.println("Analysis Stopped"); c='0'; Serial.println(); Serial.println("Digit for:"); Serial.println("'o' orientation sensor value"); Serial.println("'a' acceleration sensor value"); Serial.println("'b' brightness sensor value"); Serial.println("'g' GPS position"); Serial.println("'m' microfone noise"); Serial.println("'p' take a picture"); xBee.print(c); i=11; } } } //----------Brightness---------------------------------------- if(c=='b'){ Serial.println("Brightness"); c='3'; xBee.print(c); for(int i=0; i<10;i++){ delay(20); c='b'; xBee.print(c); do{ h=0; h=xBee.read(); Serial.print(h); } while(xBee.available()>0); delay(50); i=i-1; if(Serial.available()>0); if(stop==Serial.read()){ Serial.println("Analysis Stopped"); c='0'; Serial.println(); Serial.println("Digit for:"); Serial.println("'o' orientation sensor value"); Serial.println("'a' acceleration sensor value"); Serial.println("'b' brightness sensor value"); Serial.println("'g' GPS position"); Serial.println("'m' microfone noise"); Serial.println("'p' take a picture"); xBee.print(c); i=11; } } } //----------GPS----------------------------------------- if(c=='g'){ Serial.println("Posizione GPS'"); c='4'; xBee.print(c); for(int i=0; i<10;i++){ delay(20); c='g'; xBee.print(c); do{ h=0; h=xBee.read(); Serial.print(h); } while(xBee.available()>0); delay(500); i=i-1; if(Serial.available()>0); if(stop==Serial.read()){ Serial.println("Analysis Stopped"); c='0'; Serial.println(); Serial.println("Digit for:"); Serial.println("'o' orientation sensor value"); Serial.println("'a' acceleration sensor value"); Serial.println("'b' brightness sensor value"); Serial.println("'g' GPS position"); Serial.println("'m' microfone noise"); Serial.println("'p' take a picture"); xBee.print(c); i=11; } } } //----------MICROFONO----------------------------------------- if(c=='m'){ Serial.println("Microphone"); c='5'; xBee.print(c); for(int i=0; i<10;i++){ delay(20); c='m'; xBee.print(c); do{ h=0; h=xBee.read(); Serial.print(h); } while(xBee.available()>0); delay(100); i=i-1; if(Serial.available()>0); if(stop==Serial.read()){ Serial.println("Analysis Stopped"); c='0'; Serial.println(); Serial.println("Digit for:"); Serial.println("'o' orientation sensor value"); Serial.println("'a' acceleration sensor value"); Serial.println("'b' brightness sensor value"); Serial.println("'g' GPS position"); Serial.println("'m' microfone noise"); Serial.println("'p' take a picture"); xBee.print(c); i=11; } } } //----------PICTURES----------------------------------------- if(c=='p'){ Serial.println("Take a pictures"); c='6'; xBee.print(c); delay(20); c='p'; Serial.println(); Serial.println("Digit for:"); Serial.println("'o' orientation sensor value"); Serial.println("'a' acceleration sensor value"); Serial.println("'b' brightness sensor value"); Serial.println("'g' GPS position"); Serial.println("'m' microfone noise"); Serial.println("'p' take a picture"); xBee.print(c); } } } }
Kode Peranda (Slave)C/C++
Kode ini dimuat pada Arduino yang dipasang pada drone, yang akan menyediakan data dari drone ke stasiun tanah. Pertama, Anda perlu mengunduh perpustakaan https://www.pjrc.com/teensy/td_libs_AltSoftSerial.html dan https://1sheeld.com/downloads/
#include <OneSheeld.h> #include<AltSoftSerial.h> char variabile; AltSoftSerial xBee; char master; int voce=0; void setup(){ Serial.begin(115200); Serial.println("Slave ok"); OneSheeld.begin(); xBee.begin(9600); } void loop(){ receiveEvent(); requestEvent(); } void receiveEvent(){ while(xBee.available()>0){ master=xBee.read(); variabile=master; } } void requestEvent(){ if(variabile=='o'){ xBee.print("Asse x: "); xBee.print(OrientationSensor.getX()); xBee.print(" Asse y: "); xBee.print(OrientationSensor.getY()); xBee.print(" Asse z: "); xBee.println(OrientationSensor.getZ()); variabile=0; } if(variabile=='a'){ xBee.print("Asse x: "); xBee.print(AccelerometerSensor.getX()); xBee.print(" Asse y: "); xBee.print(AccelerometerSensor.getX()); xBee.print(" Asse z: "); xBee.println(AccelerometerSensor.getX()); variabile=0; } if(variabile=='g'){ xBee.print("Longitudine: "); xBee.print(GPS.getLongitude()); xBee.print(" Latitudine;: "); xBee.println(GPS.getLatitude()); variabile=0; } if(variabile=='m'){ xBee.print("db: "); xBee.println(Mic.getValue()); variabile=0; } if(variabile=='b'){ xBee.print("Lumen: "); xBee.println(LightSensor.getValue()); variabile=0; } if(variabile=='p'){ Camera.setFlash(ON); Camera.rearCapture(); xBee.println("Pictures taken"); variabile=0; } if(variabile=='1'){ TextToSpeech.say("analysis orientation"); variabile=0; } if(variabile=='2'){ TextToSpeech.say("analysis acceleration "); variabile=0; } if(variabile=='3'){ TextToSpeech.say("analysis brightness intensity"); variabile=0; } if(variabile=='4'){ TextToSpeech.say("analysis GPS position"); variabile=0; } if(variabile=='5'){ TextToSpeech.say("analysis decibel noise"); variabile=0; } if(variabile=='6'){ TextToSpeech.say("Taking a picture"); variabile=0; } if(variabile=='0'){ TextToSpeech.say("analysis stopped"); variabile=0; } }
Skema Rangkaian
Ini adalah koneksi antara Arduino dan xbee, sama untuk Arduino yang terhubung ke komputer dan Arduino pada drone.