Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

AR Drone 2.0 + 1Sheeld: Streaming de datos de vuelo en tiempo real a PC

Componentes y suministros

Arduino Mega 2560 × 2
1Sheeld × 1
AR Drone 2.0 × 1
Módulos XBee × 2

Sobre el proyecto

Este proyecto permite controlar y monitorizar diversos datos de vuelo registrados por un smartphone y transmitidos en tiempo real a tu PC: acelerómetro, posición GPS, nivel de ruido del dron, orientación, giroscopio y más.

Se utilizan dos placas Arduino para el control de datos: una montada en el dron y otra conectada al ordenador, junto con dos módulos XBee para comunicar los datos remotos del 1Sheeld al PC.

Una forma divertida y sencilla de aprovechar todas las características y sensores del smartphone, ¡y también tomar buenas fotos!

Código

Código Maestro (C/C++)

Este código se carga en el Arduino conectado al PC para controlar el Arduino del dron. Primero necesitas descargar la librería AltSoftSerial.

#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("Pulsa para:");
  Serial.println("'o' valor sensor orientación");
  Serial.println("'a' valor sensor aceleración");
  Serial.println("'b' valor sensor brillo");
  Serial.println("'g' posición GPS");
  Serial.println("'m' ruido micrófono");
  Serial.println("'p' tomar foto");
  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'){
      //--- Orientación ---
      if(c=='o'){
        Serial.println("Orientación");
        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("Análisis detenido"); c='0';
            Serial.println(); Serial.println("Pulsa para:");
            Serial.println("'o' valor sensor orientación");
            Serial.println("'a' valor sensor aceleración");
            Serial.println("'b' valor sensor brillo");
            Serial.println("'g' posición GPS");
            Serial.println("'m' ruido micrófono");
            Serial.println("'p' tomar foto");
            xBee.print(c); i=11;
          }
        }
      }
      //--- Aceleración ---
      if(c=='a'){
        Serial.println("Aceleración");
        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("Análisis detenido"); c='0';
            Serial.println(); Serial.println("Pulsa para:");
            Serial.println("'o' valor sensor orientación");
            Serial.println("'a' valor sensor aceleración");
            Serial.println("'b' valor sensor brillo");
            Serial.println("'g' posición GPS");
            Serial.println("'m' ruido micrófono");
            Serial.println("'p' tomar foto");
            xBee.print(c); i=11;
          }
        }
      }
      //--- Brillo ---
      if(c=='b'){
        Serial.println("Brillo");
        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("Análisis detenido"); c='0';
            Serial.println(); Serial.println("Pulsa para:");
            Serial.println("'o' valor sensor orientación");
            Serial.println("'a' valor sensor aceleración");
            Serial.println("'b' valor sensor brillo");
            Serial.println("'g' posición GPS");
            Serial.println("'m' ruido micrófono");
            Serial.println("'p' tomar foto");
            xBee.print(c); i=11;
          }
        }
      }
      //--- GPS ---
      if(c=='g'){
        Serial.println("Posición 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("Análisis detenido"); c='0';
            Serial.println(); Serial.println("Pulsa para:");
            Serial.println("'o' valor sensor orientación");
            Serial.println("'a' valor sensor aceleración");
            Serial.println("'b' valor sensor brillo");
            Serial.println("'g' posición GPS");
            Serial.println("'m' ruido micrófono");
            Serial.println("'p' tomar foto");
            xBee.print(c); i=11;
          }
        }
      }
      //--- Micrófono ---
      if(c=='m'){
        Serial.println("Micrófono");
        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("Análisis detenido"); c='0';
            Serial.println(); Serial.println("Pulsa para:");
            Serial.println("'o' valor sensor orientación");
            Serial.println("'a' valor sensor aceleración");
            Serial.println("'b' valor sensor brillo");
            Serial.println("'g' posición GPS");
            Serial.println("'m' ruido micrófono");
            Serial.println("'p' tomar foto");
            xBee.print(c); i=11;
          }
        }
      }
      //--- Foto ---
      if(c=='p'){
        Serial.println("Tomar foto");
        c='6'; xBee.print(c); delay(20); c='p';
        Serial.println(); Serial.println("Pulsa para:");
        Serial.println("'o' valor sensor orientación");
        Serial.println("'a' valor sensor aceleración");
        Serial.println("'b' valor sensor brillo");
        Serial.println("'g' posición GPS");
        Serial.println("'m' ruido micrófono");
        Serial.println("'p' tomar foto");
        xBee.print(c);
      }
    }
  }
}

Código Esclavo (C/C++)

Este código se carga en el Arduino montado en el dron, que proporcionará los datos al suelo. Necesitas las librerías AltSoftSerial y 1Sheeld.

#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("Eje X: "); xBee.print(OrientationSensor.getX());
    xBee.print(" Eje Y: "); xBee.print(OrientationSensor.getY());
    xBee.print(" Eje Z: "); xBee.println(OrientationSensor.getZ());
    variabile=0;
  }
  if(variabile=='a'){
    xBee.print("Eje X: "); xBee.print(AccelerometerSensor.getX());
    xBee.print(" Eje Y: "); xBee.print(AccelerometerSensor.getY());
    xBee.print(" Eje Z: "); xBee.println(AccelerometerSensor.getZ());
    variabile=0;
  }
  if(variabile=='g'){
    xBee.print("Longitud: "); xBee.print(GPS.getLongitude());
    xBee.print(" Latitud: "); xBee.println(GPS.getLatitude());
    variabile=0;
  }
  if(variabile=='m'){
    xBee.print("dB: "); xBee.println(Mic.getValue());
    variabile=0;
  }
  if(variabile=='b'){
    xBee.print("Lúmenes: "); xBee.println(LightSensor.getValue());
    variabile=0;
  }
  if(variabile=='p'){
    Camera.setFlash(ON);
    Camera.rearCapture();
    xBee.println("Foto tomada");
    variabile=0;
  }
  if(variabile=='1'){ TextToSpeech.say("análisis orientación"); variabile=0; }
  if(variabile=='2'){ TextToSpeech.say("análisis aceleración"); variabile=0; }
  if(variabile=='3'){ TextToSpeech.say("análisis intensidad brillo"); variabile=0; }
  if(variabile=='4'){ TextToSpeech.say("análisis posición GPS"); variabile=0; }
  if(variabile=='5'){ TextToSpeech.say("análisis decibelios ruido"); variabile=0; }
  if(variabile=='6'){ TextToSpeech.say("Tomando foto"); variabile=0; }
  if(variabile=='0'){ TextToSpeech.say("análisis detenido"); variabile=0; }
}

Esquemáticos

Esta es la conexión entre Arduino y XBee, idéntica para el Arduino conectado al ordenador y el montado en el dron.

AR Drone 2.0 + 1Sheeld: Streaming de datos de vuelo en tiempo real a PC

Proceso de manufactura

  1. Drone Pi: Quadcopter Multiwii y Raspberry Pi de doble modo para control por smartphone y mando a distancia
  2. La IA mapea asentamientos informales globales desde satélites de baja resolución
  3. Domine la documentación de mantenimiento: Un enfoque confiable para proteger sus activos
  4. ¿Debería recubrir su bomba? Evaluando beneficios e inconvenientes
  5. Mejora Precisión y Rendimiento de tu Máquina Waterjet
  6. La revolución cloud: cómo el cloud computing transforma TI, seguridad y carreras
  7. Cómo los Smartphones Moldean el Futuro de los Coches Conectados
  8. 6 formas en que IA e IoT revolucionan las operaciones empresariales en 2019
  9. Insights de Edge Computing y estrategia IoT desde IoT World 2019
  10. Elbit Systems: Soluciones de compuestos líderes para Israel y EE. UU.
  11. Evolución de la Industria Global de Colorantes: Cambios Eco-Friendly, Rigor Regulatorio e Innovación Tecnológica