페이지

2013년 4월 28일 일요일

[BLE] TI CC2540 Mini DK 사용하기 - KeyFobDemo


1. 문서 및 소프트웨어
    
    1.1 문서
    
        가. Bluetooth Low Energy CC2540/41 Mini Development Kit User's Guide (http://www.ti.com/litv/pdf/swru270c)
            4. Using BTool
            Appendix
        나. CC2540/41 Bluetooth Low Energy Software Developer's Guide (http://www.ti.com/lit/pdf/swru271)
            4. Working with Projects using IAR Embedded Workbench 8.10.4
        다. CC2540 Bluetooth Low Energy Sample Applications Guide (http://www.ti.com/litv/pdf/swru297b)
            9. KeyFobDemo
    
    1.2 소프트웨어

        가. Bluetooth low energy software stack and tools 1.3 (www.ti.com/blestack)
            - KeyFobDemo 애플리케이션과 BTool을 포함하고 있다.
        나. IAR Embedded Workbench for 8051 (http://supp.iar.com/Download/SW/?item=EW8051-EVAL)
            - 30일 평가판 다운로드.
            
2. 빌드 및 다운로드
    
    2.1 빌드
    
        1) IAR Embedded Workbench for 8051을 실행하고 Open -> Workspace... 메뉴를 선택한다.
        2) BLE 소프트웨어 스택의 KeyFobDemo 프로젝트 아래에서 다음 파일을 선택하여 프로젝트를 연다.
            Texas Instruments\BLE-CC254x-1.3\Projects\ble\KeyFob\CC2540DB\KeyFobDemo.eww
        3) 좌측 Workspace 화면에서 KeyFobDemo를 선택하고 마우스 오른쪽 버튼을 누르면 나타나는 팝업 메뉴에서 Rebuild All를 선택한다.
        
    2.2 다운로드
    
        1) KeyFob에 전지를 넣고 CC Debugger와 연결한다.
        2) CC Debugger를 PC에 연결한다.
        3) IAR Embedded Workbench의 Project -> Download and Debug 메뉴를 선택하여 이미지를 KeyFob에 다운로드한다.
    
3. USB 동글과 KeyFob 연결

    1) USB 동글을 PC에 연결한다. 장치 관리자에서 USB 동글의 포트 번호를 확인한다.
    2) BTool을 실행한다. 직렬포트 설정 대화 상자에서 USB 동글의 포트 번호를 지정한다. 다른 항목은 기본으로 설정된 값을 사용한다.
    3) Keyfob의 오른쪽 버튼(B3)을 눌러 Discoverable 모드로 진입한다.
    4) BTool의 Discover/Connect 탭에서 장치 발견 및 연결을 실행한다.
        - 'Discovery' 섹션의 'Scan' 버튼을 누른다. 잠시 후 "Devices Found"의 값이 1로 바뀌는 것을 확인한다.
        - 'Link Control' 섹션의 Slave BDA에서 발견된 장치의 주소를 선택하고 'Establish' 버튼을 누른다. 왼쪽 패널에 "Connection info" 항목이 추가되는 것을 확인한다.

4. Primary Service 확인

    KeyFobDemo 애플리케이션이 제공하는 Primary Service 목록을 알아보도록 하자. BTool의 우측 화면에서 Read / Write 탭을 열고 Characteristic Read 영역에서 아래와 같이 지정한 다음 Read 버튼을 누른다. Primary Service 선언임을 지칭하는 UUID는 0x2800이다.
    
        Sub-Procedure:          Read Using Characteristic UUID
        Characteristic UUID:    00:28
    
    그러면 로그창에 Handle/Data 항목들이 표시될 것이다. Data 항목은 Primary Service로 제공되는 서비스의 UUID이고, Handle 항목은 해당 서비스의 시작 핸들의 값이다.
    
         Handle : 0x0001
         Data : 00:18
         
         Handle : 0x000C
         Data : 01:18
         
         Handle : 0x0010
         Data : 0A:18
         
         Handle : 0x0023
         Data : 03:18
         
         Handle : 0x0026
         Data : 02:18
         
         Handle : 0x0029
         Data : 04:18
         
         Handle : 0x002D
         Data : 0F:18
         
         Handle : 0x0032
         Data : A0:FF
         
         Handle : 0x0045
         Data : E0:FF
         
    Data 항목의 값들이 서비스의 UUID이므로 다음과 같은 Primary Service들이 제공되고 있음을 알 수 있다.
    
        0x1800      Generic Access Profile
        0x1801      Generic Attribute Profile
        0x180A      Device Information
        0x1803      Link Loss
        0x1802      Immediate Alert
        0x1804      Tx Power
        0x180F      Battery Service
        0xFFA0      Accelerometer
        0xFFE0      Simple Keys

5. Link Loss Service
    
    KeyFob이 USB 동글로부터 일정 거리 이상 멀어지면 연결이 끊어질 것이다. 이 때 KeyFob의 버저가 울리고 LED가 깜박이도록 해 보자. 연결이 끊어졌을 때 어떻게 알릴지는 Alert Level의 값에 따라 달라지는데 다음 세 가지 유형 중 하나로 지정할 수 있다.
    
        No Alert        - 장치가 경고를 하지 않는다.
        Mild Alert      - 장치가 경고를 한다.
        High Alert      - 장치가 가능한 가장 강력한 방식으로 경고를 한다.
        
    BTool의 우측 화면에서 Read / Write 탭을 연다.
    
    5.1 현재의 Alert Level 확인
    
        Link Loss Service가 제공하는 Characteristic 선언의 목록을 표시하도록 우측 화면의 Characteristic Read 영역에서 아래와 같이 지정한 다음 Read 버튼을 누른다. Characteristic 선언임을 지칭하는 UUID는 0x2803이고, 검색할 핸들의 범위는 Link Loss Service의 시작 핸들인 0x0023 이후부터 다음 서비스의 시작 핸들인 0x0026 바로 이전으로 지정하였다. 
    
            Sub-Procedure:          Read Using Characteristic UUID
            Characteristic UUID:    03:28
            Start Handle:           0x0024
            End Handle:             0x0025
        
        로그 창에 표시되는 아래의 내용에서 Data 항목은 Link Loss Service가 제공하는 Characteristic에 대한 선언이다.
        
            Handle : 0x0024
            Data : 0A:25:00:06:2A
            
        Data 항목의 첫번째 바이트 0x0A는 해당 Characteristic의 값을 읽거나 쓸 수 있음을 나타낸다. 그 다음 두 바이트 0x0025는 해당 Characteristic의 값을 참조할 때 사용할 핸들값이다. 마지막 두 바이트 0x2A06은 해당 Characteristic이 Alert Level임을 지칭하는 UUID이다.

        따라서 현재의 Alert Level을 읽기 위하여 아래와 같이 핸들값을 지정하고 Read 버튼을 누른다.
        
            Sub-Procedure:                  Read Characteristic Value / Descriptor
            Characteristic Value Handle:    0x0025
        
        그러면 로그 창에 아래와 같이 표시되는데, 0x00은 "No Alert"를 의미한다. 즉 연결이 끊어지더라도 경고음이나 LED로 알리지 않을 것이다.
        
            Value : 00 
        
    5.2 새로운 Alert Level 설정
    
        Alert Level의 값으로 "High Alert"를 설정하기 위하여 우측 화면의 Characteristic Write 영역에서 아래와 같이 지정하고 Write 버튼을 누른다.
        
            Characteristic Value Handle:    0x0025
            Value:                          0x02

    5.3 Link Loss 테스트
    
        KeyFob을 들고 USB 동글로부터 수 미터 이상 이동하면서 버저음이 울리고 LED가 깜박이는지 확인해 본다.

댓글 1개:

독일 V2 로켓과 런던 폭격 - 푸아송 분포 응용

독일 V2 로켓과 런던 폭격 - 푸아송 분포 응용 관심사는 2차 세계 대전 말기 독일 V2 로켓에 의한 런던 폭격 지점의 분포와 푸아송 분포 응용 사례였는데 우연히 접한 기사를 흥미있게 읽다가 오류로 의심되는 부분...