본문으로 바로가기

[ble_app_cts_c ] 프로젝트 분석

category Nordic_nRF52 2022. 4. 7. 20:41

 : Current Time Profile 의 client 역할 테스트 예제입니다.

 

1> 프로젝트 위치

  <InstallFolder>\examples\ble_peripheral\ble_app_cts_c

 

2> Nordic Document 사이트

https://infocenter.nordicsemi.com/topic/sdk_nrf5_v17.0.2/ble_sdk_app_cts_c.html

 

nRF5 SDK v17.0.2: Current Time Application

This example requires one of the following SoftDevices: S112, S132, S140 Important: Before you run this example, make sure to program the SoftDevice. The Current Time Application is an example that implements the client role of the Current Time Profile usi

infocenter.nordicsemi.com

 

3> 테스트 방법

  : 매뉴얼 상에는 10단계로 되어 있고 ,2대의 nRF52 보드가 필요합니다. ( Current Time Profile client / server)

 

 3-1> 첫번째 보드에 ble_app_cts_c 프로젝트를 빌드후 이미지를 다운로드 합니다.

     >> 저는 SES를  사용해 build && Download 했습니다.

 

 리셋시 아래와 같이 Teraterm 창에 메시지가 출력됩니다.

 <포트 설정> 

 

 

  • Baud rate: 115.200
  • 8 data bits
  • 1 stop bit
  • No parity
  • HW flow control: None

 

 

 

 

 

 3-2> 2번째 보드를 연결한후  nRF Connect for Desktop 을 통해 

       Current Time Service (CTS) server 를 만들어 줍니다.

 

   ▶ Bluetooth Low Energy 어플의 Open 버튼 클릭

   ▶ Bluetooth Low Energy 어플의 SELECT DEVICE 선택후 "nRF52_DK" 보드 선택해 줍니다.

 

   ▶ Confirm 창이 나오면 "Yes" 버튼 클릭해 줍니다.

 

   아래 화면처럼 나오면 정상입니다.

 

   아래화면처럼  SERVER SETUP  ==> 설정버튼   ==> "Load setup..." 을 눌러줍니다.

 

  cts_central.ncs 파일 선택후  열기버튼 클릭해주세요.

 

  ▶ Current Time Service 가 보이면  "Apply to device" 버튼 클릭

 

 

   CONNECTION MAP 으로 이동후 "Current Time Service " 가 존재하면 OK 입니다.

 

 3-3> nRF Connect 어플에서 'Nordic_CTS' 장치 연결하기

   :저는 여기부터는 2대의 PC를 사용했습니다. 

   ( Serial 창이나 usb 장치 2개가 보이니 헤갈려서...아마 한대의 PC로 하셔도 동작은 잘 할꺼요.)

 

      아래 그림 처럼 Security parametters... ==> Perform bonding 도 체크해주시고 "Apply" 버튼 눌러주세요.

 

 

    아래그림처럼 Start scan 눌러서 "Nordic_CTS"  장비를 검색후 Connect 버튼을 눌러줍니다.

    : 장치 검색에서 안보이시면 "Current Time Profile client " 장비를 리셋

      다시 Start scan  클릭해주세요.

 

  ▶ 정상적으로 연결 완료되면 다음 화면처럼 보이실 겁니다.

 

 

  3-4>  UART에 "Current Time Service discovered on server."  메시지 확인합니다.

<info> app_timer: RTC: initialized.
<info> app: Current Time service client started.
<info> app: Fast advertising
<info> app: Connected.
<info> peer_manager_handler: Connection secured: role: Peripheral, conn_handle: 0, procedure: Bonding
<info> peer_manager_handler: Peer data updated in flash: peer_id: 0, data_id: Bonding data, action: Update
<info> peer_manager_handler: Peer data updated in flash: peer_id: 0, data_id: Peer rank, action: Update
<info> ble_cts_c: Current Time Service discovered at peer.
<info> app: Current Time Service discovered on server.

 

  3-5> Current Time (UUID 0x2A2B) characteristics 에 'C2 07 0B 0F 0D 25 2A 06 FE 08'  값 쓰기

 ==> UART 로는  출력 되는 메시지가 없습니다.

 

  3-6>  "Current Time Profile client " 장비의 Button1 을 눌러줍니다.

  : Teraterm 창에 아래의 메시지가 출력 되면 OK

<info> app: Current Time received.
<info> app:
Current Time:
<info> app:
Date:
<info> app:     Day of week   Saturday
<info> app:     Day of month  15
<info> app:     Month of year November
<info> app:     Year          1986
<info> app:
Time:
<info> app:     Hours     13
<info> app:     Minutes   37
<info> app:     Seconds   42
<info> app:     Fractions 254/256 of a second
<info> app:
Adjust reason:
<info> app:     Daylight savings 1
<info> app:     Time zone        0
<info> app:     External update  0
<info> app:     Manual update    0

 

 

  3-7>  nRF Connect 어플에서 연결 끊기 및 LED1 상태 확인하기

    "Current Time Profile client " 장비의 LED1 이 블링킹을 하고 있으면 advertising 상태입니다.

 Teraterm 출력메시지

<info> app: Fast advertising with WhiteList
<info> app: Disconnect Complete.
<info> app: Disconnected.
<info> app: Slow advertising with WhiteList
<info> app: Slow advertising

 

  3-8> 보드가 system-off 될때까지 대기

     :"Current Time Profile client " 장비의 LED1 이 블링킹을 안할때 까지 대기

      fast advertising (30초) , slow advertising (180초)

     UART 출력 메시지는 없습니다.

 

 

  3-9> Button1 을 누르고  nRF Connect 에 재연결 테스트

 

    "Current Time Profile client " 장비의 Button1 을 눌러 Wakeup 을 시켜줍니다.

  UART 메시지

<info> app_timer: RTC: initialized.
<info> app: Current Time service client started.
<info> app: Fast advertising with WhiteList
<info> app: Slow advertising with WhiteList
<info> app: Slow advertising

   

    nRF Connect 에서 Start Scan 및 Connect 을 해줍니다.

 

 연결시의 UART 메시지 

<info> peer_manager_handler: Peer data updated in flash: peer_id: 0, data_id: Peer rank, action: Update, no change
<info> app: Connected.
<info> peer_manager_handler: Peer data updated in flash: peer_id: 0, data_id: Central address resolution, action: Update
<info> peer_manager_handler: Connection secured: role: Peripheral, conn_handle: 0, procedure: Encryption
<info> peer_manager_handler: Peer data updated in flash: peer_id: 0, data_id: Peer rank, action: Update, no change
<info> ble_cts_c: Current Time Service discovered at peer.
<info> app: Current Time Service discovered on server.

 

  3-10> nRF Connect 어플에서 연결 끊기

 

 

 

     

그럼 오늘도 수고하세요.

 

 

     

반응형