PC 와 아두이노간 블루투스 통신 문제

3,019 views
Skip to first unread message

신호석

unread,
Oct 15, 2017, 12:50:43 PM10/15/17
to Ardunity Forum (Korea)

안녕하세요

지난 번에 DigitalInput, DigitalOutput ID 관련 질문을 드렸던 사람입니다.
도움으로 잘 해결되었습니다.

현재 당면한 문제는 블루투스 관련 문제입니다.

PC 에서 USB 연결로 Input, Output 제어는 잘 됩니다.

HC-06 블루투스 모듈을 설치. 연결하고 아래의 소스를 업로드했습니다.
(HC-06 은 5V 용인 것 같으며 HC-06 블루투스 모듈 LED 가 빨간 색으로 
점멸하고 있습니다)

 #include<SoftwareSerial.h>

SoftwareSerial softSerial(2, 3);
int BOARD_LED = 13;

void setup()
{
  pinMode (BOARD_LED, OUTPUT);
  digitalWrite (BOARD_LED, LOW);
    Serial.begin(9600);
    softSerial.begin(9600);
    Serial.println("hello");
}

void loop()
{
  if(softSerial.available())
  {
    Serial.write(softSerial.read());
      digitalWrite (BOARD_LED, HIGH);
  }
    if(Serial.available())
  {
    softSerial.write(Serial.read());
      digitalWrite (BOARD_LED, HIGH);
  }
  digitalWrite(BOARD_LED, LOW);
}

PC에서는 동글이를 통해 HC-06과 페어링되어 있습니다.
( COM7 송신 HC-06 'Dev B'
  COM8 수신 )

스케치를 COM 7로 놓고 시리얼 모니터를 열면 에러가 뜨면서
접속이 되지 않습니다.
물론 AT 명령어도 안 됩니다.

검색을 통해 많은 걸 시도했는데 PC 와 아두이노간
블루투스 통신에 대해 도움을 받고 싶습니다. 

감사합니다

Jaehong Oh

unread,
Oct 18, 2017, 12:56:49 AM10/18/17
to Ardunity Forum (Korea)
일단, 하나씩 풀어보겠습니다.

내용중의 아두이노 소스는 다음과 같이 동작합니다.
1. 9600bps로 USB통신을 합니다.
2. 2, 3pin을 이용해서 SoftwareSerial이 9600bps로 작동합니다.
3. 13pin LED를 제어합니다.
4. 프로그램이 시작되면 USB로 'hello'가 출력됩니다.
5. SoftwareSerial을 통해 데이터를 받으면 USB로 받은 데이터를 전송하고 LED를 ON합니다.
6. USB로 데이터를 전송받으면 SoftwareSerial로 전송하고 LED를 ON합니다.
7. 그외의 경우는 LED를 OFF합니다.

일단, 위의 소스는 PC에서 아두이노를 통해 HC-06과 통신하기 위함이고 대부분 AT Command 설정을 위해 사용됩니다.
내용을 보면 HC-06을 PC에 페어링하여 연결한 것으로 보입니다. (COM7 송신과 COM8 수신 포트)
참고로 페어링 후 COM포트가 2개 생기는 것은 Bluetooth의 Master/Slave 통신 방식이 다르기 떄문입니다.
둘 중의 어느것이 맞는지는 잘 기억이 안나는데, 하나씩 시도해보시면 되는 것이 있을 것입니다.
HC-06의 LED는 다른 블루투스와 연결 상태를 보여줍니다.
깜박거리는 것은 대기중이고 계속 켜지면 연결되었다는 것입니다.
즉, 노트북으로 블루투스 COM포트를 열면 HC-06은 LED가 계속 켜지게됩니다.

COM7으로 포트 열기를 시도했는데, 에러가 난다면 COM8로 시도해보시기 바랍니다.
만약, 둘 다 안되면 HC-06 페어링 자체가 안 된 것입니다.
포트가 열리면 LED가 계속 켜질 것이고, 포트가 닫히면 LED가 깜박거릴 것입니다.
(여기서 말하는 LED는 HC-06 보드에 있는 LED이며 아두이노 보드의 LED가 아닙니다.)

AT명령어는 PC의 시리얼 모니터를 이용해서 HC-06에 설정하는 과정을 의미합니다.
HC-06은 직접 PC에 연결될 수 없기떄문에 아두이노 보드가 중간 역할을 하는 것이고, 그 중간 역할의 코드가 바로 위의 소스입니다.
현재, AT명령어를 사용하고자 한다면 HC-06이 페어링된 COM포트가 아닌 아두이노 USB포트를 선택해야 합니다.



신호석

unread,
Oct 18, 2017, 10:42:02 AM10/18/17
to Ardunity Forum (Korea)

자세한 답변 감사합니다.

아두이노 소스는 usb 연결시 말씀하신대로 동작합니다.

com7 와 com8 은 모두 시도해 보았습니다.

HC-06의 LED 는 계속 깜박거리고 있습니다.

그럼 결국 HC-06 페어링 자체가 안 된 것인데
어느 부분을 더 봐야 될까요?

말씀 드렸다시피  PC에서는 페어링 상태라고 표시되고요.
유니티 아두니티 엡에서는  com7 과 com8 이 나타나지만
연결 오류가 나타납니다.
혹시나 해서 HC-06 은 2개를 가지고 테스트했습니다.

시리얼 모니터가 USB 연결 상태에서 사용해야 한다는
사실은 이제 알게 되었네요.

바쁘신데 도움에 감사드립니다

Jaehong Oh

unread,
Oct 21, 2017, 3:08:10 AM10/21/17
to Ardunity Forum (Korea)
일단, 페어링 정보를 삭제하시고 블루투스 추가하기를 통해 다시 시도해보시기 바랍니다.
PC에서 HC-06 시리얼 포트를 추가하는 방법은 인터넷을 통해 찾으셔야 할 것 같습니다.
워낙 사용자마다 이슈가 다르기에 제가 답변을 해드리기가 쉽지 않습니다.
Reply all
Reply to author
Forward
0 new messages