블루투스 메시, 어떻게 시작할 것인가 | 반도체네트워크

죄송합니다. 더 이상 지원되지 않는 웹 브라우저입니다.

반도체네트워크의 다양한 최신 기능을 사용하려면 이를 완전히 지원하는 최신 브라우저로 업그레이드 하셔야 합니다.
아래의 링크에서 브라우저를 업그레이드 하시기 바랍니다.

Internet Explorer 다운로드 | Chrome 다운로드

블루투스 메시, 어떻게 시작할 것인가



글/존 레오나드(John Leonard), 노르딕 세미컨덕터 제품 마케팅 매니저


블루투스 LE(Bluetooth Low Energy)에 메시 사양이 추가됨에 따라 빌딩 자동화 애플리케이션을 비롯한 다양한 분야에 블루투스 메시를 적용할 수 있는 가능성이 크게 높아지고 있다.


최근 블루투스 메시 1.0 사양이 채택되면서 블루투스 LE 네트워크 상의 장치들(노드)은 중앙 허브장치에 의존하지 않고 직접 다른 노드들과 통신할 수 있게 되었다. 이러한 시스템은 통신 범위 및 유연성, 신뢰성을 확장하는 것은 물론, LAN IoT 무선 기술의 근간을 제공한다. 주요 블루투스 메시 애플리케이션으로는 엔터프라이즈 조명 설비 및 비콘 관리를 위한 백엔드, 산업용 모니터링 등이 있다.
그러나 이 사양은 네트워크 프로비저닝 및 구성, 블루투스 메시 ‘모델’ 작업과 같은 새로운 디자인 문제를 야기한다. 다행스럽게도 이러한 문제는 노르딕 세미컨덕터와 같은 선도적인 블루투스 LE 공급업체의 실리콘 및 펌웨어, DK 및 소프트웨어 DK를 통해 해결할 수 있다.

AR(블루투스)-0.jpg

메시 사양의 지원으로 블루투스 저에너지 기술은 더 넓은 범위의 애플리케이션으로 확장되고 있다.

블루투스 메시는 무엇인가

블루투스 메시 아키텍처는 표준 블루투스 LE PHY 위에 7개의 레이어(베어러(Bearer), 네트워크, 하위 및 상위 전송, 액세스, 기초 모델 및 모델)로 구성된다.(그림 1 참조) 노드는 메시지를 수신하면 PHY에서 베어러 레이어를 통해 네트워크 레이어로 이를 전달한다. 네트워크 레이어는 메시지를 스택으로 넘길지 또는 버릴지를 결정하기 위해 다양한 검사를 적용한다.

AR(블루투스)-1.jpg

[그림 1] 블루투스 메시 스택은 블루투스 저에너지 물리층 레이어 위에 위치한다.(출처: 블루투스 SIG)

블루투스 메시는 ‘플러딩’ 통신 방법을 사용하여 각 패킷이 네트워크 상의 모든 노드로 브로드캐스팅되도록 한다. 플러딩은 초기 노드 설정 시에 사용되는 ‘유니캐스트’와 ‘그룹’ 및 주로 장치 제조업체가 제품의 ‘레이블’을 위해 사용하는 ‘가상’ 등 3가지 유형의 어드레스 지정을 통해 보완된다. 이 중 그룹 어드레스 지정은 일상적인 동작에 가장 적합하다. 그룹 어드레스는 네트워크 상에서 하나 이상의 요소를 나타내는 멀티캐스트 어드레스이다. 블루투스 SIG는 노드 유형을 명확하게 처리할 수 있도록 ‘All-proxies’, ‘All-friends’, ‘All-relays’, ‘All-nodes’라는 4개의 ‘고정형 그룹 어드레스’를 정의했다.
플러딩 메시 및 그룹 어드레스 지정은 조명과 같은 주요 스마트 홈 애플리케이션에 적합하다. 예를 들어, 플러딩 메시를 사용하면 조명을 즉시 켤 수 있도록 모든 노드(조명)가 연결된 네트워크를 통해 ‘On’ 명령을 스위치에서 스마트 조명 그룹으로 신속하게 전달할 수 있다.
이러한 네트워크 유형의 또 다른 장점은 37개의 풀-대역폭 데이터 채널을 사용하는 대신 블루투스 LE의 3개의 애드버타이징 채널로 통신을 제한할 수 있다는 단순성이다. 그러나 이 제한된 서브셋 주파수를 압도하는 패킷을 방지하기 위한 트래픽 관리가 필요하기 때문에 대역폭 감소에 따른 비용이 발생한다.
애드버타이징을 경감시키고, 채널 혼잡을 스캐닝하기 위한 통합 메커니즘으로 ‘TTL’ 카운터가 있다. 이 메커니즘은 특정 패킷을 몇 번 릴레이할 것인지를 정의하게 되며, 정의된 단계가 넘으면, 패킷을 더 이상 릴레이하지 않게 된다. 두 번째 혼잡 방지 메커니즘은 전송된 패킷의 메시지 캐시이다. 패킷은 메시 주변을 완전히 순환한 뒤에만 캐시에 도달할 수 있는데, 이 지점에서 더 이상의 전송이 불필요하다는 것을 안전하게 판단할 수 있다. 또한 ‘선택적 릴레이’를 통해 메시 혼잡을 제한할 수 있다. 릴레이를 차단하면, 노드는 패킷을 수신할 수 있지만, 전달할 수는 없다.
메시 사양은 ‘릴레이 노드’, ‘저전력 노드’, ‘프렌드 노드’, ‘프락시 노드’ 등 4가지 유형의 노드로 세분화되어 있다. 릴레이 노드는 수신된 패킷을 재전송할 수 있으며, 패킷을 네트워크 전반으로 빠르게 전파할 수 있는 메커니즘이다. 이러한 릴레이의 단점은 노드가 지속적으로 ‘Awake’ 상태를 유지해야 하기 때문에 전류 소모가 증가한다는 것이다. 메시 네트워크를 구성하는 블루투스 LE의 전력 소모는 경쟁 기술에 비해 유리하지만, 이러한 동작 모드는 배터리 전원만으로 유지하기 어렵다.
저전력 노드는 메인 전원으로 동작하는 프렌드 노드와 함께 작동하기 때문에 배터리로 구동이 가능하고, 영구적으로 활성 상태를 유지할 수 있다. 프렌드 노드는 미리 결정된 스케쥴에 따라 ‘수신’ 모드로 전환되는 저전력 노드 쪽으로 모든 메시지를 캐시하고, 캐시된 메시지를 수락하고, 명령에 따라 동작한 다음, 신속하게 절전 상태의 ‘슬립’ 모드로 돌아간다.
프락시 노드는 블루투스 LE 스택을 실행하지만, 블루투스 메시를 지원하지 않는 기기(예를 들어, 현 세대 스마트폰)를 블루투스 메시 네트워크와 연결할 수 있도록 해준다. 상호 작용은 노드 및 기기의 GATT 인터페이스를 통해 이뤄진다.(그림 2 참조)

AR(블루투스)-2.jpg

[그림 2] 프락시 노드(‘P’)는 블루투스 메시를 지원하지 않는 블루투스 저에너지 장치(예: 스마트폰)를 블루투스 매시 네트워크와 연결할 수 있도록 해준다.(출처: 블루투스 SIG)

블루투스 메시는 블루투스 기술 아키텍처를 따르고 있기 때문에 GATT ‘프로파일’을 통해 여러 적용 사례에서 공통의 정보 구조를 공유할 수 있도록 해준다. 그러나 메시 네트워크는 분산형 속성을 가지고 있기 때문에 프로파일 디자인은 다르다. GATT 프로파일이 메시와 동일한 것으로 오인되는 것을 방지하기 위해 메시 프로파일은 ‘모델’이라고 부른다.
블루투스 메시 1.0은 ‘컨피규레이션’, ‘하트비트’, ‘헬스’ 등의 기초 모델을 포함하고 있다. 이 기초 모델들은 ‘제너릭’, ‘라이팅’, ‘센서’, ‘신’과 같은 적용 사례용 ‘메시 모델’을 통해 보완된다. 또한 GATT 프로파일을 미러링하여 기초 모델 및 메시 모델을 사용자가 생성할 수도 있다.
노르딕의 개발 툴은 개발자들에게 간단한 블루투스 메시 애플리케이션 구현 단계를 가이드 해주는 예제 및 지침을 포함하고 있다. 블루투스 메시를 처음 사용하는 개발자라면, 이 예제와 지침을 이용해 시작하는 것이 가장 좋다. 지침에서 중요한 차이점은 블루투스 메시 노드가 앞에서 언급한 4개의 일반적인 유형에 속하기는 하지만, 각각의 기능은 해당 모델(또는 모델들)에 의해 결정된다는 것이다. 따라서 블루투스 메시를 시작하기 위해서는 모델을 이해하는 것이 중요하다.(박스기사 ‘블루투스 메시를 위한 모델 접근법’ 참조)

블루투스 메시 개발 툴

개발자는 블루투스 메시를 지금 바로 활용할 수 있다. 이 사양을 적용하기 위해 블루투스 LE 공급업체의 PHY나 기능을 지원하는 소프트웨어 스택을 업데이트하지 않아도 되기 때문이다.(노르딕의 PHY는 nRF51 또는 nRF52 시리즈 SoC이며, 소프트웨어 스택은 SoftDevice(예를 들어, S112, S132, S140)라고 부른다.) 또한 블루투스 메시는 최신 버전인 블루투스 5를 준수하는 PHY에만 국한되지 않고, 블루투스 4.0, 4.1, 4.2 칩을 사용하는 기존 제품에도 메시를 적용할 수 있다.
그러나 블루투스 메시를 사용하려면 공급업체가 구현한 메시 준수 스택을 도입해야 한다. 이 스택은 블루투스 호스트 레이어와 일부 컨셉은 공유하고 있지만, 호환되지 않는 전혀 새로운 호스트 레이어를 포함하고 있다.
노르딕의 블루투스 메시 스택은 ‘메시용 nRF5 SDK’에서 제공되며, 이 SDK는 메시 애플리케이션을 위한 드라이버, 라이브러리, 예제를 포함하고 있다. 또한 이 SDK는 CMake 및 세거 임베디드 스투디오를 비롯한 컴파일러 및 여러 IDE와 함께 동작한다.
메시용 nRF5 SDK는 블루투스 5 호환 미드-레인지급 nRF52832 SoC와 같은 노르딕의 최신 nRF52 시리즈 블루투스 LE 솔루션을 대상으로 하고 있다. 블루투스 메시는 기존의 PHY나 스택을 변경할 필요가 없기 때문에 노르딕의 nRF52 DK처럼 타깃 디바이스를 포함하고 있는 기존 DK를 사용하여 블루투스 메시 개발 작업을 수행할 수 있다.(그림 3 참조)

AR(블루투스)-3.jpg

[그림 3] 노르딕의 메시용 nRF5 SDK는 nRF52832 SoC를 포함하고 있는 nRF52 DK와 함께 동작한다.

메시를 개발하기 위해서는 메시 환경을 시뮬레이션하고 통신할 수 있는 최소한 3개(많을수록 좋음)의 장치가 필요하다. 이상적으로는 여러 개의 DK를 사용하여 메시의 노드를 나타낼 수 있지만, 이는 개발 하드웨어 비용이 크게 증가한다는 단점이 있다. 다른 방법은 하나의 DK를 사용하고, 타깃 디바이스를 기반으로 테스트 및 검증이 완료된 협력업체의 블루투스 LE 모듈을 구매하는 것이다. 노르딕의 nRF52832 SoC로 구현된 다양한 옵션의 모듈이 있다.


메시 네트워크 프로비저닝 및 구성


블루투스 메시 스택을 구현하기 위해서는 타깃 디바이스와 관련된 하드웨어 및 소프트웨어와 개발 툴에 어느 정도 익숙해져야 한다. 이러한 경험을 바탕으로 소규모 네트워크를 구성할 수 있는 SDK와 DK, 모듈(또는 추가 DK)을 사용한다면, 개발자는 초기 블루투스 메시 애플리케이션을 비교적 쉽게 만들 수 있다.
첫 번째 단계는 메시 스택을 구현하는 것이다. 노르딕의 경우 이 스택은 선택한 IDE를 이용해 구현된다. 예를 들어, 세거 임베디드 스투디오를 사용하면, 블루투스 메시 SDK에 포함된 예제 중 하나를 이용하고, IDE를 사용하여 컴파일링함으로써 스택을 구현할 수 있다.
그런 다음, 컴파일된 블루투스 메시 스택과 SoftDevice(노르딕의 블루투스 LE 스택)로 DK 상의 타깃 PHY를 지우고 재프로그램할 수 있다. 스택을 프로그램하고 검증한 다음에는, SDK를 사용하여 메시 네트워크를 설정하고, 구현할 수 있다.
노르딕의 개발 툴은 메시 네트워크에 새로운 장치를 추가하는데 사용되는 API를 포함하고 있다.(이를 ‘프로비저닝’이라고 함) 프로비저닝은 프로비저닝 작업을 위해 이미 네트워크의 일부로 이전에 구성된 ‘프로비저너’라고 불리는 장치를 통해 처리된다.(이 개발 사례에서 프로비저너는 nRF52 DK이다.) 프로비저너는 네트워크에 연결해야 하는 새로운 장치에 정보를 제공한다. 처음에는 프로비저닝되지 않은 장치에 네트워크 키와 어드레스, 디바이스 키(프로비저닝 후 구성을 위한 보안 채널을 설정하기 위해)가 제공된다.
개발자는 API를 사용하여 네트워크 가입을 기다리는 프로비저닝되지 않은 장치의 요청을 확인할 수 있다. 이 장치는 블루투스 LE의 3개의 애드버타이징 채널 중 하나로 전송된 브로드캐스트 비콘을 사용하여 통신한다. 채널에서 들어오는 링크 요청은 프로비저너에 의해 자동으로 승인된다.
링크가 설정되면, 네트워크에 가입하고자 하는 장치가 의도하는 타깃인지 확인하기 위해 인증(보안 강화를 위해 OOB 방법 사용)이 진행된다. 그런 다음, API 이벤트는 프로비저닝 데이터와 디바이스 키를 장치에 제공한다.
메시용 nRF5 SDK는 프로비저너 및 프로비저니 역할을 모두 갖춘 애플리케이션 개발 방법을 보여주는 조명 스위치 예제를 포함하고 있다. 이 데모에서 조명 스위치 클라이언트 모델은 프로비저너가 되고, 조명 스위치 서버 모델은 프로비저니가 된다.
노르딕의 예제는 서버가 ‘온(On)’ 또는 ‘오프(Off)’인지를 나타내는 블루투스 메시 사양에서 가장 간단한 서버인 ‘Generic OnOff Server’를 최대한 활용하고 있다. 한편 가장 간단한 클라이언트는 ‘Generic OnOff Model’로 정의된 메시지를 통해 ‘Generic OnOff Server’를 제어할 수 있는 ‘Generic OnOff Client’이다.
이 서버 모델이 클라이언트 모델에서 GET 또는 (신뢰할 수 있는) SET 메시지를 수신하면, OnOff 상태의 현재 값이 응답으로 전송된다. 이를 통해 클라이언트가 서버의 상태를 업데이트할 수 있다.(표 1 참조)

AR(블루투스)-표1.jpg

[표 1] Generic OnOff Model로 지원되는 메시지 및 ATT 실행 코드

‘컨피규레이션 서버’는 블루투스 메시 노드에서 필수적으로 요구되며, 장치의 메시 네트워크 구성을 나타내는데 사용된다. 컨피규레이션 서버는 ‘컨피규레이션 클라이언트’와의 통신 및 명령을 처리한다.(프로비저너로 제어됨)
프로비저닝이 완료되면 컨피규레이션이 시작된다. 프로비저너는 프로비저니의 구성 데이터를 판독하여 장치의 메타데이터를 식별하고, 어떤 모델이 디바이스의 어떤 요소에 바인딩 되는지를 확인한다. 그런 다음, 애플리케이션 또는 네트워크 키가 추가되고, 다른 모델에 바인딩된다.(그림 4 참조)
각각의 새로운 장치에 대한 프로비저닝 및 컨피규레이션 프로세스를 반복함으로써 네트워크에 더 많은 노드를 추가할 수 있다.

AR(블루투스)-4.jpg

[그림 4] 노르딕의 메시용 nRF5 SDK의 프로비저닝 및 컨피규레이션 플로우 차트. “nrf_mesh…” 콜-아웃은 API 기능이다.


게시 및 구독

네트워크 장치를 추가하고, 구성한 후에 개발자는 블루투스 메시에서 요구되는 모델의 ‘게시 상태’를 구성하고 ‘구독’을 설정해야 한다. 게시 상태는 상태 이벤트를 게시하는데 사용되는 어드레스와 키를 비롯해 어떤 TTL 값을 사용하는지 등의 항목이 포함된다.
메시지는 각 모델의 게시 어드레스에서 ‘Published’되면, 전송된다. 예를 들어, 게시는 데이터를 보고하는 센서 노드에 의해 사용된다. 메시지는 한 번만 게시되거나 반복될 수 있으며, 유니캐스트 어드레스, 그룹 어드레스, 가상 어드레스 등으로 전송된다. 또한 게시는 클라이언트 모델에서 서버 모델로 메시지를 전송하기 위해 사용된다.
게시 상태의 구성은 일반적으로 컨피규레이션 모델을 통해 프로비저너가 제어한다.
노르딕의 nRF5 DK를 사용하면, 게시 모델의 게시 설정(간격, 대상)에 따라 메시지를 게시하는 “access_model_publish()” API 기능을 이용해 메시지가 게시된다.
구독은 노드에서 요청하지 않은 메시지를 수신하는데 사용된다. 노르딕 SDK의 “access_model_subscription_list_alloc()” API 기능은 모델이 어드레스에 가입할 수 있도록 구독 목록을 할당한다. 구독을 통해 모델은 센서 노드에서 전송되는 데이터를 비롯해 게시된 메시지를 수신할 수 있다.
개발 과정에서 스마트폰과 같은 블루투스 메시를 지원하지 않는 장치를 네트워크에 연결하여 앱으로 스마트 조명을 구성할 수 있도록 하는 것이 유리할 수 있다. 이는 노드와 장치의 GATT를 통해 인터페이스 하는 프락시 노드로 스마트폰을 추가함으로써 구현할 수 있다.
블루투스 LE를 이용한 설계에 익숙한 개발자는 블루투스 메시를 시작하는데 유리하다. 그러나 블루투스 메시를 구현하기 위해서는 새로운 아키텍처를 배우고, 상태, 요소, 모델과 같은 의미를 이해해야 하며, 새로운 네트워크 장치를 구성하고, 추가하는 방법을 알아야 한다.
성공적인 구현을 위해서는 노르딕 세미컨덕터와 같은 신뢰할 수 있는 블루투스 LE 공급업체와 협력하는 것이 유리하다. 노르딕의 메시용 nRF5 SDK는 개발자들이 노르딕의 칩과 펌웨어, 설계 툴을 사용하여 블루투스 메시 애플리케이션 설계를 용이하게 해준다.


[참고문헌]

참조: [1] “Mesh Profile”, Bluetooth Specification v1.0, Bluetooth SIG, July 2017.


[블루투스 메시를 위한 모델 접근법]

블루투스 메시는 개발자가 장치를 위한 여러 가지 다양한 사용자 정의 동작을 구현할 수 있는 모델을 구성할 수 있기 때문에 메시 애플리케이션을 유연하게 구현할 수 있다. 모델은 요구되는 메시 ‘상태(states)’와 해당 상태에 따라 동작하는 ‘메시지’, 그리고 관련 상태의 동작을 정의한다. 메시 네트워크 상의 모든 통신은 메시지로 이뤄진다.

상태는 ‘요소(Elements)’의 조건을 나타내는 값이다. 요소는 자체 어드레스를 가질 수 있는 독립적인 장치 또는 노드이다. 각 장치에는 최소한 하나(1차측)의 요소가 있어야 하며, 하나 이상의 2차측 요소가 있을 수 있다. 이러한 요소들은 초기 구성 이후에 노드의 수명기간 동안 변경되지 않는다. 상태를 ‘공개(exposing)’하는 요소는 ‘서버’라고 하며, 상태에 ‘액세스(accessing)’하는 요소는 ‘클라이언트’라고 한다.

서버, 클라이언트, 제어는 사양에 정의되어 있는 3가지 유형의 모델이다. 서버 모델은 하나 이상의 요소에 대한 하나 이상의 상태로 구성되며, 전송 또는 수신할 수 있는 필수 메시지 세트와 메시지를 처리할 때의 요소 동작 및 메시지 처리 후 발생하는 추가 동작을 정의한다.

클라이언트 모델은 서버 모델에 의해 정의된 것처럼, 해당 서버의 상태를 요청, 변경, 또는 ‘소비(Consume)’하기 위해 클라이언트가 사용하는 메시지 세트를 정의하고 있다. 클라이언트 모델 자체에는 상태가 없다. 제어 모델은 클라이언트 모델 기능(다른 서버 모델과 통신)과 서버 모델 기능(다른 클라이언트 모델과 통신)을 결합할 수 있다. 또한 제어 모델은 제어 모델이 연결하고 있는 다른 모델들 사이에서 제어 모델의 상호작용을 조정하는 일련의 규칙과 동작을 포함할 수도 있다.(그림 a 참조)

블루투스 SIG(Special Interest Group)는 모델이 동작하는 방법을 보여주기 위해 파워 스트립(Power Strip) 예제를 사용했다.[1] 이 예제에서 파워 스트립은 각각 블루투스 메시에 연결된 두 개의 독립적인 전원 소켓으로 구성되어 있다. 이 장치(파워 스트립)는 두 개의 요소(개별 전원 소켓)로 구성된다. 이러한 각 요소의 기능은 서버의 상태 세트는 물론, 이러한 상태에서 동작하는 메시지 세트를 정의하는 제너릭 파워 레벨 서버 모델(Generic Power Level Server Model)로 정의된다. 소켓 요소 중 하나로 어드레스가 지정된 제너릭 파워 레벨 세트(Generic Power Level Set) 메시지는 출력 파워를 제어하기 위해 장치로 전송이 가능하다.

소켓은 조광기로 제어할 수도 있다. 이 경우 조광기는 제너릭 레벨 클라이언트 모델(Generic Level Client Model)을 구현해야만 한다. 이 모델은 원하는 레벨을 0, 최대값 또는 둘 사이의 값으로 설정한다. 소켓의 전원은 각 전원 소켓에서 GPA(Generic Power Actual) 상태가 제너릭 레벨 상태로 바인딩하는 ‘상태 바인딩(State Binding)’이라는 기능을 통해 제어된다. 제너릭 레벨 클라이언트는 제너릭 레벨 메시지를 제너릭 레벨 서버로 전송하여 제너릭 레벨 상태를 변경한 다음, 정의된 바인딩을 통해 출력 파워를 제어함으로써 GPA 상태를 변경한다.

이 요소들은 상태를 보고할 수 있기 때문에 각 소켓은 파워 레벨은 물론, 소켓에 연결된 장치의 에너지 소모 또한 리포트할 수 있다. 에너지 소모는 센서 서버 모델(Sensor Server Model)로 정의된 메시지를 이용하여 보고된다.

AR(블루투스)-박스1.jpg
[그림 a] 제어 모델을 구현하는 블루투스 메시 장치의 요소-모델 구조. 장치 C는 클라이언트(각각의 메시지 X, Y, Z 및 메시지 R, S, T)로서의 서버 모델(장치 A 및 B 내의)과 서버(메시지 A, B, C 지원)로서의 클라이언트 모델(장치 D 내의)과 통신할 수 있다.(출처: 블루투스 SIG)

leekh@seminet.co.kr
(끝)
<저작권자(c) 반도체네트워크, 무단 전재-재배포 금지>

X


PDF 다운로드

개인정보보호법 제15조에 의한 수집/이용 동의 규정과 관련하여 아래와 같이 PDF 다운로드를 위한 개인정보 수집 및 이용에 동의하십니까? 동의를 거부할 수 있으며, 동의 거부 시 다운로드 하실 수 없습니다.

이메일을 입력하면,
(1) 신규참여자 : 성명/전화번호/회사명/분야를 입력할 수 있는 입력란이 나타납니다.
(2) 기참여자 : 이메일 입력만으로 다운로드가 가능합니다.

×

회원 정보 수정