• 전체강좌

    [BLE 5.0 강좌 07] Service 사용해 보기 - Notify

    twitter facebook

    안녕하세요? 착한이입니다.


    Nordic 사의 nRF52840을 이용한 BLE 5.0 강좌를 시작합니다.

    본 강좌에서는 nRF52840을 장착한 nRF52840 Dongle(USB 방식)과

    nRF52840 DK(Development Kit) 보드를 이용하여 BLE 5.0 펌웨어 개발에 대해 알아 보고자 합니다.


    nRF52840 관련 자세한 사항은 다음 사이트에서 확인하실 수 있습니다.

    https://www.nordicsemi.com/Products/Low-power-short-range-wireless/nRF52840


    nRF52840 Dongle 제품에 대한 자세한 사항은 다음 사이트에서 확인하실 수 있습니다.

    https://www.nordicsemi.com/Software-and-Tools/Development-Kits/nRF52840-Dongle


    nRF52840 DK 보드에 대한 자세한 사항은 다음 사이트에서 확인하실 수 있습니다.

    https://www.nordicsemi.com/Software-and-Tools/Development-Kits/nRF52840-DK


    [BLE 5.0 강좌 04] Peripheral 모드 테스트 - nRF52840 Dongle로 Advertising 하기
    http://www.wearedev.net/?m=bbs&bid=lecture&uid=190

    [BLE 5.0 강좌 05] Programmer로 펌웨어 Write 하기

    http://www.wearedev.net/?m=bbs&bid=lecture&uid=191

    [BLE 5.0 강좌 06] Service 사용해 보기 - Read, Write

    http://www.wearedev.net/?m=bbs&bid=lecture&uid=203


    BLE 5.0 강좌 06에서 nRF Connect의 Bluetooth Low Energy 툴을 이용하여

    Service를 추가하고 이용하는 방법에 대해 알아 보았습니다.

    Battery Level Charactristic의 값을 스마트폰으로 Read, Write 해 보았습니다.

    이번 강좌에서는 Battery Level 값이 변경될 때마다 자동으로 값을 받을 수 있도록

    Nortify 기능을 추가해 보겠습니다. 


    1. Service 수정하기



    강좌 06(http://www.wearedev.net/?m=bbs&bid=lecture&uid=203)에서 구현한 Battery Service를

    수정해서 Notify 기능을 추가해 보겠습니다.

    Battery Level Characteristic을 클릭하면 다음과 같은 화면이 나타납니다.

    Properties 에서 "Notify"를 체크합니다.

     

    Battery Level의 notify 기능을 사용하기 위해서는 Descriptor를 설정해야 합니다.

    Descriptor도 UUID를 가지고 있으며, "+ New descriptor" 를 클릭하면

    New Descriptor 라는 이름으로 추가 됩니다.

    이를 선택하면 다음 그림과 같이 UUID와 속성을 설정할 수 있습니다.


    찾기 버튼을 눌러 2902: Client Characteristic Configuration을 선택합니다. 

     


    다음으로 "Initial value" 에 원하는 초기값을 입력합니다.

    "Save" 버튼을 클릭하여 설정을 저장합니다.

    "Apply to device" 버튼을 클릭하여 장치에 적용합니다.


    이때 다음과 같은 팝업 창이 나타나면 "Yes" 버튼을 클릭합니다.

    설정 저장이 완료되면 Advertising 정보가 사라집니다.

    Complete local name을 다시 설정해 주셔야 합니다. 

    이 부분은 강좌 06을 참고 부탁 드립니다.

    http://www.wearedev.net/?m=bbs&bid=lecture&uid=203

     


    Notify 기능이 추가되면 다음 그림과 같이 Battery Level에 notify 권한이

    추가된 것을 확인할 수 있습니다.


    이제 장치를 Peripheral 모드로 동작시켜 보겠습니다.

    톱니바튀 버튼을 클릭하여 "Start advertising" 메뉴를 선택합니다. 


    스마트폰에서 SCAN하여 장치와 연결해 보면

    다음 그림 같이 아이콘이 추가된 것을 확인할 수 있습니다.

    동시에 Property 에도 NOTIFY가 추가 된 것을 알 수 있습니다.

    아래 방향의 화살표가 3개 겹쳐진 아이콘(이하 Notify 아이콘)을 클릭하면

    Battery Level 값이 변경될 때마다 자동으로 값을 받아 올 수 있습니다.

    Notify 아이콘을 클릭 합니다.


    Notify 아이콘의 모양이 다음과 그림과 같이 변경됩니다. 

     

    PC에서 Battery Level 값을 "40"으로 변경한 후 확인 버튼을 클릭합니다.


    Notify 기능이 동작하여 스마트폰 화면에 "64%"로 표시됨을 알 수 있습니다.

    이렇게 값이 변경되면 실시간으로 값이 전달되어 표시 됩니다. 

    매번 값을 Read 할 필요가 없이 변경 값을 쉽게 확인할 수 있습니다.


    여기까지 Service의 Notify 기능에 대해 알아 보았습니다. 
    다양한 Service으로도 Notify 기능을 한번씩 테스트해 보시길 바랍니다.


    궁금하신 사항은 댓글로 남겨 주세요.

    다음 강좌에서 뵙겠습니다.

    즐거운 개발하시길 바랍니다.


    다음 유튜브 채널에서 BLE 5.0 관련 동영상을 보실 수 있습니다.

    https://www.youtube.com/c/WeAreDev

    구독 부탁 드립니다.