안녕하세요?


이번 포스팅에서는 아두이노 보드에 블루투스 통신 모듈을 장착해서, 스마트폰을 이용한 원격 조작을 했는 수업의 내용을 포스팅 하고자 합니다. 그런데 너무 내용이 길어서 하는 수 없이 2부분으로 나누어야 했습니다.



먼저 위 사진에 보이는 것이 블루투스 통신 모듈입니다. 블루투스 통신이란 제가 알기로는 적외선을 기반으로 해서 통신인데, 이 모듈을 아두이노 보드에 연결하면 통신이 된다고 합니다.



그리고 확대했는 블루트스 모듈의 뒷 모습입니다. 여기서는 역시 5V와 GND가 연결되어야 당연이 작동을 할 수 있으며, RX와 TX라고 해서 읽기와 쓰기라는 포트가 당연 아누이노 보드와 연결이 되어야 합니다.



일단 이론적인 것에 대해서 설명에 들어가야 겠습니다. 일단 PC와 아두이노 보드와 통신을 하는 방식에는 가장 많이 쓰이는 것이 시리얼 통신입니다. 이런 통신에는 USB 케이블을 통해서 통신을 하며, 이외에 아두이노 우노(Uno)보드를 보면 0번에 RX, 1번에 TX라는 표식이 찍혀 있습니다. 이전에 언급이 되었는 232나 485통신을 할 수 있습니다.


그리고 여기서 중요한 것인데, 아두이노 우노 보드의 경우에는 통신을 할수 있는 내장 모듈이 한개밖에 없어서 PC와의 통신과 블루투스연결을 동시에 할 수는 없다고 합니다. 이런 한계점을 극복하기 위해서는 하는 수 없이 좀 더 높은 버젼의 아두이노 보드를 사용해야 합니다.



그리고 이제는 아두이노 보드, 브래드 보드, 그리고 블루투스 모듈과 실제로 연결을 한 모습입니다. 이렇게 연결을 할 때도 한가지 주의해야 하는 사항이 아래와 같이 있습니다.



먼저 블루투스 모듈의 RX는 아두이노 보드에서 TX로 설정된 핀에 연결되어야 하며, 블루투스 모듈에서 TX로 설정된 핀은 아두이노 보드에 있는 RX로 설정된 핀에 연결이 되어야 합니다. 이를 잘 지켜서 연결하면 일단 하드웨어 적으로는 연결이 완료되었다고 볼 수 있습니다.



일단 소프트웨어 적으로 연결하기 위한 준비를 해야 하는데, 여기서 위에 올라온 코드를 보시면 #include<SoftwareSerial.h>이라는 것이 있는데, 아두이노 IDE를 설치한 폴더안을 보면 이렇게 SoftwareSerial이라는 것이 있다고 합니다. 한마디로 거기 있는 함수를 사용하기 위해서 클래스를 상속한다고 해야 할까요? C#이나 유니티를 배우면서 본 클래스의 상속이라는 것이 여기서 나왔다는 생각이 듭니다.


그리고 SoftwareSerial 이라는 명령어는 객체를 만드는 명령어로 그냥은 사용할 수 없고 SoftwareSerial.h라는 헤더파일을 통해서 가지고 와서 사용할 수 있는 명령어입니다. 그래서 객체를 만드는 것입니다.


그럼 BTSerial은 무엇이냐 하면, 이건 어떤 이름을 짓던 상관없습니다. 하지만 다음과 같은 형식을 지켜야만 합니다.


SoftwareSerial 임의의이름(RX가 될 핀의 번호, TX가 될 핀의 번호)


여기서 핀의 번호라는 것은 바로 아두이노 보드의 핀의 번호라고 보시면 됩니다. 아무튼 간에 이렇게 해서, 소프트웨어상에 준비는 되었습니다.



그리고 시리얼 모니터를 아두이노 보드 스케치 툴에서 열여서 이제 블루투스 모듈과 아누이도 우노 보드간에 연결을 시도 합니다.



먼저 AT라는 명령어를 쳤습니다. 여기서 OK라고 떠야 하는데 무언가 안 나오는 것을 볼 수 있었습니다.



알고보니 휴먼에러라고 오타가 하나 있었습니다. 그래서 이 오류를 수정하고 나서, 다시 시도를 합니다.



이제서야 제대로 OK라고 AT명령어를 치자 나오는 것을 볼 수 있습니다.




그리고 이제는 블루투스 모듈에 이름을 정해줄 시간입니다. 스페이스 바 없이 AT+NAME이름 이라고 입력을 하도록 합니다. 여기서 C7:67이라는 것은 블루투스 모둘의 Mac주소라고 바꿀 수 없는 하드웨어 자체의 주소가 있는데, 그 주소의 마지막 4자리를 입력한 것입니다.



실제로 제대로 입력하면 위와 같이 OKsetname이라는 말이 나오는 것을 볼 수 있습니다.


이제 비밀번호를 바꿀 차례인데, 이런 실수를 했습니다.



AT+PIN비밀번호 라고 입력을 하면 블루투스로 접속을 할 때 입력해야 하는 비밀번호를 여기서 입력할 수 있게 됩니다.



성공하면 OKsetPIN이라는 것이 뜨는 것을 볼 수 있습니다.



그리고 통신 속도를 설정해야 하는데, 실수로 결과만 찍혔습니다. 일단 명령어는 AT+BAUD번호 입니다. 여기서 번호에 따른 통신 속도는 다음과 같습니다.


1-1200, 2-2400, 3-4800, 4-9600, 5-19200, 6-38400, 7-57600, 8-115200 (bps) 라고 합니다.



이제 블루투스로 제대로 연결하기 위해서 BT chat이라고 해서, 블루투스로 스마트폰끼리 연결해서 채팅을 하는 앱을 스마트폰에 다운로드 받도록 합니다.



아까 위에서 설정한 블루투스의 이름과 비밀번호를 입력해서 스마트폰과 아두이노 보드를 블루투스로 연결할 준비를 하러 갑니다.



일단 스마트폰의 설정창에서 제대로 연결이 되는 것을 확인할 수 있었습니다.



다음에는 BT chat이라는 앱을 스마트폰-안드로이드 계열 폰에서 실행 시켜서, 방금 연결한 블루투스 모듈을 선택 하도록 합니다.



이제서야 제대로 연결된 것을 볼 수 있습니다.



실제로 제대로 연결이 되면, 위 사진과 같이 블루투스 모듈에 자체에 있는 LED가 점멸하다가 그대로 굳어지는 것을 볼 수 있습니다. 이걸로 BT chat으로 스마트폰과 아두이노 보드를 블루투스로 통신 자체는 제대로 연결된 것을 볼 수 있습니다. 그리고 여기서 더 포스팅을 해야 하지만, 내용이 너무 많아서 하는 수 없이 여기서 끊어야 겠습니다. 다음 포스팅에서 나머지 내용을 올리도록 하겠습니다.


  1. raynor 2018.07.11 14:09 신고

    개인적인 생각이지만 정보전달하실 때
    ~ 한다고 합니다 라는 표현은 별로 안좋은것같아요. 남의 이야기를 가지고 온것같은 느낌이 들기도 하고 무슨일이 생기면 책임을 회피하기 위해 사용할수 있는 표현인 것같아요. 정보전달할 때는 확실하게 ~ 합니다 가 좋은것같습니다.

  2. z 2018.07.16 09:24 신고

    맨위에서 블루투스와 시리얼통신을 동시에 못한다고 하셨는데, 블루투스의 tx rx를 우노보드의 0, 1 번에 연결시에 동시에 못할뿐이지, 위의 구성처럼 2, 3번에 블루투스를 연결하면 시리얼통신과 블루투스 통신을 동시에 구성가능합니다.

+ Recent posts

티스토리 툴바