Chapter 14

블루투스 제품 설계 플레이그라운드

지금까지 각 장에서 따로 계산했던 것들은 사실 한 제품 안에서 서로 얽혀 있다. 연결 간격을 줄이면 반응은 빨라지지만 배터리가 줄고, Coded PHY로 거리를 늘리면 공중 시간이 늘어 처리량과 배터리가 줄며, 송신 전력을 올리면 거리는 늘지만 2장에서 봤듯 몸이 가리는 손실 앞에서는 효과가 작다. 이 장에서는 제품 하나를 골라 직접 파라미터를 정하고, 그 결과가 요구 사항과 Core 6.3의 규칙을 함께 만족하는지 확인한다. 정답은 하나가 아니다. 무엇을 포기할지 고르는 것이 설계다.

설계해 보기

제품을 고르면 그 제품의 요구 사항(가로 점선)과 흔한 출발점 설정이 채워진다. 슬라이더를 움직여 네 막대가 모두 점선을 넘게 만들어 보자. 아래 목록은 Core 6.3 규칙과 호환성 점검이다.

카페에서 쓸 약속 정하기

자주 만나면 이야기는 빨리 전하지만 피곤하고, 크게 말하면 멀리까지 들리지만 목이 쉰다. 블루투스 제품의 배터리 수명, 반응 속도, 거리, 처리량도 서로 맞바꾸는 관계다. 이 장의 설계기는 앞 장들의 계산을 한데 모아, 한쪽을 당기면 다른 쪽이 얼마나 줄어드는지 보여 준다.

예측해 보기

손목 밴드처럼 몸에 붙이면 신호가 12 dB 더 약해진다고 하자. 경로 손실 지수 2.7인 실내에서 도달 거리는?

거리 배수 = 10(−12 / (10 × 2.7)).

10−12/27 ≈ 0.36, 약 3분의 1이다. 몸은 물이 많아 2.4 GHz를 잘 흡수한다(2장). 설계기에서 ‘사람 몸이 가리는 손실 포함’을 끄고 켜 보면 거리 막대가 그만큼 바뀐다. 출력을 올리거나 Coded PHY로 감도를 얻어 메운다.
PLAYGROUND

제품 설계: 수명 · 반응 · 거리 · 처리량

    제품
    PHY
    배터리 수명—
    반응 지연 (최악)—
    도달 거리 (집, n=2.7)—
    처리량 여유—
    막대 길이는 요구 사항 대비 비율(1 = 점선 = 딱 맞음, 로그 눈금)이다. 해볼 것: ① 심박계: 1초에 한 번 심박을 보내면 되므로 연결 간격을 늘리고 지연을 쓰면 수명이 크게 늘지만, 휴대폰 → 심박계 명령 반응이 늦어진다. ② 분실물 태그: 광고 간격과 송신 전력, Coded PHY의 교환을 보자. Coded로 광고하려면 확장 광고(5.0)를 써야 하고 휴대폰도 Coded 스캔을 지원해야 한다. ③ 게임 컨트롤러: 반응 4 ms를 맞추려면 7.5 ms 간격으로는 부족하다. SCI(6.2)를 켜면 짧은 간격이 허용된다. ④ LE 오디오 이어폰: 처리량 여유와 배터리(충전식 60 mAh)를 맞춰 보자. 모델: 2·3·6·9장의 식과 같은 대표 수치(칩 감도 1M −97, 2M −94, S=2 −100, S=8 −104 dBm, 수면 2 µA, 송신·수신 전류 표). 오디오는 LC3 96 kb/s 스트림 + 재전송 여유를 처리량 요구로 본다.

    사례로 따라가기

    설계기의 두 제품을 처음부터 끝까지 따라가 보자. 아래 숫자는 모두 위 설계기에서 같은 값을 넣으면 그대로 나온다.

    심박계: 1년을 버티게

    요구 사항은 “1초마다 심박 하나, 알림은 1초 안에, 10 m, CR2032급 180 mAh로 1년”이다. 출발점(LE 1M, 0 dBm, 간격 126.25 ms, 지연 0, 감독 타임아웃 2 s)에서 수명이 9.0개월로 모자란다. 손잡이는 둘이다.

    바꾼 것수명알림 반응 (심박계 → 휴대폰)명령 반응 (휴대폰 → 심박계, 최악)
    출발점9.0개월126 ms126 ms
    간격 325 ms1.6년325 ms325 ms
    간격 그대로, 지연 42.6년126 ms(1 + 4) × 126.25 = 631 ms

    심박계는 알림이 주인공이라 페리페럴 지연이 더 낫다. 보낼 것이 없을 때만 이벤트를 건너뛰므로 알림은 그대로 빠르고, 대신 휴대폰이 보내는 설정 명령이 최악 631 ms 늦어진다. 이것은 요구 사항 표에 없던 항목이라, 이 교환을 받아들일지는 제품을 정하는 사람이 고른다. 마지막으로 규칙을 확인한다. 감독 타임아웃은 (1 + 4) × 126.25 ms × 2 = 1,262.5 ms보다 커야 하므로 2 s면 된다. 도달 거리는 몸 손실 12 dB를 넣고도 46 m라 10 m에 넉넉하다.

    게임 컨트롤러: 4 ms 안에

    요구 사항은 “버튼 반응 4 ms, 5 m, 600 mAh 충전식으로 20일”이다. 출발점(LE 2M, 간격 7.5 ms)은 반응이 7.5 ms다. 7.5 ms는 모든 컨트롤러가 지원하는 BCV의 가장 짧은 값이라, 더 줄이려면 6.2의 짧은 연결 간격(SCI)이 필요하다.

    간격 (SCI 켬)반응수명지원 보장
    500 µs0.50 ms4.8일ECV, 선택
    2.625 ms2.63 ms25.0일ECV, 선택
    3.5 ms3.50 ms1.1개월ECV, 선택
    3.75 ms3.75 ms1.2개월RCV, SCI면 필수

    짧을수록 반응은 좋지만 배터리가 급히 준다. 게다가 SCI를 지원하는 컨트롤러가 반드시 받아야 하는 값은 1.25 ms 배수(RCV)뿐이고, 3.5 ms 같은 125 µs 단위 값(ECV)은 상대가 지원할 수도 안 할 수도 있다(6장). 그래서 3.75 ms를 고른다. 반응 4 ms와 수명 20일을 함께 넘는 RCV 값이다. 다만 여유가 0.25 ms뿐이라, 이벤트 하나를 놓치면 그 입력은 7.5 ms 걸린다.

    남은 일은 그림 14-1이다. 연결은 BCV(7.5 ms)로 맺고, 기능 교환으로 휴대폰도 SCI를 지원하는지 확인한 뒤 Connection Rate 절차로 3.75 ms로 내려간다. 휴대폰이 6.2 이전이면 7.5 ms로 동작한다. 그때 반응은 요구보다 느리므로, 제품 설명에 “SCI 지원 기기에서 4 ms”라고 밝히는 것까지가 설계다.

    연결 간격 집합 BCV·RCV·ECV와 SCI 컨트롤러의 필수 지원: [Vol 6] Part B §4.5.1 · 감독 타임아웃 하한: §4.5.2 · Connection Rate 절차: §5.1.32

    설계 체크리스트: 요구 사항에서 기능으로

    요구 사항먼저 볼 손잡이필요한 Core 기능 (버전)이 책
    코인 전지로 수년간격·지연, 데이터 묶기, 수면 전류, 수정 발진기LE (4.0), 서브레이팅 (5.3)6·9장
    버튼 반응 수 ms짧은 연결 간격, 지연 0짧은 연결 간격 SCI (6.2)6장
    마당·창고 끝까지Coded PHY, 안테나·배치LE Coded (5.0), 확장 광고 (5.0)2·3·5장
    펌웨어 업데이트 빠르게2M, DLE, MTU, 이벤트 길이LE 2M (5.0), DLE (4.2)6·7장
    엿듣기·끼어들기 방지Secure Connections, 입출력, OOBLE Secure Connections (4.2)8장
    추적 방지RPA, 광고 내용LL 프라이버시 (4.2), 무작위 RPA 갱신 (6.1)5·8장
    무선 오디오 저지연·양쪽 귀CIS, LC3, NSE·FT등시성 채널 (5.2)10장
    여러 명에게 소리 방송BIS, 주기적 광고등시성 채널 (5.2), 주기적 광고 (5.0)10장
    방향 찾기안테나 배열, CTEAoA/AoD (5.1)11장
    cm급 거리CS 보정·안테나채널 사운딩 (6.0), 진폭 공격 대응 (6.2)11장
    수천 기기 관리서브이벤트·응답 슬롯PAwR (5.4)12장
    “둘 다 지원해야 한다”를 잊지 말 것

    표의 기능 대부분은 선택 사항이다(1장). 내 제품이 지원해도 상대(대개 사용자의 휴대폰)가 지원하지 않으면 쓸 수 없다. 그래서 제품은 기본 경로(LE 1M, 레거시 광고, 7.5 ms 이상 간격)로도 동작하게 만들고, 상대가 지원할 때만 더 나은 경로로 올라가도록 설계한다. 연결 직후의 기능 교환(Feature Exchange 절차, [Vol 6] Part B §5.1.4)이 그 출발점이다.

    ① 기본 경로로 연결 LE 1M · 레거시 광고 간격 7.5 ms 이상 (BCV) 모든 기기가 지원 ② 기능 교환 Feature Exchange 내 기능 ∩ 상대 기능 [Vol 6] Part B §5.1.4 ③ 둘 다 지원하면 올라간다 2M · Coded · DLE · SCI 서브레이팅 · 등시성 채널 … 한쪽만 지원하면 기본 경로 그대로 동작 제품이 지원해도 사용자의 휴대폰이 지원해야 쓴다
    그림 14-1. "둘 다 지원해야 한다"를 설계에 넣는 법. 표의 기능 대부분은 선택 사항이라, 제품은 모든 기기가 지원하는 기본 경로로 먼저 동작하게 만든다. 연결 직후 기능 교환으로 두 기기가 함께 지원하는 기능을 확인하고, 그때만 더 나은 경로로 올라간다.

    핵심 정리

    1. 블루투스 설계는 배터리 · 반응 · 거리 · 처리량의 교환이다. 간격·지연은 배터리와 반응을, PHY와 송신 전력은 거리와 배터리·처리량을 맞바꾼다.
    2. 요구 사항을 먼저 숫자로 정하고(“1초마다 2바이트, 반응 100 ms, 10 m, 1년”), 그 숫자를 각 장의 식으로 파라미터에 옮긴다.
    3. 짧은 간격이 필요하면 SCI 컨트롤러가 반드시 지원하는 RCV(1.25 ms 배수)에서 고르고, 상대가 지원하지 않을 때의 기본 경로(BCV)도 정해 둔다.
    4. 사양 규칙(감독 타임아웃 > (1 + 지연) × 간격 × 2 등)과 양쪽의 기능 지원을 함께 점검하고, 기본 경로로도 동작하게 만든다.

    확인 퀴즈

    심박계의 배터리 수명을 늘리면서 심박 알림(심박계 → 휴대폰)의 반응은 유지하고 싶다. 가장 알맞은 손잡이는?

    지연은 페리페럴이 보낼 것이 없을 때만 건너뛰게 하므로 알림 방향의 반응은 그대로다. 대신 휴대폰 → 심박계 방향이 느려진다(6장).

    분실물 태그를 Coded PHY로 광고하려 한다. 꼭 필요한 것은?

    레거시 광고 PDU는 LE 1M에서만 보낼 수 있다. ADV_EXT_IND는 광고 채널에서 1M 또는 Coded를 쓴다(5장 Table 2.3).

    게임 컨트롤러가 6.2의 짧은 연결 간격을 지원하지만 사용자의 휴대폰은 6.0이다. 어떻게 해야 하나?

    모든 컨트롤러는 BCV를 지원해야 하고, 연결 생성 시에도 BCV를 쓴다. 짧은 간격은 양쪽이 지원할 때 Connection Rate 절차로 옮겨 간다(6장).

    6.2 SCI를 지원하는 두 기기 사이에서, 상대가 반드시 지원한다고 믿고 쓸 수 있는 연결 간격은?

    SCI 컨트롤러는 RCV(1.25 ms의 배수)를 모두 지원해야 하고, 그 밖의 125 µs 단위 값(ECV)은 지원할 수도 있다. 3.75 ms = 3 × 1.25 ms는 RCV, 3.5 ms는 ECV다([Vol 6] Part B §4.5.1).