Bluetooth 메시를 사용하여 Bluetooth 저에너지 스마트 응용 제품 설계 - 2부

DigiKey 북미 편집자 제공

편집자 메모: 2부로 구성된 이 기사의 1부에서는 Bluetooth 메시 1.0 프로토콜의 아키텍처와 기능을 자세히 설명했습니다. 여기 2부에서는 칩 및 개발 키트를 사용하여 Bluetooth 메시를 Bluetooth 저전력 설계에 통합하는 방법을 설명합니다.

Bluetooth 메시는 널리 쓰이고 있는 단거리 프로토콜에 네트워킹이 제공하는 강력한 장점을 더해줍니다. 이러한 내용은 1부에서 자세히 설명했습니다. 하지만 이 사양은 특히 그 모델을 구현할 때 새로운 설계 문제에 직면하게 되는 문제가 있습니다.

이러한 문제를 해결할 핵심 방법은 업그레이드된 개발 도구를 활용하여 Bluetooth 메시에 익숙해지도록 하는 것입니다. 이 기사에서는 Bluetooth 하드웨어와 소프트웨어, 개발 키트(DK) 및 소프트웨어 개발 키트(SDK)를 선택 및 사용하여 Bluetooth 메시 응용 분야를 설정하고 구축하는 방법을 설명합니다.

Bluetooth 메시 개발 도구

Bluetooth 메시 스택은 BLE 호스트 층과 몇 가지 개념을 공유하는 완전히 새로운 호스트 층으로 구성되지만 이 호스트 층과 호환되지는 않습니다. Bluetooth 메시 스택의 이전 버전은 이제 엔지니어링 개발, 특히 SDK의 일부로 사용 가능해지고 있습니다.

Bluetooth 메시는 Bluetooth 핵심 사양을 보완하는 사양이므로, 판매업체가 이를 지원하도록 해당 BLE(Bluetooth 저전력) 물리층(PHY) 또는 소프트웨어 스택을 업데이트하지 않아도 됩니다. 하지만 Bluetooth 메시를 추가하려면 판매업체가 고객을 위해 고유한 스택 구현을 도입해야 합니다.

예를 들면 BLE 판매업체인 Nordic Semiconducctor의 경우 nRF5 SDK for Mesh를 도입했습니다. 이 키트에는 메시 응용 분야용 구동기, 라이브러리 및 사례를 엄선해 놓은 Bluetooth 메시 스택이 포함되어 있습니다. SDK는 Segger Microcontroller Systems 및 CMake의 SEGGER Embedded Studio를 포함한 여러 IDE(통합 개발 환경) 및 컴파일러에서 작동합니다.

Bluetooth 메시는 BLE의 모든 버전(예: 4.0, 4.1, 4.2 및 5)과 호환되므로, Nordic의 메시 SDK도 그 모든 BLE 칩에서 작동하게 될 것입니다. 하지만 현재 버전은 이 회사의 최신 nRF52 Series BLE 솔루션(예: 미드레인지 Bluetooth 5 호환 nRF52832 칩)에서만 작동합니다.

BLE PHY 또는 소프트웨어 스택에는 변화가 없으므로 Bluetooth 메시 개발 작업은 대상 장치를 통합하는 기존 DK에서 수행할 수 있습니다. nRF52832에 권장되는 DK는 nRF52 DK(그림 1)입니다.

Nordic Semiconductor의 nRF52 DK 이미지

그림 1: Nordic Semiconductor의 메시 SDK는 nRF52832 SoC 대상 장치를 통합하는 nRF52 DK에서 작동합니다. (이미지 출처: Nordic Semiconductor)

메시를 개발하려면 메시 환경과 통신하고 메시 환경을 시뮬레이션하기 위해 적어도 3개(4개 이상 선호)의 장치가 필요합니다. 원칙적으로는 여러 DK를 사용하여 메시에 노드를 나타낼 수 있지만, 그렇게 하면 개발 하드웨어 비용이 크게 늘어나는 단점이 있습니다. 대안은 DK를 한 개 사용하고 테스트 및 확인된 BLE 모듈(대상 장치를 기반으로 함)을 구입하여 추가 노드를 형성하는 것입니다. Nordic nRF52832를 사용하여 개발하려면 Rigado의 BMD-300 또는 Laird의 BL652-SA-01-T/R이 좋은 모듈 옵션입니다.

Cypress Semiconductor도 Nordic와 유사한 노선을 택했습니다. Cypress의 BCM20736S Bluetooth v4.1 PHY를 기반으로 한 BCM92073X WICED Smart DK용 Bluetooth 메시 SDK를 제공합니다. 이 PHY에 기반한 메시 개발 작업에 적합한 BLE 모듈로는 Inventek의 ISM20736S를 들 수 있습니다.

모델 이해

Nordic 및 Cypress의 하드웨어, 소프트웨어 및 개발 도구는 개발자에게 간단한 Bluetooth 메시 응용 분야를 구축하는 단계를 안내하는 예제와 튜토리얼을 제공합니다. 하지만 Bluetooth 메시 아키텍처에는 설계 공정에 대한 주요 베어링이 있기 때문에 첫 번째 설계에 착수하기 전에 관련된 튜토리얼을 살펴보면 이 아키텍처의 고유한 특징을 이해하는 데 도움이 됩니다.

이러한 튜토리얼은 Bluetooth 메시 노드가 네 가지 일반 유형으로 제공되지만(이 2부 연재 기사 중 1부 참조) 각 기능은 해당 모델에 의해 결정된다는 점을 강조합니다. 모델을 이해하면 Bluetooth 메시 기능을 최대한 활용할 수 있습니다.

개발자가 여러 맞춤형 동작으로 기기를 활성화하는 모델을 구축할 수 있으므로 Bluetooth 메시는 Novel 메시 응용 분야를 구축하는 데 필요한 유연성을 제공합니다. 모델은 필요한 상태, 이러한 상태에 대해 작동하는 메시지 및 관련된 동작을 정의합니다. 메시 네트워크 간 모든 통신은 메시지에 의해 가능합니다.

상태는 소자의 상태를 나타내는 값입니다. 소자는 장치 또는 노드의 어드레서블 엔터티입니다. 각 장치에는 적어도 한 개의 (기본) 소자가 있고 한 개 이상의 보조 소자가 있습니다. 소자의 개수 및 구조는 노드의 수명 중에는 변경되지 않습니다. 상태를 ‘노출’하는 소자를 서버라고 합니다. 상태에 '액세스'하는 소자를 클라이언트라고 합니다.

중요한 것은 모델이 서버, 클라이언트 및 컨트롤의 세 가지 유형으로 제공된다는 것입니다. 서버 모델은 하나 이상의 소자를 확장한 한 개 이상의 상태로 구성됩니다. 전송하거나 수신할 수 있는 필수 메시지 세트, 메시지를 전송하고 수신할 때 소자의 동작, 메시지를 전송하거나 수신한 후 발생하는 추가 동작을 정의합니다.

클라이언트 모델은 클라이언트가 서버 모델에 정의된 대로 해당 서버 상태를 요청하거나, 변경하거나, '소비'하는 데 사용하는 메시지 세트를 정의합니다. 클라이언트 모델에는 상태가 없습니다.

제어 모델은 클라이언트 모델 기능(다른 서버 모델과 통신)과 서버 모델 기능(다른 클라이언트 모델과 통신)을 결합할 수 있습니다. 제어 모델에 제어 모델이 연결되는 다른 모델 간에 제어 모델의 상호 작용을 조정하는 규칙 및 동작 세트인 제어 논리가 포함되어 있을 수도 있습니다(그림 2).

Bluetooth 메시 장치의 소자 모델 구조 구성도

그림 2: 제어 모델을 구현하는 Bluetooth 메시 장치의 소자 모델 구조입니다. 장치 C는 클라이언트(각각 메시지 X, Y, Z와 메시지 R, S, T)로서 서버 모델(장치 A와 B 내)과 통신하고, 서버(메시지 A, B 및 C 지원)로 클라이언트 모드(장치 D 내)와 통신할 수 있습니다. (이미지 출처: Bluetooth SIG)

실제 예에서 모델 사용을 보여주려면 각각 전원 출력을 제어하고, BLE 무선 통신을 제어하고, BLE 무선 통신을 통합하는 두 개의 독립적인 전원 소켓을 구성하는 멀티탭을 사용하여 Bluetooth 메시를 연결할 수 있게 하십시오.

이 장치(멀티탭)에는 두 개의 전원 소켓을 각각 나타내는 두 개의 소자가 사용됩니다. 각 소자의 기능은 서버의 상태 세트뿐만 아니라 상태에서 작동하는 메시지 세트를 정의하는 Generic Power Level Server 모델로 정의됩니다. 출력 전력을 제어할 장치에 Generic Power Level Set 메시지가 전송될 수 있습니다. 메시지는 소켓의 소자 중 하나에 전달됩니다.

소켓은 조광기와 같이 Generic Level Client 모델을 구현한 일반 장치에서 제어할 수도 있습니다. 이 모델은 원하는 레벨을 0, 최대값 또는 사이 값으로 설정합니다. 소켓에 연결된 전원은 상태 바인딩을 통해 제어됩니다. 각 전력 소켓에서 Generic Power Actual 상태가 Generic Level 상태에 연결됩니다. Generic Level Client에서 Generic Level 메시지를 Generic Level Server에 보냅니다. Generic Level 상태가 변경되고, 정의된 바인딩을 통해 차례로 전원 출력을 제어하는 Generic Power Actual 상태를 변경합니다.

소자가 상태를 보고할 수 있으므로 각 소켓에서 전원 레벨뿐만 아니라 소켓에 꽂혀 있는 장치의 에너지 소비도 보고할 수 있습니다. 에너지 소비는 센서 서버 모델에 정의된 메시지를 사용하여 보고됩니다.

Bluetooth 메시 네트워크 구축

개발자가 Bluetooth 메시와 BLE 개발 아키텍처에 모두 친숙해졌고(일반 BLE 설계에 대한 자세한 내용은 DigiKey 기사: “Bluetooth 4.1, 4.2 및 5 호환 가능한 Bluetooth 저전력 SoCs 및 도구가 IoT 문제 충족” 참조) 네트워크를 설정할 수 있게 Bluetooth 메시 SDK, 호스트 SDK, DK 및 추가 모듈을 갖추고 있을 경우 개발자가 비교적 쉽게 Bluetooth 메시 구현을 구성할 수 있습니다.

첫 번째 단계는 메시 스택을 구축하는 것입니다. Nordic의 경우에는 선택한 IDE를 사용하여 스택이 구축되었습니다. 예를 들어 SEGGER Embedded Studio에서는 Bluetooth 메시 SDK(예:“조명 스위치”)에 포함된 예제 중 하나를 사용하고 IDE를 사용하여 컴파일하여 스택을 구축했습니다.

DK의 대상 PHY가 지워지고, 컴파일된 Bluetooth 메시 스택과 BLE 스택으로 재프로그래밍됩니다. 스택이 프로그래밍되고 확인되었으면 SDK를 사용하여 메시 네트워크를 설정하고 구축할 수 있습니다.

프로비저닝: Nordic의 개발 도구에 메시 네트워크에 새로운 장치를 추가하는 데 사용되는 지원 API(애플리케이션 프로그래밍 인터페이스)가 포함되어 있습니다. 프로비저닝은 새로운 장치에 가입을 위해 필요한 정보를 제공하는 데 사용된 메시 네트워크에 구축 프로그램(네트워크에 이미 연결되어 있고 이전에 지원 작업에 대해 구성된 장치)에 의해 처리됩니다. 처음에는 지원 후 구성에 대한 보안 채널을 설정하기 위해 장치에 네트워크 키, 주소 및 장치 키가 제공됩니다.

개발자는 API를 사용하여 BLE의 세 개 광고 채널 중 하나에서 보낸 지원되지 않는(또는 provisionee - 네트워크에 추가할 장치) 노드의 통신 비컨 수신을 시작할 수 있습니다. Bluetooth 메시는 37개의 전체 대역폭 데이터 채널이 아닌 BLE의 광고 채널을 사용하여 메시지를 송신 및 수신합니다. 채널에서 수신 링크 요청은 구축 프로그램이 자동으로 허용합니다.

링크가 설정되면 네트워크에 가입한 장치가 의도한 대상인지 확인하기 위해 OOB(Out-Of-Band) 방식으로 인증됩니다. OOB 방식을 사용하면 BLE의 스펙트럼 할당을 수신하는 장치의 "메시지 가로채기(man-in-the-middle)" 공격 가능성이 줄어듭니다. 그러면 API 이벤트가 지원 데이터와 장치 키를 장치에 제공합니다.

구성: Nordic의 “조명 스위치” 응용 분야(SDK에 포함됨)는 구축 프로그램과 provisionee 역할을 모두 가진 응용 분야를 개발하는 방법을 보여줍니다. 데모에서 조명 스위치 클라이언트 모델(스위치)이 구축 프로그램이고, 조명 스위치 서버 모델(전구)이 provisionee입니다.

Nordic의 예제는 Bluetooth 메시 사양에서 가장 단순한 서버는 서버가 켜져 있거나 꺼져 있음을 나타내는 Generic OnOff Server라는 사실을 최대한 활용한 것입니다. 예를 들면 가장 단순한 클라이언트는 Generic OnOff Model에 정의된 메시지를 통해 Generic OnOff Server를 제어할 수 있는 Generic OnOff Client입니다.

이 서버 모델이 클라이언트 모델에서 GET 또는 (안정적인) SET 메시지를 수신하면 OnOff 상태의 현재 값을 응답으로 보냅니다. 이렇게 하면 클라이언트를 서버 상태에 대해 최신으로 유지합니다(그림 3).

이름 정의 Opcode 설명 파라미터 파라미터 크기
SET SIMPLE_ON_OFF_OPCODE_SET 0xc1 현재 켜기/끄기 상태 설정 새로운 상태 1바이트
GET SIMPLE_ON_OFF_OPCODE_GET 0xc2 현재 켜기/끄기 상태 가져오기 N/A 파라미터 없음
SET UNRELIABLE SIMPLE_ON_OFF_OPCODE_SET_UNRELIABLE 0xc3 현재 켜기/끄기 상태 설정 새로운 상태 1바이트
Status SIMPLE_ON_OFF_OPCODE_STATUS 0xc4 현재 상태 포함 현재 상태 1바이트

그림 3: Generic OnOff Model에서 지원하는 메시지 및 ATT opcode. (이미지 출처: Nordic Semiconductor)

구성 서버는 장치의 메시 네트워크 구성을 나타내는 데 사용되며, Bluetooth 메시 노드에 대한 필수 요구 사항입니다. 구성 서버는 구성 클라이언트(구축 프로그램이 제어함)와의 통신을 처리하고, 구성 클라이언트의 지침을 처리합니다.

구성은 지원 완료 후에 시작됩니다. 구축 프로그램은 provisionee의 복합 데이터를 읽고 장치의 메타데이터 및 장치의 소자에 연결된 모델을 식별합니다. 그런 다음 응용 분야 및/또는 네트워크 키가 다른 모델에 추가되고 연결됩니다(그림 4).

nRF5 SDK for Mesh의 구성 순서도 구성도

그림 4: nRF5 SDK for Mesh의 지원 구성 순서도. “nrf_mesh…” 호출은 API 함수입니다. (이미지 출처: Nordic Semiconductor)

네트워크에 더 많은 장치를 추가하는 것은 각각의 새 노드에 대한 지원 및 구성 공정을 반복하는 경우입니다.

게시 및 구독: 초기 응용 분야 설정 및 구축의 최종 단계는 모델의 게시 상태를 구성하는 것입니다. 예를 들면, 어떤 키에 어떤 TTL("Time to Live") 값을 사용하여 상태 이벤트를 게시하고 구독을 설정하는 데 사용된 주소입니다.

메시지는 각 모델의 게시 주소에서 게시될 때 전송됩니다. 게시는 예를 들면, 센서 노드가 정기적으로 데이터를 보고하는 데 사용됩니다. 메시지는 한 번만 또는 반복해서 게시할 수 있고, 유니캐스트, 그룹 또는 가상 주소로 전송됩니다(이 기사의 1부 참조). 게시는 클라이언트 모델이 서버 모델로 메시지를 보낼 때도 사용됩니다.

게시 관련 상태 구성은 일반적으로 구성 모델을 통해 구축 프로그램에서 제어합니다.

Nordic SDK를 사용할 때 메시지는 “access_model_publish()” API 함수를 사용하여 게시됩니다. 이 함수는 게시 모델의 게시 설정(간격, 대상)에 따라 메시지를 게시합니다.

구독을 통해 모델이 특정 주소에서 수신되는 메시지를 수신할 수 있습니다. 이 방법은 예를 들면, 센서 노드에서 게시된 주기 메시지를 수신하는 데 사용할 수 있습니다. Nordic SDK를 사용하면 모델에서 “access_model_subscription_list_alloc()” API 함수를 사용하여 구독 목록을 할당함으로써 주소를 구독할 수 있습니다.

클라이언트 모델을 사용할 때 메시지에 대한 회신을 받기 위해 그러한 메시지를 보내는 주소를 구독하지 않아도 됩니다. 구독은 노드에서 복잡하지 않은 메시지를 수신하는 데에만 사용됩니다.

개발 과정 중에 비 Bluetooth 메시를 사용하는 장치를 Bluetooth 메시에 연결하는 것이 유리할 수 있습니다. 개발자가 프로토타입 스마트 조명 메시 응용 분야를 제거하는 데 사용하려는 스마트폰을 예로 들 수 있습니다. 모바일과 메시 간 상호 작용은 Bluetooth 메시 스택이 아니라, Bluetooth 스택에서 스마트폰 및 노드 장치의 Generic Attribute Profile(GATT) 인터페이스를 통해 수행됩니다.

결론

Bluetooth 메시는 BLE 응용 분야에 새로운 기능을 추가합니다. 하지만 기존 핵심 사양의 일부로 포함되어 있지 않기 때문에 메시를 채택했을 때 몇 가지 대안이 필요하고 설계 공정이 복잡해집니다. Bluetooth 프로토콜 스택을 사용한 설계에 익숙한 개발자는 지식이 없는 개발자에 비해 유리하긴 하지만, 경험이 많은 엔지니어라도 Bluetooth 메시를 구현하기 위해 새로운 아키텍처를 학습하고 상태, 소자 및 모델과 같은 미묘한 차이를 이해해야 합니다.

설계 문제는 Nordic Semiconductor 또는 Cypress Semiconductor와 같은 판매업체를 이용하면 쉽게 해결할 수 있습니다. 이러한 판매업체는 현재 완전한 BLE 솔루션을 구현하기 위해 Bluetooth 메시 스택을 출시했습니다. 스택은 목적에 따라 설계된 SDK가 수반됩니다. 개발자는 이러한 SDK를 통해 Bluetooth 메시 응용 분야를 설계하는 학습 과정을 가속화할 수 있는 칩, 펌웨어 및 설계 도구를 사용할 수 있습니다.

참고 자료

  1. 메시 프로파일”, 2017년 7월 Bluetooth 사양 v1.0, Bluetooth SIG.
DigiKey logo

면책 조항: 이 웹 사이트에서 여러 작성자 및/또는 포럼 참가자가 명시한 의견, 생각 및 견해는 DigiKey의 의견, 생각 및 견해 또는 DigiKey의 공식 정책과 관련이 없습니다.

게시자 정보

DigiKey 북미 편집자