정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

HC-06, GPS센서를 이용하는데 주는 동시에 받는게 안되네요....
제발좀 | 2018-01-17

HC-06, GPS센서를 이용하여서 GPS센서값을 안드로이드 핸드폰에 주는 동시에 안드로이드 핸드폰에서는 아두이노의 부저를 울리게 하는 것을 만들려고 하고 있습니다. 하지만 GPS값을 받는지만 부저를 울리는게 안되네요....

HC-06모듈이 주고 받는 것이 동시에 안되는 건가요? 아니면 소스의 문제인가요?

 

#include <TinyGPS.h>
#include <SoftwareSerial.h> 

SoftwareSerial BTSerial(2, 3);
String sData="";
int sound=12;
TinyGPS gps;
SoftwareSerial uart_gps(6,5);
void getgps(TinyGPS &gps); 

void setup()
{
  uart_gps.begin(9600);
  Serial.begin(9600);
  pinMode(sound,OUTPUT);
  BTSerial.begin(9600);
}

void loop(){
  while(BTSerial.available()){
    char toSend = (char)BTSerial.read(); 
    if(toSend=='1'){
     tone(sound, 294);
     }
     else{
      noTone(sound);
     }
  }

  while(uart_gps.available()) 
  {
      if(gps.encode(uart_gps.read())){
        getgps(gps);
        }
      }
     } 

void getgps(TinyGPS &gps)
{
  float latitude, longitude;
  gps.f_get_position(&latitude, &longitude);
  Serial.print(latitude);
  Serial.print(longitude);
  int i = 0;
  
  while(Serial.available()){

    sData=String(latitude)+"!"+String(longitude)+"_";
    delay(2);
  }
  if(sData.length()>0){
    Serial.print(sData);
   BTSerial.print(sData);
   sData="";
  }
  
  unsigned long chars;
  unsigned short sentences, failed_checksum;
  gps.stats(&chars, &sentences, &failed_checksum);
  
  delay(10000);
}

 

프로필사진

Klant 2018-01-17 11:37:41

멀티 소프트웨어 시리얼의 문제인 것 같습니다. 

여러가지 소프트웨어 시리얼을 사용하실 경우, 해당 부품이 통신하는 타이밍에서 다른 한개의 소프트웨어 시리얼을 완전히 닫아주셔야 합니다. 

 

해당 내용에 대한 이슈는 아래 링크를 참고해주시면 감사하겠습니다. 

https://www.arduino.cc/en/Tutorial/TwoPortReceive

이전글   |    블루투스 스캐너에서 오렌지보드 입력값(전압) 읽기관련 질문... 2018-01-17
다음글   |    fritzing.exe에서 도구 받기 2018-01-17