정보나눔

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

아두이노로 초음파센서와 블루투스를 이용하려고 하는데 질문이 있습니다.
호로오노 | 2018-09-27

아두이노로 초음파센서와 블루투스(HC_06)를 이용해서 PC와 통신하려고 합니다.

 

아두이노가 PC로 부터 'h'를 받으면 초음파센서로 측정한 거리를 PC로 전달하려고 하는데요

 

데이터가 전달이 잘 안되네요...ㅜ

 

제가 작성한 코드는

 

#include <SoftwareSerial.h>
#define TRIG 12
#define ECHO 11
char signal;
SoftwareSerial BTSerial(7,8);

 

void setup() {
Serial.begin(9600);
BTSerial.begin(9600);
pinMode(TRIG,OUTPUT);
pinMode(ECHO,INPUT);
}

 

void loop(){
  digitalWrite(TRIG,LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG,HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG,LOW);
long distance = pulseIn(ECHO,HIGH)/58.2;

 

  if(BTSerial.available()){
  signal = BTSerial.read();
  if (signal == 'h') {
  BTSerial.println(distance);
  delay(250);
}
}
}

여기서 질문이 있는데요 Serial과 BTSerial을 어떻게 구분하고 차이가 뭔지 궁금합니다.

 

그리고 어떻게 수정하면 데이터가 잘 전달이 될지....

 

고수분들 도와주시면 감사하겠습니다! 

프로필사진

수박쨈 2018-09-27 17:15:26

Serial과 BTSerial둘 다 시리얼 통신이라는 공통점이 있지만

BTSerial은 SoftwareSerial이라고 하드웨어적으로 구현한게 아닌 소프트웨어로 구현한 시리얼 통신입니다.

 

그래서 위의 코드에서는 임의로 7,8번을 지정했는데

 

아두이노에서 UART통신은 0, 1번핀 고정입니다.

쉽게 0, 1번핀을 사용하는 통신을 Serial로 보시면 되고 이 Serial통신이 컴퓨터와 통신하는걸로 보시면 됩니다.

 

BTSerial로 적은건 BT의미가 bluetooth로 블루투스 통신할때 주로 쓰는 통신입니다.

 

BTSerial을 Serial로 바꾼다면 컴퓨터랑 통신이 잘 될 거 같네요

 

프로필사진

호로오노 2018-09-28 15:32:49

감사합니다 수박쨈님!

BTSerial을 설정할 필요없이 0,1번 핀을 이용해서 Serial만으로 통신하면 된다는 말씀이시죠?!

두개의 차이를 몰라서 헷갈렸는데 정말 감사합니다!

프로필사진

수박쨈 2018-09-28 17:07:46

아두이노 디지털 0번핀 1번핀에 보시면 Rx, Tx라고 적혀져있습니다.

그 핀이 UART통신으로 할당되어 있다고 보시면 됩니다.

 

따라서 0번 1번핀에 특정한 센서를 연결하면 컴퓨터와 통신이 불가합니다.

이전글   |    if문 빠져나가는것좀 알려주세요 ㅠㅠ 2018-09-26
다음글   |    시리얼모니터값을 어플로 2018-09-27