Things used in this project

Schematics

Connection between Arduino and xbee
This is the connection between Arduino and xbee, same for the Arduino that connect to the computer and the Arduino on drone
Collegamento%20arduino%20xbee bb

Code

Master CodeC/C++
This code is loaded on arduino that is connects to the PC, to control the Arduino on drone
first you need to download library 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);      
      }

    }
  }
}
Slave C/C++
This code is loaded sull'arduino that mounts on the drone, which will provide the data to the drone to the ground
first you need to download library https://www.pjrc.com/teensy/td_libs_AltSoftSerial.html
and http://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;
  }
}

Credits

Img 8770
Andrea Bertorelli

student high school, telecommunication.

Replications

Did you replicate this project? Share it!

Love this project? Think it could be improved? Tell us what you think!

Give feedback

Comments

Similar projects you might like

Flightduino 101
Intermediate
  • 132
  • 4

Full instructions

A drone project that uses the Neural Pattern Recognition Module and other aspects of the Curie Module to advantage for creating a cool drone

Arduino 101 BLE App
Intermediate
  • 1,376
  • 18

Work in progress

I want to show you how to make an application and connect it with the Arduino 101 platform for Internet of things applications.

Bluetooth smart home
Intermediate
  • 226
  • 4

Full instructions

A concept showing smart home control and automation with Arduino 101, accompanied by a custom Android application.

Avoid Injuries with Smart Backpack
Intermediate
  • 796
  • 11

Full instructions

Smart Backpack helps you to avoid injuries caused by backpacks by alerting you about improper uses.

FM radio
Intermediate
  • 7,097
  • 32

Full instructions

Build a great sounding FM radio with a cool display using an Arduino Nano and the Sparkfun Si4703 FM tuner breakout

Aquariumatic
Intermediate
  • 1,296
  • 12

Work in progress

Aquarium monitor with automation, Web GUI & IOT. Daisychain units can control multiple tanks all from the one master unit.

ProjectsCommunitiesContestsLiveAppsBetaFree StoreBlogAdd projectSign up / Login
Respect project
Feedback