[매드정] 아두이노 강좌 - 25. Bluetooth 모듈 동작

안녕하세여~ 매드 입니다.

한주가 또 순식간에 지나갔네요 ㅠ ㅎㅎ 정말 하루하루가 정신 없네요..
(사실은 블리자드 오버워치 신겜이 나오다보니 그거하느라고 정신 없음 ㅋㅋ)

인생 즐기기가 참 어렵습니다. ㅎㅎ 이것도 하고 싶고 저것도 하고 싶고 ㅎㅎ
어쩌겠습니다! 좋아하는거 할려면 싫어하는 것도 해야죠! ㅎㅎ

원래는 이번주에도 지난주에 이어서 WiFi 모듈을 다루어볼려고 했으나 머릿속도 정리가 잘 안되고 힘든 관계로 간단한 블루투스 모듈에 대해서 다루어보고자 합니다!

블루투스 모듈도 WiFi 모듈과 크게 다르지 않으니 한번 알아보도록 할까요~?


25-1. 블루투스란?

< 블루투스(출처:구글사진) >

블루투스란? 근거리 무선통신 기술로서 줄여서 BT라고 부릅니다. (중국에서는 말그대로 파란이라고 부른다고... ㅡ.ㅡ)

이름의 유레는 덴마크 왕이였던 하랄 1세 블로탄에서 따왔다고 하는데요. 하랄 1세가 나라를 평화롭게 통일 시키는데 큰 업적을 남겨 여러가지 전자제품의 무선규격을 통일시키는 의도로 시작된 기술의 이름을 블루투스 라고 정했다고 하네요(출처:나무위키)

블루투스는 2400~2483.5MHz의 주파수 범위에서 동작하고 2400Mhz 대역폭을 사용하는 WiFi와 동일한 주파수를 사용하기 때문에 WiFi와 블루투스 무선 통신의 혼선으로 키보드와 마우스가 끊기는 현상도 많이 볼 수 있습니다. 블루투스는 오픈 라이센스라서 기술 사용에 라이센스비가 들지 않고 현재 블루투스4.x 기술까지 나오게 되면서 저전력과 같은 기술로 굉장히 장점이 많은 기술 입니다.

이외 블루투스 1.x 버전부터 현재의 4.x 버젼까지 달라진 점들은 시간나실 때 나무위키를 참조하도록하고 현재는 스마트폰과 함께 굉장히 보편적으로 사용하고 있는 무선 기술이죠!?

아두이노로 블루투스나 WiFi 모듈다루는 것은 크게 어렵지 않은데요.(항상 우리보다 먼저 먼저 만들어 놓은 라이브러리 때문이죠!) ㅎㅎ

지난시간에 WiFi 모듈을 잠깐 했듯이 이번에 다룰 블루투스 모듈도 UART 통신을 통해서 간단하게 제어할 수 있는 모듈 입니다.

<블루투스 모듈(출처:구글사진)>

오늘 다룰 블루투스 모듈은 위와 같이 생겼는데요. HC-05, HC-06 두가지 모델이 있습니다. 두가지 모델의 차이점은 하나는 블루투스 Slave 로만 동작하고 다른 하나는 Master와 Slave 동작 두가지가 가능하다는 것이죠.

그리고 또한가지! 위와 같이 블루투스 모듈에 아두이노와 연결하기 쉽도록 추가보드가 만들어져 있는 것은 5V 전원으로 연결하고 5V 동작인 아두이노와 연결해도 문제 없도록 회로가 이미 들어가 있습니다.

<블루투스 모듈(출처:구글사진)>
하지만 지난번 WiFi 모듈이나 위 그림의 블루투스 모듈 처럼 외부 확장보드가 없다면 반드시 데이타시트를 확인해서 동작전원을 확인하셔야 합니다. 위와 같은 모듈은 3.3V 전원으로 동작하니 신호선이나 전원을 아두이노와 바로 연결하시면 모듈이 망가진다는 점! ㅎㅎ 조심하세여 ㅎㅎ


25-2. 블루투스 연결 회로
<아두이노 블루투스 연결(출처:구글사진)>

블루투스 모듈은 위와 같은 핀으로 되어 있는데요. 저는 아두이노와 RX, TX를 소프트웨어 시리얼통신을 사용해서 동작시키려고 합니다. 기존에 있던 아두이노의 0, 1핀 하드웨어 UART를 사용하게 되면 PC와의 시리얼통신에 제한이 되기 때문에 부득이하게 소프트웨어 시리얼 통신을 사용할 수 밖에 없게 되네요 ㅎㅎ

아두이노      블루투스 모듈
5V               VCC
GND            GND
D10             TXD
D11             RXD

여기서 참조하셔야할 것이 아두이노에서 RX핀이면 블루투스의 TX 핀과 연결해야 아두이노에서는 데이터를 받고 블루투스에서는 데이터를 보내 서로 통신할 수 있습니다.

우선 이렇게만 하드웨어 연결작업이 끝나면 사실상 다 끝난거죠! ㅎㅎ 지난번 WiFi 모듈보다 간단하네요.

<hc-05 at command(출처:구글사진)>

지난 WiFi 모듈에서도 말씀드렸다시피 이런 간편한 모듈에는 더 간편하게 제어할 수 있는 AT COMMAND 라는 명령어들이 있습니다. 기본 동작부터 암호라던가 통신속도(BAUD)등을 마음대로 변경할 수 있는 것이죠.

여기서 잠깐! 저희는 모듈과 통신하기 위해 소프트웨어 시리얼을 사용하는데요. 이 소프트웨어 시리얼통신은 통신속도 제한이 있습니다. 일단 115200 까지는 지원한다고 나오는데 필자 경험에는 115200은 될때가 있고 안될때가 있었네요. 소프트웨어 시리얼통신을 사용할 때는 가급적 9600의 속도로 사용하시기를 바랍니다.

그럼 자세한 사용법은 영상을 통해서 알아보도록 하죠!


25-3. 펌웨어

#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11); // RX, TX

void setup() {
  Serial.begin(9600);
  Serial.println("Goodnight moon!");

  mySerial.begin(9600);
  mySerial.println("Hello, world?");
}

void loop() { // run over and over
  if (mySerial.available()) {
    Serial.write(mySerial.read());
  }

  if (Serial.available()) {
    mySerial.write(Serial.read());
  }

}



오늘 강좌는 여기까지구요!! 혹시 이상한 부분이나 궁금하신 사항은 리플 달아주세여~
ㅎㅎ
그럼 다음주에 뵐께요~!

댓글 쓰기

4 댓글

  1. 앗 오버워치 구매해야 하는 건가요? 재미있나요?

    답글삭제
    답글
    1. 핫! 안녕하세요! ㅋㅋ 오버워치 재미는 있는데 구매할정도는 아닌것 같습니다~ ㅎㅎ ㅡㅠ 저는 유일한 취미생활이라서 ㅎㅎ 요즘 바쁘다보니 정신이 없네요 ㅋ 오프라인 강좌도 좀 해야하는데 걱정입니다. ㅎㅎㅎ

      삭제
    2. 게임소개 봤는데 제 타입은 아닌 ㅋㅋ
      오프라인 강의하시면 미리 알려주시면 일정없으면 참여해서 도와드리겠습니다.

      삭제
    3. ㅎㅎ 넵 알겠습니다! ㅠ 7월이나 되야 가능할것 같네요 ㅠㅠ

      삭제