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

Personal Healthcare Assistant PHA
Intermediate
  • 2,494
  • 119

Full instructions

Wearable for monitoring the health condition of patients who have suffered or are in risk of having a cardiac arrest.

Snacks Vending Machine powered by Arduino
Intermediate
  • 1,442
  • 25

Full instructions

Create a Vending Machine, powered by Arduino microcontroller, using "any cheap and easy to get" components available in local store.

Twitter Smart Home
Intermediate
  • 456
  • 7

Full instructions

Tweet to your timeline and control anything using a Raspberry Pi, Arduino, and the Twitter API.

Arduino Altair 8800 simulator
Intermediate
  • 6,524
  • 37

Full instructions

Ever wanted to play with the computer that sparked the personal computer age but don't have the cash to buy an Altair? Build your own!

Smart and Safe Cabinets
Intermediate
  • 481
  • 10

Full instructions

With 41% of poisonings happening to children under 4, more needs to be done. We use Amazon Alexa and Intel IoT to lock and unlock cabinets.

Smart and Safe Cabinets

Magic Smoke Replacement Team

Rocky Rover: Robotic Vision System PixyCam & Arduino 101
Intermediate
  • 4,935
  • 52

Full instructions

Using PixyCam and Intel Arduino 101 to drive this rover. Easy Robotic Vision system using PixyCam, rover reacts to the ball using Pan/Tilt.

ProjectsCommunitiesContestsLiveJobsFree StoreBlogAdd projectSign up / Login
Respect project