산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

AR 드론 2.0 + 1Sheeld: PC로 실시간 비행 데이터 스트리밍

부품 및 소모품

아두이노 메가 2560 ×2
1Sheeld ×1
AR 드론 2.0 ×1
XBee 모듈 ×2

프로젝트 개요

이 프로젝트는 스마트폰에 기록된 다양한 비행 데이터를 실시간으로 PC에 전송하여 제어합니다. 가속도계 센서, GPS 위치, 드론 소음, 방향, 자이로스코프 등 스마트폰의 모든 센서 데이터를 활용할 수 있습니다.

데이터 제어를 위해 두 개의 아두이노를 사용합니다. 하나는 드론에 장착하고, 다른 하나는 컴퓨터에 연결합니다. 두 개의 XBee 모듈이 1Sheeld의 원격 데이터를 PC로 전송하는 통신 역할을 합니다.

스마트폰의 모든 기능과 센서를 활용하는 재미있고 쉬운 방법이며, 멋진 사진 촬영도 가능합니다.

코드

마스터 코드 (PC 연결용 아두이노)

드론에 장착된 아두이노를 제어하기 위해 PC에 연결된 아두이노에 업로드되는 코드입니다. 먼저 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("명령 입력:");
  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++){
          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("분석 중지됨");
            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);
            i=11;
          }
        }
      }
      // 가속도 센서 데이터 요청
      if(c=='a'){
        Serial.println("가속도 센서");
        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("분석 중지됨");
            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);
            i=11;
          }
        }
      }
      // 조도 센서 데이터 요청
      if(c=='b'){
        Serial.println("조도 센서");
        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("분석 중지됨");
            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);
            i=11;
          }
        }
      }
      // GPS 데이터 요청
      if(c=='g'){
        Serial.println("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("분석 중지됨");
            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);
            i=11;
          }
        }
      }
      // 마이크 소음 데이터 요청
      if(c=='m'){
        Serial.println("마이크");
        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("분석 중지됨");
            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);
            i=11;
          }
        }
      }
      // 사진 촬영 요청
      if(c=='p'){
        Serial.println("사진 촬영");
        c='6';
        xBee.print(c);
        delay(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);
      }
    }
  }
}

슬레이브 코드 (드론 장착용 아두이노)

드론에 장착되어 지상국으로 데이터를 전송하는 아두이노용 코드입니다. AltSoftSerial 라이브러리와 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("X축: ");
    xBee.print(OrientationSensor.getX());
    xBee.print(" Y축: ");
    xBee.print(OrientationSensor.getY());
    xBee.print(" Z축: ");
    xBee.println(OrientationSensor.getZ());
    variabile=0;
  }
  if(variabile=='a'){
    xBee.print("X축: ");
    xBee.print(AccelerometerSensor.getX());
    xBee.print(" Y축: ");
    xBee.print(AccelerometerSensor.getY());
    xBee.print(" Z축: ");
    xBee.println(AccelerometerSensor.getZ());
    variabile=0;
  }
  if(variabile=='g'){
    xBee.print("경도: ");
    xBee.print(GPS.getLongitude());
    xBee.print(" 위도: ");
    xBee.println(GPS.getLatitude());
    variabile=0;
  }
  if(variabile=='m'){
    xBee.print("데시벨: ");
    xBee.println(Mic.getValue());
    variabile=0;
  }
  if(variabile=='b'){
    xBee.print("루멘: ");
    xBee.println(LightSensor.getValue());
    variabile=0;
  }
  if(variabile=='p'){
    Camera.setFlash(ON);
    Camera.rearCapture();
    xBee.println("사진 촬영 완료");
    variabile=0;
  }
  if(variabile=='1'){
    TextToSpeech.say("방향 분석 중");
    variabile=0;
  }
  if(variabile=='2'){
    TextToSpeech.say("가속도 분석 중");
    variabile=0;
  }
  if(variabile=='3'){
    TextToSpeech.say("밝기 분석 중");
    variabile=0;
  }
  if(variabile=='4'){
    TextToSpeech.say("GPS 위치 분석 중");
    variabile=0;
  }
  if(variabile=='5'){
    TextToSpeech.say("소음 분석 중");
    variabile=0;
  }
  if(variabile=='6'){
    TextToSpeech.say("사진 촬영 중");
    variabile=0;
  }
  if(variabile=='0'){
    TextToSpeech.say("분석 중지됨");
    variabile=0;
  }
}

회로도

아두이노와 XBee 간의 연결입니다. 컴퓨터에 연결된 아두이노와 드론에 장착된 아두이노 모두 동일한 방식으로 연결됩니다.

AR 드론 2.0 + 1Sheeld: PC로 실시간 비행 데이터 스트리밍

제조공정

  1. 클라우드 혁명: 클라우드 컴퓨팅이 IT, 보안, 커리어를 변화시키는 방식
  2. 글로벌 염료 산업의 진화: 친환경 전환, 규제 강화, 기술 혁신
  3. Drone Pi: 스마트폰과 원격 제어 모두 가능한 듀얼 모드 Multiwii & 라즈베리 파이 쿼드콥터
  4. 스마트폰이 커넥티드 카의 미래를 형성하는 방식
  5. 2019년 AI와 IoT가 비즈니스 운영을 혁신하는 6가지 방식
  6. IoT World 2019에서 본 에지 컴퓨팅과 IoT 전략 인사이트
  7. 저해상도 위성사진으로 전 세계 비정형 정착지 매핑하는 AI
  8. 엘빗 시스템즈, 이스라엘과 미국 위한 선도적 복합재 솔루션 제공
  9. 펌프 코팅, 해야 할까? 장단점 저울질하기
  10. 유지보수 문서화 마스터: 자산 보호를 위한 신뢰할 수 있는 접근법