AR DRONE 和 1SHEELD - 探索无人机周围的世界
组件和用品
| × | 2 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 2 |
关于这个项目
我们的项目可以控制智能手机记录的各种飞行数据,并实时传输到您的电脑,如加速度传感器、GPS 位置、噪音无人机、方向、陀螺仪等。
我们使用两个 Arduino 进行数据控制,一个安装在无人机上,一个安装在计算机上,两个 xBee 将 1sheeld 的远程数据传输到您的电脑。
一种利用智能手机的所有功能和传感器的有趣而简单的方式,还可以拍摄一些漂亮的照片;)
代码
- 主代码
- 奴隶
掌握代码C/C++
此代码加载在连接到 PC 的 arduino 上,以控制无人机上的 Arduino首先你需要下载库 https://www.pjrc.com/teensy/td_libs_AltSoftSerial.html
#includeint verifica=0;AltSoftSerial xBee;char c;char h;char stop='s ';void setup() { Serial.begin(115200); Serial.println("大师OK"); Serial.println(); Serial.println("数字为:"); Serial.println("'o'方向传感器值"); Serial.println("'a'加速度传感器值"); Serial.println("'b'亮度传感器值"); Serial.println("'g' GPS 位置"); Serial.println("'m' 麦克风噪音"); Serial.println("'p'拍照"); 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'){ //-----------方向------------------------------------- ---- if(c=='o'){ Serial.println("方向"); c='1'; xBee.print(c); for(int i=0; i<10;i++){ 延迟(20); c='o'; xBee.print(c);做{ h =0; h=xBee.read(); Serial.print(h); } while(xBee.available()>0);延迟(100); i=i-1; if(Serial.available()>0); if(stop==Serial.read()){ Serial.println("分析停止"); c='0'; Serial.println(); Serial.println("数字为:"); Serial.println("'o'方向传感器值"); Serial.println("'a'加速度传感器值"); Serial.println("'b'亮度传感器值"); Serial.println("'g' GPS 位置"); Serial.println("'m' 麦克风噪音"); Serial.println("'p'拍照"); xBee.print(c);我=11; } } } //-----------加速------------------- ------- if(c=='a'){ Serial.println("加速"); c='2'; xBee.print(c); for(int i=0; i<10;i++){ 延迟(20); c='a'; xBee.print(c);做{ h =0; h=xBee.read(); Serial.print(h); } while(xBee.available()>0);延迟(100); i=i-1; if(Serial.available()>0); if(stop==Serial.read()){ Serial.println("分析停止"); c='0'; Serial.println(); Serial.println("数字为:"); Serial.println("'o'方向传感器值"); Serial.println("'a'加速度传感器值"); Serial.println("'b'亮度传感器值"); Serial.println("'g' GPS 位置"); Serial.println("'m' 麦克风噪音"); Serial.println("'p'拍照"); xBee.print(c);我=11; } } } //-----------亮度------------------- ------ if(c=='b'){ Serial.println("亮度"); c='3'; xBee.print(c); for(int i=0; i<10;i++){ 延迟(20); c='b'; xBee.print(c);做{ h =0; h=xBee.read(); Serial.print(h); } while(xBee.available()>0);延迟(50); i=i-1; if(Serial.available()>0); if(stop==Serial.read()){ Serial.println("分析停止"); c='0'; Serial.println(); Serial.println("数字为:"); Serial.println("'o'方向传感器值"); Serial.println("'a'加速度传感器值"); Serial.println("'b'亮度传感器值"); Serial.println("'g' GPS 位置"); Serial.println("'m' 麦克风噪音"); Serial.println("'p'拍照"); xBee.print(c);我=11; } } } // - - - - - 全球定位系统 - - - - - - - - - - - - - - - - - ------- if(c=='g'){ Serial.println("Posizione GPS'"); c='4'; xBee.print(c); for(int i=0; i<10;i++){ 延迟(20); c='g'; xBee.print(c);做{ h =0; h=xBee.read(); Serial.print(h); } while(xBee.available()>0);延迟(500); i=i-1; if(Serial.available()>0); if(stop==Serial.read()){ Serial.println("分析停止"); c='0'; Serial.println(); Serial.println("数字为:"); Serial.println("'o'方向传感器值"); Serial.println("'a'加速度传感器值"); Serial.println("'b'亮度传感器值"); Serial.println("'g' GPS 位置"); Serial.println("'m' 麦克风噪音"); Serial.println("'p'拍照"); xBee.print(c);我=11; } } } //-----------MICROFONO------------------ ------- if(c=='m'){ Serial.println("麦克风"); c='5'; xBee.print(c); for(int i=0; i<10;i++){ 延迟(20); c='m'; xBee.print(c);做{ h =0; h=xBee.read(); Serial.print(h); } while(xBee.available()>0);延迟(100); i=i-1; if(Serial.available()>0); if(stop==Serial.read()){ Serial.println("分析停止"); c='0'; Serial.println(); Serial.println("数字为:"); Serial.println("'o'方向传感器值"); Serial.println("'a'加速度传感器值"); Serial.println("'b'亮度传感器值"); Serial.println("'g' GPS 位置"); Serial.println("'m' 麦克风噪音"); Serial.println("'p'拍照"); xBee.print(c);我=11; } } } // - - - - - 图片 - - - - - - - - - - - - - - - - - ------- if(c=='p'){ Serial.println("拍照"); c='6'; xBee.print(c);延迟(20); c='p'; Serial.println(); Serial.println("数字为:"); Serial.println("'o'方向传感器值"); Serial.println("'a'加速度传感器值"); Serial.println("'b'亮度传感器值"); Serial.println("'g' GPS 位置"); Serial.println("'m' 麦克风噪音"); Serial.println("'p'拍照"); xBee.print(c); } } }}
从服务器 C/C++
此代码加载安装在无人机上的 sull'arduino,它将向地面提供无人机的数据首先你需要下载库 https://www.pjrc.com/teensy/td_libs_AltSoftSerial.html
和 http://1sheeld.com/downloads/
#include#include char variabile;AltSoftSerial xBee;char master;int voce=0;void setup(){ Serial.begin (115200); Serial.println("从机正常"); OneSheeld.begin(); xBee.begin(9600);}void loop(){ receiveEvent(); requestEvent();}void receiveEvent(){ while(xBee.available()>0){ master=xBee.read();变量=主; }}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());变量=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());变量=0; } if(variabile=='g'){ xBee.print("纵向:"); xBee.print(GPS.getLongitude()); xBee.print(" 纬度;:"); xBee.println(GPS.getLatitude());变量=0; } if(variabile=='m'){ xBee.print("db:"); xBee.println(Mic.getValue());变量=0; } if(variabile=='b'){ xBee.print("流明:"); xBee.println(LightSensor.getValue());变量=0; } if(variabile=='p'){ Camera.setFlash(ON); Camera.rearCapture(); xBee.println("图片已拍摄");变量=0; } if(variabile=='1'){ TextToSpeech.say("分析方向");变量=0; } if(variabile=='2'){ TextToSpeech.say("分析加速度");变量=0; } if(variabile=='3'){ TextToSpeech.say("分析亮度强度");变量=0; } if(variabile=='4'){ TextToSpeech.say("分析GPS位置");变量=0; } if(variabile=='5'){ TextToSpeech.say("分析分贝噪声");变量=0; } if(variabile=='6'){ TextToSpeech.say("拍照");变量=0; } if(variabile=='0'){ TextToSpeech.say("分析停止");变量=0; }}
示意图
这是Arduino和xbee的连接,连接电脑的Arduino和无人机上的Arduino也是一样制造工艺