ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Raspberry Pi 3와 Android 앱 간에 Bluetooth 통신 테스트
    Raspberry Pi/Bluetooth 2018.08.28 13:51

    bluetoothctl 명령을 사용하여 Bluetooth 모듈이 내장되어 있는 Raspberry Pi 3와  안드로이드폰 간에 페어링을 하고나서 Bluetooth 통신 테스트를 진행했습니다.


    Android 앱에서 문자열을 전송하면 Raspberry Pi 3에서 실행 중인 서버 프로그램이 문자열을 에코해줍니다.



    본 포스팅의 내용을 해보기 전에 다음 포스팅을 꼭 진행하세요. 라즈베리파이에서 해줘야 하는 작업이 포함되어 있습니다.



    Raspberry Pi 3 블루투스 페어링 방법(bluetoothctl)  및 C언어 블루투스 서버 예제

    http://webnautes.tistory.com/1137





    다음 순서로 진행합니다.



    1. Raspberry Pi 3와 안드로이드폰 페어링


    2. Raspberry Pi 3의 Bluetooth 에코 서버와 Android앱 간의 통신 테스트




    마지막 업데이트 - 2018. 8. 28




    Raspberry Pi 3와 안드로이드폰 페어링


    1. 페어링 작업 중 폰의 화면이 꺼지지 않도록 화면 켜짐 유지로 설정을 변경합니다.





    2. Raspberry Pi 3에서 검색할 수 있도록 폰에서 블루투스 설정 화면을 띄워놓습니다.





    3. Raspberry Pi 3의 터미널에서 안드로이드폰과  페어링을 하기 위해서 bluetoothctl  명령을 실행합니다.


    pi@raspberrypi:~ $ bluetoothctl




    4. 폰의 블루투스 모듈 맥어드레스를 검색합니다.

    폰화면이 꺼지지 않아야 검색이 되며 폰의 이름이 보일 때까지 기다려야 합니다.


    [bluetooth]# scan on
    Discovery started
    [CHG] Controller B8:27:EB:DA:FA:66 Discovering: yes
    [CHG] Device 6D:C7:0B:20:60:50 RSSI: -79
    [CHG] Device 78:D7:A5:67:52:90 RSSI: -86
    [CHG] Device 04:52:C7:7C:5E:BF RSSI: -72
    [CHG] Device 04:52:C7:7C:5E:BF TxPower: 4
    [CHG] Device A8:7C:01:FD:ED:A1 RSSI: -81
    [NEW] Device D0:13:FD:EE:43:2E V20
    [CHG] Device 78:D7:A5:67:52:90 ManufacturerData Key: 0x004c




    5. 폰의 블루투스 모듈 맥어드레스를 확인했으면 검색을 중지하고 에이전트를 활성화 합니다.


    [bluetooth]# scan off
    [CHG] Device 72:E4:6C:89:73:CF RSSI is nil
    [CHG] Controller B8:27:EB:DA:FA:66 Discovering: no
    Discovery stopped
    [bluetooth]# agent on
    Agent registered
    [bluetooth]# default-agent
    Default agent request successful




    6. 안드로이드폰과 페어링을 진행하기 위해  pair 명령과 안드로이드 폰의 블루투스 모듈 맥어드레스를 같이 적어주면 페어링이 진행됩니다.


    화면에 보이는 passkey를 확인하고..


    [bluetooth]# pair D0:13:FD:EE:43:2E
    Attempting to pair with D0:13:FD:EE:43:2E
    [CHG] Device D0:13:FD:EE:43:2E Connected: yes
    Request confirmation
    [agent] Confirm passkey 020589 (yes/no):



    안드로이드 폰에서 키값이 동일하다면  등록을 선택합니다.




    라즈베리파이에서 yes를 입력하고 엔터를 입력합니다.


    [bluetooth]# pair D0:13:FD:EE:43:2E
    Attempting to pair with D0:13:FD:EE:43:2E
    [CHG] Device D0:13:FD:EE:43:2E Connected: yes
    Request confirmation
    [agent] Confirm passkey 020589 (yes/no): yes



    안드로이드 폰에서 페어링이 완료된 것을 볼 수 있습니다.




    라즈베리파이에서도 페어링 성공여부가 확인됩니다.


    [bluetooth]# pair D0:13:FD:EE:43:2E
    Attempting to pair with D0:13:FD:EE:43:2E
    [CHG] Device D0:13:FD:EE:43:2E Connected: yes
    Request confirmation
    [agent] Confirm passkey 020589 (yes/no): yes
    [CHG] Device D0:13:FD:EE:43:2E Modalias: bluetooth:v00C4p13A1d1000
    [CHG] Device D0:13:FD:EE:43:2E UUIDs: 00001105-0000-1000-8000-00805f9b34fb
    [CHG] Device D0:13:FD:EE:43:2E UUIDs: 0000110a-0000-1000-8000-00805f9b34fb
    [CHG] Device D0:13:FD:EE:43:2E UUIDs: 0000110c-0000-1000-8000-00805f9b34fb
    [CHG] Device D0:13:FD:EE:43:2E UUIDs: 0000110e-0000-1000-8000-00805f9b34fb
    [CHG] Device D0:13:FD:EE:43:2E UUIDs: 00001112-0000-1000-8000-00805f9b34fb
    [CHG] Device D0:13:FD:EE:43:2E UUIDs: 00001116-0000-1000-8000-00805f9b34fb
    [CHG] Device D0:13:FD:EE:43:2E UUIDs: 0000111f-0000-1000-8000-00805f9b34fb
    [CHG] Device D0:13:FD:EE:43:2E UUIDs: 0000112f-0000-1000-8000-00805f9b34fb
    [CHG] Device D0:13:FD:EE:43:2E UUIDs: 00001132-0000-1000-8000-00805f9b34fb
    [CHG] Device D0:13:FD:EE:43:2E UUIDs: 00001200-0000-1000-8000-00805f9b34fb
    [CHG] Device D0:13:FD:EE:43:2E UUIDs: 00001800-0000-1000-8000-00805f9b34fb
    [CHG] Device D0:13:FD:EE:43:2E UUIDs: 00001801-0000-1000-8000-00805f9b34fb
    [CHG] Device D0:13:FD:EE:43:2E ServicesResolved: yes
    [CHG] Device D0:13:FD:EE:43:2E Paired: yes
    Pairing successful




    7. 페어링 완료후, trust 명령을 해줘야 합니다.


    [bluetooth]# trust D0:13:FD:EE:43:2E
    [CHG] Device D0:13:FD:EE:43:2E Trusted: yes
    Changing D0:13:FD:EE:43:2E trust succeeded




    8. quit 명령으로 bluetoothctl를 종료합니다.


    [bluetooth]# quit
    Agent unregistered
    [DEL] Controller B8:27:EB:DA:FA:66 raspberrypi [default]
    pi@raspberrypi:~ $




    Raspberry Pi 3의 블루투스 에코 서버와 Android앱 간의 통신 테스트


    1. Raspberry Pi에서 블루투스 서버를 실행시킵니다.


    pi@raspberrypi:~ $ sudo chmod 777 /var/run/sdp
    pi@raspberrypi:~ $ ./bluetooth_server




    2. 안드로이드앱을 실행시킨 후,  페어링된 디바이스 목록에서 raspberrypi를 선택합니다.




    테스트에 사용한 Android 앱 소스코드는 다음 포스팅에 있습니다.



    Android와 PC JAVA 프로그램 간 블루투스 통신 예제

    http://webnautes.tistory.com/849





    3. Raspberry Pi에서 실행중인 서버에 연결되면 앱 상단에 다음과 같은 메시지가 보입니다.

    connected to raspberrypi





    4. Raspberry Pi의 터미널에서 폰의 블루투스 모듈 맥어드레스를 보여주며 접속되었다는 것을 알려줍니다.





    5. 폰에서 문자열을 입력 한 후, SEND를 터치하면...





    6. Raspberry Pi의 터미널에서 수신한 문자와 다시 에코에서 보낸 문자를 보여줍니다.





    7. 폰에서도 전송한 문자(Me:)와 Raspberry Pi로부터 수신 받은 문자열(raspberrypi:)을 확인 할 수 있습니다.





    8. 앱에서 백버튼을 눌러서 종료하면  서버도 같이 종료됩니다.









    포스트 작성시에는 문제 없었지만 이후 문제가 생길 수 있습니다.
    댓글로 알려주시면 빠른 시일내에 답변을 드리겠습니다.

    여러분의 응원으로 좋은 컨텐츠가 만들어집니다. 지금 본 내용이 도움이 되었다면 후원 또는 유튜브 구독 부탁드립니다. 감사합니다 : )

    유튜브 구 독 하 기
    후 원 하 기


    댓글 152

Designed by Tistory.