Arduino bluetooth 관련 질문입니다.


안녕하세요. 블루투스를 공부하고 있는 학생입니다.

아두이노와 안드로이드 간의 BLE 통신을 할려고 합니다.

안드로이드 GATT를 이용하여 BLE 통신을 하고 있는데,

두 device가 연결이되면 아두이노에서 LED를 키던지 어떠한 event를 발생시키려고합니다.

저의 짧은 생각으로는 안드로이드가 아두이노와 BLE연결이 성공되면 안드로이드 측에서 data를 보

내 아두이노의 LED를 키게하는 것입니다. 하지만 연결이 끊어지면 LED를 꺼지게 해야되는데, 이렇게

하기위해서는 안드로이드 측에서 계속해서 thread라도 돌려서 data를 보내는 방법 밖에 없더라구요.

이러한 방법보다는 차라리 아두이노측에서 자신과 블루투스 연결이 성공된 device가 나타나면 LED를

키고, 이러한 연결이 끊어졌다면 LED를 끄는 방법이 더욱 좋을 것 같다고 생각합니다.

그래서 아두이노 상에서는 현재 BLEPeripheral.h 라이브러리를 사용하고 있는데, 아두이노 상에서 블

루투스가 어떠한 device랑 connection이 맺어지는 것을 알아서 LED를 키고, 만약 connection이 끊기

면 LED를 끌수있는 방법이 없을까요...?!

긴글 읽어주셔서 감사합니다!


조회수 213


1 답변


BLEPeripheral 라이브러리의를 살펴보니 커넥션이 맺어졌을 때와 해지됐을 때 이벤트를 받을 수 있도록 API를 제공합니다.

아래의 샘플 코드를 활용해서 각각의 콜백 함수에서 LED를 켜고 끄는 처리를 해보세요.

void setup() {
    ...

    // assign event handlers for connected, disconnected to peripheral
    blePeripheral.setEventHandler(BLEConnected, blePeripheralConnectHandler);
    blePeripheral.setEventHandler(BLEDisconnected, blePeripheralDisconnectHandler);

    ...
}

void blePeripheralConnectHandler(BLECentral& central) {
  // 연결이 되면 LED를 켜도록 구현
}

void blePeripheralDisconnectHandler(BLECentral& central) {
  // 연결이 끊어지면 LED를 끄도록 구현
}

관련된 샘플 코드는 아래 링크를 참고하세요.


  • 아 정말감사합니다...!!! 이 문제로 몇일간 머리좀 아팠었는데 ㅠㅠㅠㅠㅠㅠㅠㅠㅠ 정말 감사합니다    Hyunjoong Kim   2016.8.9 01:36     

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close