[아두이노 부품] 블루투스 통신

2017. 10. 15. 17:02Arduino


여기 강좌에서 너무 잘 설명해준다 블루투스 통신에 관련해서


https://play.google.com/store/apps/details?id=nextprototypes.BTSerialController


위 동영상을 요약하면,


여기서 블루투스 시리얼 컨트롤러 앱을 설치해서 아두이노에게 보내주는 신호를 보내주면 된다.


아두이노에서는 character 형태로 한 글자씩 받기 때문에 string을 처리하기에 좋은 환경이 아니다.


delay(5)를 주는 이유도 너무 빨리 읽어 들이면 문자열이 깨져서 부분부분 들어오기 때문에 주는 것이다.


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
#include<SoftwareSerial.h>
int blueTx = 2;
int blueRx = 3;
SoftwareSerial mySerial(blueTx, blueRx);
String myString = "";
 
void setup(){
  Serial.begin(9600);
  mySerial.begin(9600);
}
 
void loop(){
  
  while(mySerial.available()){
    byte myChar = (byte)mySerial.read();
    myString += myChar;
    delay(5);
  }
    
  if(!myString.equals("")){
      Serial.println("input value : " + myString);
      myString = "";
  }
  
}
cs



https://github.com/googlesamples/android-BluetoothChat/


위에서 사용한 블루투스 시리얼 컨트롤러 앱말고, 직접 안드로이드 코드에서 어떻게 이뤄지는지 알고 싶으면 안드로이드 예제 코드를 불러오면 된다.


여기 Github url에서 받을 수도 있고, 밑에 사진처럼 직접 import해서 사용할 수 있다


채팅 애플리케이션인데 아두이노 블루투스 모듈과 연결해서 신호를 보내줄 수 있다.




블루투스를 이렇게 통신을 하다보면 중간에 끊기는 일이 많은데, 아마도 모듈을 HC-06을 사용하면 그렇게 된다고 어디선가 들었다.


HM01을 사용하면 잘 안 끊기고 아이폰도 연결이 가능해서 괜찮다는 말을 들었는데 더 알아봐야겠다.


또 중간 중간 쓰레기 값이 넘어오는 것들이 있을 수 있는데, 코드를 구현하는 방법적인 면에서 해결을 할 수 있으니 만약에 원하지 않은 값들이 넘어오는 경우, 문자 하나씩 받아들이는 방법을 다르게 해주면 될 듯하다.