: 기본적으로 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_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
그럼 수고하세요.
반응형
'Nordic_nRF52' 카테고리의 다른 글
[secure_bootloader ] 프로젝트 분석 (0) | 2022.04.11 |
---|---|
[ble_app_cts_c ] 프로젝트 분석 (0) | 2022.04.07 |
[ble_app_beacon ] 프로젝트 분석 (0) | 2022.04.05 |
[ble_app_interactive ] GettickCount() 만들기 (0) | 2022.04.04 |
[nRF52 ] NRF_LOG 출력 UART 에서 RTT 로 변경하기 (0) | 2022.03.25 |