본문으로 바로가기

 : 기본적으로 ble_app_interactive 프로젝트를  사용할줄 아시는 분을 기준한 설명입니다.

    ble_app_interactive 프로젝트는 host/device 기능이 함께 포함된 프로젝트로 

   프로젝트 위치는 아래와 같습니다.

<install Directory>\examples\ble_central_and_peripheral\experimental\ble_app_interactive

 

ble_app_bms 장치는 peripheral 장치이고 ble_app_interactive의 Central  기능을 사용해 테스트를 진행해 보겠습니다.

  bms : bond management service

 

<준비사항>

  :  2개의 nRF52 DK 보드 

좌측: ble_app_bms 다운로드 , 우측:ble_app_interactive 다운로드

 

 

< 순서>

   : 아래의 모든 내용은 ble_app_interactive 가 올라간 Serial Terminal 창에서 진행을 합니다.

 

  1. ble_app_bms 장치 검색하기

     1-1> scan on

     1-2> devices

uart_cli:~$ scan on
Scan started
<info> app: Scanning

uart_cli:~$ devices
Device 77:89:D0:DE:D5:57
Device D0:8E:FB:B9:09:43 Nordic_BMS
Device 40:19:20:63:34:E4
Device 03:DC:00:85:13:6A
~~~~ 중략 ~~~~

 

  2. ble_app_bms 장치 연결하기

  : 장치 연결을 위해 항상 scan on && devices 명령이 선행 되어야 합니다.

uart_cli:~$ connect D0:8E:FB:B9:09:43
<info> app: CENTRAL: Connecting...
Connected to address: D0 8E FB B9 09 43
<info> app: CENTRAL: Connected, handle: 0.
Current MTU: 23
MTU changed successfully
<info> app: Data length updated to 27 bytes.
<info> app: PERIPHERAL: BLE_GAP_EVT_AUTH_STATUS: status=0x0 bond=0x1 lv4: 0
<info> peer_manager_handler: Connection secured: role: Central, conn_handle: 0, procedure: Bonding
<info> peer_manager_handler: Peer data updated in flash: peer_id: 1, data_id: Bonding data, action: Update
<info> peer_manager_handler: Peer data updated in flash: peer_id: 1, data_id: Peer rank, action: Update
<info> peer_manager_handler: Peer data updated in flash: peer_id: 1, data_id: Local database, action: Update
Read data:
0x1
<info> peer_manager_handler: Peer data updated in flash: peer_id: 1, data_id: Central address resolution, action: Update

 

  3. gatt를 이용한 service list 얻기

uart_cli:~$ gatt
gatt - Gatt options.
Options:
  -h, --help  :Show command help.
Subcommands:
  characteristics  :<address> <serv_uuid> Get information about the contents of a service.
  indication       :<sub_cmd> <address> <char_uuid> Change indication state.
  notification     :<sub_cmd> <address> <char_uuid> Change notification state.
  read             :<address> <char_uuid> Read characteristic value.
  services         :<address> Download list of services.
  write            :<sub_cmd> <address> <char_uuid> <value> Write characteristic value.

uart_cli:~$ gatt services D0:8E:FB:B9:09:43
<info> app: Services count: 4
Found service UUIDs:
UUID: 1800 type: 0x1
UUID: 1801 type: 0x1
UUID: 181E type: 0x1       ---> Bond Management
UUID: 180A type: 0x1

 

4. gatt를 이용한 characteristic 얻기

uart_cli:~$ gatt characteristics D0:8E:FB:B9:09:43 181E
Characteristic UUID: 2AA5             --> Bond Management Feature
Parameters:
broadcast: 0 read: 1 write_wo_resp: 0 write: 0 notify: 0
indicate: 0 auth_signed_wr: 0  
Characteristic UUID: 2AA4             --> Bond Management Control Point
Parameters:
broadcast: 0 read: 0 write_wo_resp: 0 write: 1 notify: 0
indicate: 0 auth_signed_wr: 0
Number of characteristics: 2

 

  5. gatt  를  이용한 특정 characteristic  읽기/쓰기

: gatt write 시 마지막 데이타 "03 65 66 67 68" 은 16진수가 아닌 10진수 값입니다.     

uart_cli:~$ gatt read D0:8E:FB:B9:09:43 2AA5
Read data:
0x20 0x8 0x2


uart_cli:~$ gatt write request D0:8E:FB:B9:09:43 2AA4 03 65 66 67 68
Type of write operation: 0x1
Data was written to the server

 

gatt write request D0:8E:FB:B9:09:43 2AA4 03 65 66 67 68 

위 코드를 스마트폰 nrf_connect 앱을 통해 Write 할경우  아래 그림 참고하세요.

 

 

  6. ble_app_bms 장치 연결 끊기

uart_cli:~$ disconnect D0:8E:FB:B9:09:43
<info> app: CENTRAL: Disconnected, handle: 0, reason: 0x16

 

 

 

그럼 수고하세요.

 

반응형