본문으로 바로가기

아두이노 HC-06 사용하기



안녕하십니까? 애드라이프 입니다.

이번에는 저번에 HM-10 BLUETHOOTH 4.0에 대하여 포스팅 했었는데요.

이번에는 좀더 보편적인 모듈인 HC-06 블루투스 모듈을 포스팅하겠습니다.


실물부터 확인 하겠습니다.▼

아두이노 HC-06 사용하기



이번에도 HM-10에서 했던 무선 LED컨트롤을 하겠습니다.

우선적으로 AT명령으로 HC-06모듈을 셋팅해야 합니다.

그럴려면 아두이노와 HC-06모듈을 연결해야 하기 때문에 회로 연결부터 소개하겠습니다.


아두이노 HC-06 사용하기

회로도상에는 HC-05로 나와있지만 실제 모듈은 HC-06입니다.

HC-05와 HC-06의 위 4가닥은 배선이 같습니다. 그러니 걱정안하셔도 됩니다.

이번에 사용하는 아두이노 보드는 아두이노 나노(Arduino NANO)입니다.

나중에 활용을 위해서라도 공간활용이 좋은 보드를 사용하는게 좋을것 같아서 사용하게 되었습니다. 



그럼 AT명령어를 사용하는 법을 살펴보겠습니다.

우선 아래 프로그램을 보드에 업로드 해주세요.


아두이노 나노보드 사용법은 아래링크를 참고해주세요.



[아두이노/아두이노 기초] - 아두이노(Arduino) 기초 나노보드 사용하기


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <SoftwareSerial.h>  //시리얼통신 라이브러리 호출
 
int blueTx=2;    //Tx (보내는핀 설정)at
int blueRx=3;    //Rx (받는핀 설정)
SoftwareSerial mySerial(blueTx, blueRx);   //시리얼 통신을 위한 객체선언
 
void setup() 
{
  Serial.begin(9600);    //시리얼 9600
  mySerial.begin(9600);  //블루투스 시리얼 9600
}
void loop()
{
  if (mySerial.available()) {       
    Serial.write(mySerial.read());   //블루투스측 내용을 시리얼모니터에 출력
  }
  if (Serial.available()) {         
    mySerial.write(Serial.read());   //시리얼 모니터 내용을 블루추스 측에 WRITE
  }
}
 

cs

프로그램의 전체적인 흐름은 주석을 참고부탁드립니다.▲


우선 AT명령어에 대한 파일 하나 첨부하겠습니다.

HC-06_AT_Commands_Reference.pdf


AT명령설정하기전 기본적인 셋팅이 필요합니다.

아두이노 HC-06 AT명령어


보드레이트를 프로그램과 동일하게 만들고 line ending없음으로 설정해주세요.

그리고 AT라고 명령을 입력하면 OK라고 응답이 날아옵니다.


AT : 연결확인 명령 / 응답 : OK

AT+NAME**** : 블루투스 이름변경 / 응답 : Oksetname

AT+VERSION : 소프트버전 확인 / 응답 : OklinvorV1.8

AT+BAUD* : 통신속도 설정 / 응답 : OK*


이번 예제에서는 위 명령어 정도만 필요합니다.

제가 첨부한 파일에 있는 명령어뿐만 아니라 많은 명령어들이 있으니 좀더 공부해보시는 것도 좋은 방법입니다.


AT명령으로 연결이 제대로 되었는지 확인한 후에 AT+NAME***으로 이름을 변경하시면 나중에 연결할때 자신의 모듈을 찾기 편합니다.

AT+VERSION으로 자신의 모듈의 버전을 확인 하시고 1.8이상 버전이라면 마스터와 슬레이브모드를 모두 사용할 수 있습니다.

그리고 이번예제에서는 통신속도는 AT+BAUD4로 설정하시면 됩니다. 9600에 해당하는 속도입니다.


저 같은 경우에는 이름을 ADDLIFE_S로 설정하였습니다.


AT명령설정이 끝났다면 이제 본격적으로 블루투스로 LED를 설정하는 방법을 알아보겠습니다.

우선 아래 프로그램을 다시 업로드합니다. ▼

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <SoftwareSerial.h> //시리얼통신 라이브러리 호출
 
int blueTx = 2;                     //Tx (보내는핀 설정)at
int blueRx = 3;                     //Rx (받는핀 설정)
int LED = 4;                        //LED를 제어할 포트입니다.
SoftwareSerial mySerial(blueTx, blueRx);  //시리얼 통신을 위한 객체선언
 
void setup() 
{
  Serial.begin(9600);               //시리얼 9600
  mySerial.begin(9600);             //블루투스 9600
  pinMode(LED, OUTPUT);             //디지털 포트4번을 OUTPUT으로 설정
}
void loop()
{
  String cmdString;
  char cmd;
  while(mySerial.available())      //수신데이터가 있는동안
  {
    cmd = (char)mySerial.read();   //mySerial int 값을 char 형식으로 변환
    cmdString+=cmd;                 //수신되는 문자를 myString에 모두 붙임 (1바이트씩 전송되는 것을 연결)
    delay(5);                       //수신 문자열 끊김 방지
  }
  if(!cmdString.equals(""))         //myString 값이 있다면
  {
    Serial.print("Command = ");
    Serial.println(cmdString);
    Serial.println(cmdString.length());
    if( cmdString == "ledon" )    //수신한 문자열이 ledon과 같으면 LED ON
    {
      Serial.println("LED ON");
      mySerial.write("Receive success ledon");  //시리얼 모니터 내용을 블루추스 측에 WRITE
      digitalWrite(LED, HIGH);
    }
    if( cmdString == "ledoff" )
    {
      Serial.println("LED OFF");  //수신한 문자열이 ledoff과 같으면 LED OFF
      mySerial.write("Receive success ledoff");  //시리얼 모니터 내용을 블루추스 측에 WRITE
      digitalWrite(LED, LOW);
    }
    cmdString=""//초기화
  }
}
cs

프로그램의 전체적인 흐름은 주석을 참고해주세요.▲



프로그램은 HM-10예제의 프로그램과 거의 비슷합니다.

하지만 이번에 쓸 어플이 좀 다릅니다.

안드로이드 폰을 기준으로 설명드리겠습니다. google playstore에 접속하셔서 Serial Bluetooth Terminal를 다운받아주세요.


아두이노 HC-06와 어플 연동하기

위 그림과 같은 어플을 설치해주세요.



아두이노 HC-06와 어플 연동하기아두이노 HC-06와 어플 연동하기아두이노 HC-06와 어플 연동하기

좌측상단에 메뉴 버튼을 클릭해서 Device부분으로 들어가면 자신이 바꿔놓은 이름으로 블루투스모듈이 보입니다.

단, 이때 자신의 블루투스에 전원을 연결한 상태에서 깜박이고 있어야합니다. 페어링 대기상태입니다.

제가 설정해 놓은 ADDLIFE_S가 보이시나요? 



아두이노 HC-06와 어플 연동하기아두이노 HC-06와 어플 연동하기아두이노 HC-06와 어플 연동하기

정상적으로 연결이 되는 화면이 왼쪽화면입니다.  연결이 완료 된것을 확인 하였다면 다시 메뉴버튼을 클릭해서

이번엔 Setting으로 들어갑니다. Send부분의 Newline부분이 기본으로 CR+LF로 되어있습니다.

이 부분은 NUL로 설정해 주세요. 이번 예제의 프로그램에서 문자열 비교시 방해되기 때문입니다.

그래도 사용하고 싶다면 CR+LF까지 포함하게 비교 구문을 작성하시면 될 것 같습니다. 


아두이노 HC-06와 어플 연동하기

마지막으로 명령을 전송했을 때의 화면입니다. 프로그램을 보면아시겠지만 명령 비교구문에서 해당문구와 같은 문구가 들어올 경우

Receive success ledon, Receive success ledoff 문구를 띄우도록 되어있습니다. 

물론 LED점등에 대한 명령도 수행하게 되어있습니다.

LED의 불이켜진것을 눈으로 확인 하는것이 가장 좋지만 LED가 눈에 보이지 않는 곳에있다면

 이런 리턴문구를 사용하는 것도 좋은 방법입니다.


지금까지 아두이노(Arduino) 중급 아두이노 HC-06와 안드로이드폰을 사용해서 LED 제어에 대한 포스팅이였습니다.

계속해서 도움되는 포스팅으로 찾아뵙겠습니다.

by 애드라이프