블루투스 기초
BLE 프로토콜 스펙에 대해 더욱 상세하게 정리한 자료가 업데이트 되었습니다. 아래 링크의 글도 참고하세요.
- 블루투스 기초 <<<<< 현재 문서
- 블루투스 스펙 소개
- BLE 프로토콜 상세 링크
.
아래 원문을 번역, 수정한 문서입니다.
원문 : https://learn.sparkfun.com/tutorials/bluetooth-basics
.
블루투스
블루투스는 2.4GHz 무선 링크를 통해 데이터를 주고받기위한 표준입니다. 블루투스는 보안 프로토콜이며 단거리, 저전력, 저비용으로 장치들을 무선 연결할 수 있도록 해줍니다.
근래에는 많은 장치들이 무선으로 연결되고 있으며 블루투스가 이 중 큰 부분을 차지하고 있습니다. headsets, video gamecontrollers, livestock trackers, DIY HID Computer Keyboard, right module, homebrew, wireless MP3-playing speaker 등 많은 분야에 활용예가 있습니다.
특히 단거리에서(<100m) 상대적으로 작은 데이터를 주고 받는데 최고의 프로토콜입니다. 그리고 블루투스는 유선 통신인 시리얼 통신 인터페이스를(serial communication interfaces) 무선으로 대체할 수 있습니다.
이 문서는 블루투스 프로토콜, 스펙, 프로파일에 대해 간략히 기술합니다.
참고자료
- Serial Communication – Bluetooth is like a RF version of serial communication.
- Hexadecimal – Bluetooth devices all have a unique address, which is usually presented as a hexadecimal value.
.
블루투스 동작 원리
블루투스는 unlicensed ISM frequency band – 2.4GHz 주파수 대역에서 동작합니다. 이 주파수 대역은 ZigBee, WiFi 등도 사용하는 RF 대역입니다. 따라서 블루투스는 다른 프로토콜과 분리되어 동작할 수 있도록 표준이 만들어져 있습니다. 표준에 대한 상세 내용이 필요한 경우 published specifications 링크에서 확인할 수 있습니다.
마스터(Masters), 슬레이브(Slaves), 피코넷(Piconets)
블루투스 네트워크는(보통 piconets으로 불리는) 마스터/슬레이브(master/slave) 모델을 사용합니다. 이 모델은 하나의 마스터 장치가 다수의(7개 까지) 슬레이브 장치와 연결될 수 있습니다. 피코넷에 연결되는 슬레이브 장치는 오직 하나의 마스터 장치에만 연결이 가능합니다.
마스터 장치는 피코넷을 통해 통신을 조율합니다. 마스터 장치는 연결된 어떤 슬레이브 장치에든 데이터를 전송할 수 있고, 요청을 보낼 수도 있습니다. 슬레이브 장치는 마스터와 데이터를 교환할 수 있지만 슬레이브간 통신은 할 수 없습니다.
.
블루투스 주소와 이름 (Bluetooth Addresses and Names)
모든 블루투스 장치는 약어로 BD_ADDR 라 불리는 고유한 48-bit(6 bytes) 주소를 가집니다. 이 주소는 항상 12자리 16진수로 값으로 표시됩니다. 이 주소의 상위 절반(24 bits)은 organization unique identifier (OUI)라 불리며 제작사를 나타냅니다. 하위 절반(24-bits)은 장치의 고유한 주소입니다.
블루투스 장치를 검색하면 항상 이 주소가 보여지게 됩니다. 예를 들어 아래와 같은 RN-42 Bluetooth Module 의 경우, “MAC NO.” 항목이 000666422152 로 표시되어 있습니다.
“000666” 부분이 모듈을 생산한 OUI of Roving Networks 입니다. 모든 RN module 은 상위 24-bits에 같은 값을 공유합니다. 그리고 하위 절반 “422152” 는 모듈의 고유한 ID 입니다.
블루투스 장치들은 사용자가 이해하기 쉽도록 이름을 제공할 수 있습니다. 이 이름은 블루투스 장치를 구분하기 쉽도록 고유 주소 대신 보여집니다. 휴대폰에서 블루투스 장치를 검색하면 아래와 같이 이름이 보여짐을 알 수 있습니다.
장치의 이름은 248 byte 까지 가능하며 두 장치가 같은 이름을 사용할 수 있습니다. 그래서 이름에는 종종 블루투스 모듈의 고유 ID가 포함되기도 합니다.
.
연결 과정 (Connection Process)
블루투스 연결 과정은 아래 세 단계를 통해 이루어집니다.
- Inquiry – 두 개의 블루투스 장치가 서로를 완전히 모르는 상태라면 서로를 찾기 위한 과정을 거쳐야 합니다. 하나의 장치(폰, PC등)가 inquiry request를 보내면 다른 하나의 장치는 이 request에 대해 주소, 이름 및 기타 정보와 함께 응답해줘야 합니다.
- Paging (Connecting) – Paging 은 두 장치가 연결되기위한 과정입니다. 연결이 완성되기 전에 각각의 장치는 서로의 주소를 알고 있어야만 합니다.
- Connection – Paging 과정이 끝나면 connection 상태가 됩니다. 연결이 된 동안 장치들은 자신의 상태(모드)를 바꿀수 있습니다.
- Active Mode – 일반적인 연결 상태. 장치는 데이터를 전송, 수신하는데 참여합니다.
- Sniff Mode – 절전 모드. Sleep(비활동) 상태를 유지하다 정해진 간격(예. every 100ms)마다 송수신 내용이 있는지 확인합니다.
- Hold Mode – 일시적인 절전 모드. 장치는 정해시 시간동안 Sleep 상태에 들어갔다 다시 Activie 모드로 돌아옵니다. 마스터 장치가 슬레이브 장치에게 이 모드로 들어가도록 지시할 수 있습니다.
- Park Mode – 정지 모드. 더 깊은 절전 모드로 마스터 장치에서 신호가 있을까지 정지모드로 들어가도록 알려줍니다.
Bonding and Pairing
두 장치기 연결된 후 특별한 데이터를 교환하면 Bonding 상태를 만들 수 있습니다. Bonding 된 장치들은 서로 가까운 거리를 유지할 때 자동으로 연결됩니다. 예를 들어 휴대폰이 차량의 블루투스 장치와 Bonding 되면 이후부터 차 안에서 자동으로 연결되도록 할 수 있습니다. 이 과정이 이루어지는데 UI 조작이 전혀 필요치 않습니다.
Bonding 은 페어링(pairing)이라 불리는 과정으로 만들어집니다. 두 장치는 페어링 될 때 서로 주소, 이름, 프로파일(profiles)을 교환하고 저장해둡니다. 또한 common secret key 를 교환해서 향후 Bonding 될 때 사용합니다.
페어링은 사용자가 원하는 장치만 연결이 될 수 있도록 인증 과정을 요구합니다. 인증 과정을 위해서는 별도의 UI 조작이 필요하지만 이 과정을 생략하고 인증없이 연결되도록 할 수도 있습니다.(헤드셋 처럼 UI 조작이 어려운 경우) 인증 과정은 6자리 숫자를 입력받아 수행하는데 예전 기기의 경우(v2.0 또는 이전) PIN 코드를 사용합니다. PIN 코드는 4자리 숫자부터 16자 알파벳 문자까지 다양한 방법이 사용될 수 있습니다.
.
Power Classes
블루투스 모듈의 신호 전송 강도, 신호 도달 범위는 다음과 같이 3단계 파워 클래스(power class)로 구분됩니다.
Class Number | Max Output Power (dBm) | Max Output Power (mW) | Max Range |
---|---|---|---|
Class 1 | 20 dBm | 100 mW | 100 m |
Class 2 | 4 dBm | 2.5 mW | 10 m |
Class 3 | 0 dBm | 1 mW | 10 cm |
모듈은 하나 혹은 복수의 파워 클래스를 지원할 수 있습니다.
.
블루투스 프로파일 (Bluetooth Profiles)
블루투스 프로파일은 블루투스 장치가 어떤 종류의 데이터를 보내는지 명확하게 정의하기 위한, 블루투스의 기본 표준위에 더해진 프로토콜입니다. 블루투스 specifications 는 블루투스가 어떻게 동작하는지를 설명하고 프로파일은 어떻게 사용되는지를 정의합니다.
블루투스 프로파일은 연결되었을 때 장치가 어떻게 동작해야 하는지를 결정합니다. 예를들어 핸즈프리 헤드셋의 경우 headset profile (HSP)을 사용하고, Nintendo Wii Controller 의 경우는 human interface device (HID) 프로파일을 사용합니다. 이 장치들과 연결되는 장치의 경우, 호환성을 갖기 위해서는 두 프로파일을 모두 지원해야 합니다.
아래는 자주 접하게 되는 블루투스 프로파일 입니다.
.
Serial Port Profile (SPP)
블루투스를 이용해 serial communication interface (like RS-232 or a UART) 를 무선으로 대체하고 싶은 경우SPP 프로파일을 사용하면 됩니다. SPP 프로파일은 두 장치가 많은 양의 데이터를 교환하는데 초점이 맞춰져 있습니다. 이 프로파일은 블루투스의 가장 기본적인 프로파일 중 하나이기도 합니다. (블루투스의 원래 목적이 RS-232 케이블 통신을 대체하는 것이기 때문)
SPP 프로파일을 사용하면 두 장치는 RX, TX 라인이 마치 유선으로 연결된 것 처럼 데이터터를 주고 받을 수 있습니다. 두 개의 아두이노 컨트롤러를 예로들며, 블루투스가 유선으로 연결된 통신 라인을 대체하는 효과를 냅니다. (아두이노 입장에서는 유선이든 무선이든 코드의 변화를 최소화 해서 거의 유사하게 사용할 수 있습니다.)
Human Interface Device (HID)
HID 프로파일은 블루투스를 이용한 사용자 입력장치에 사용됩니다. 키보드, 마우스, 조이스틱, 비디오 게임 컨트롤러 등에 주로 사용됩니다.
HID 프로파일은 실제로는 USB 사용자 입력장치를 지원하기 위한 것입니다. SPP 프로파일이 RS-232 케이블의 대체재인 것처럼 HID 프로파일도 USB 케이블을 대체하는 것을 목표로 합니다. (그만큼 더 복잡함)
.
Hands-Free Profile (HFP) and Headset Profile (HSP)
블루투스 이어폰 등에 사용되는 프로파일로 HFP 의 경우는 차량의 hands-free 오디오 시스템에 사용됩니다. HFP는 HSP 를 기반으로 일반적인 폰 인터랙션 (전화 수신/거절, 종료 등)을 추가로 지원하기 위한 내용들이 포함되었습니다.
.
Advanced Audio Distribution Profile (A2DP)
블루투스 장치간 오디오를 전송하기 위한 프로파일입니다. HFP, HSP 는 오디오를 양방향으로 전송하지만 A2DP 는 단방향으로만 전송합니다. 대신 오디오의 음직은 훨씬 높습니다. 상세한 내용은 링크(A2DP specification)를 참고하세요.
대부분의 A2DP 블루투스 모듈은 제한된 오디오 코덱만을 지원합니다. 최소한 SBC (subband codec), MPEG-1, MPEG-2, AAC, ATRAC 정도는 지원할 것입니다.
.
A/V Remote Control Profile (AVRCP)
Audio/video remote control profile (AVRCP) 는 블루투스 장치를 무선으로 제어하기 위한 프로파일입니다. 오디오 플레이어를 무선으로 제어가 가능하도록 하기위해 A2DP 프로파일과 함께 지원되곤 합니다. AVRCP specification
.
블루투스 버전 (Common Versions)
블루투스는 1994년 부터 꾸준히 진화되어 왔습니다. 가장 최근의 블루투스 버전은 Bluetooth v4.0 이며 현재 광범위하게 사용되고 있습니다. 아래는 블루투스 버전의 변천 과정과 특징을 나열한 것입니다.
Bluetooth v1.2
v1.x 은 프로토콜, 스펙 표준화를 위한 준비 과정으로, v1.x의 최신 안정화 버전이 Bluetooth v1.2 입니다. 현재의 버전보다 무척 제한된 기능만을 포함하고 있으며 1 Mbps (실제 사용시 0.7 Mbps 정도) 속도, 전송거리 10 m 정도입니다.
Bluetooth v2.1 + EDR
2.x 버전이 소개되고 추후 enhanced data rate (EDR)버전이 다시 소개되게 됩니다. EDR 버전은 전송 속도를 3 Mbps (실 사용시 2.1 Mbps)로 끌어올렸습니다. Bluetooth v2.1 버전은 secure simple pairing (SSP) 프로파일과 함께 2007년 발표되었습니다.
Bluetooth v2.1 모듈은 현재도 흔하게 사용되는 모듈입니다. 2 Mbps 의 전송 성능으로 충분한 저성능의 마이크로 컨트롤러에 유용하게 사용됩니다.
Bluetooth v3.0 + HS
Bluetooth v3.0 버전은 v2.0 버전의 3 Mbps 속도보다 무려 8배 빠른 속도 – 24 Mbps를 냅니다. 하지만 이 데이터 속도는 실제로는 WiFi (802.11) 연결을 통해 가능합니다. 블루투스는 단지 모듈간 연결과 연결 관리를 위해서만 사용됩니다.
(이 버전은 사용 사례가 적어서 이하 원문을 그대로 인용) It can be tricky to nail down the maximum data rate of a v3.0 device. Some devices can be “Bluetooth v3.0+HS”, and others might be labeled “Bluetooth v3.0”. Only those devices with the “+HS” suffix are capable of routing data through WiFi and achieving that 24 Mbps speed. “Bluetooth v3.0” devices are still limited to a maximum of 3 Mbps, but they do support other features introduced by the 3.0 standard like better power control and a streaming mode.
Bluetooth v4.0 and Bluetooth Low Energy
Bluetooth 4.0 버전은 세 개의 카테고리로 나눠집니다. : classic, high-speed, and low-energy. Classic 블루투스와 high speed 블루투스는 각각 Bluetooth v2.1+EDR 과 v3.0+HS 에 대응됩니다. 따라서 실제 Bluetooth v4.0 표준은 Bluetooth low energy (BLE) 입니다.
BLE 는 저전력으로 동작할 수 있도록 기존 블루투스 표준을 완전히 뜯어고친겁니다. BLE는 신호 도달 거리를 희생하고 (100m –> 50m) 데이터 전송 속도를 희생해서 (0.7-2.1 Mbps –> 0.27 Mbps) 전력 소모를 줄였습니다. BLE 는 배터리에 의존하면서 빠른 전송 속도와 연결의 지속성을 요하지 않는 주변 장치(센서 장치)에 적합하도록 설계되었습니다. 덕분에 스마트 워치, 스마트 밴드 및 각종 휴대용 장치에 광범위하게 사용됩니다.
.
Wireless Comparison
블루투스는 단순한 무선 프로토콜이 아닙니다. 이 문서를 읽게 해주는 WiFi 도 있고, ZigBees or XBees 같은 모듈도 듣거나 사용해 본 적이 있을겁니다. 그럼 블루투스가 이런 무선 데이터 전송 프로토콜과 다른점은 무엇일까요? 아래 표를 통해 비교해보세요.
Name | Bluetooth Classic | Bluetooth 4.0 Low Energy (BLE) | ZigBee | WiFi |
---|---|---|---|---|
IEEE Standard | 802.15.1 | 802.15.1 | 802.15.4 | 802.11 (a, b, g, n) |
Frequency (GHz) | 2.4 | 2.4 | 0.868, 0.915, 2.4 | 2.4 and 5 |
Maximum raw bit rate (Mbps) | 1-3 | 1 | 0.250 | 11 (b), 54 (g), 600 (n) |
Typical data throughput (Mbps) | 0.7-2.1 | 0.27 | 0.2 | 7 (b), 25 (g), 150 (n) |
Maximum (Outdoor) Range (Meters) | 10 (class 2), 100 (class 1) | 50 | 10-100 | 100-250 |
Relative Power Consumption | Medium | Very low | Very low | High |
Example Battery Life | Days | Months to years | Months to years | Hours |
Network Size | 7 | Undefined | 64,000+ | 255 |
블루투스는 무선 네트워크가 요구되는 모든 상황에 적합한 프로토콜은 아닙니다. 대신 근거리, 무선 피코넷 통신망을 만드는데 유용한 프로토콜입니다. 그리고 다른 프로토콜에 비해 편리한 연결 과정을 제공합니다. (특히 ZigBee 에 비해)
ZigBee 는 홈 오토메이션처럼 네트워크를 모니터링 해야하는 상황에 좋은 답안입니다. 이런 네트워크에는 수십개의 무선 노드가 존재하며 대용량의 데이터를 사용하지 않고 일시적으로 동작합니다.
BLE 는 classic Bluetooth 의 편리함과 저전력의 장점을 결합했습니다. 이런 특징으로 배터리 소모량이 훨씬 적은 것이 Zigbee 에 비교시 최고의 장점입니다. BLE 는 네트워크 사이즈 측면에서 ZigBee 와 경쟁할 순 없지만 1:1 연결에는 최적화되어 있습니다.
WiFi 는 가장 익숙한 프로토콜일 것입니다. WiFi는 인터넷(!)을 위한 최적의 솔루션입니다. 빠르고 유연한 대신 많은 전력을 소모합니다. 광대역 인터넷에 접속할 수 있다는 장점 자체는 다른 프로토콜이 무색케 만듭니다.
.
참고자료
더 상세한 자료는 아래 링크를 참고하세요:
- palowireless Bluetooth Tutorial – Great in-depth look at how Bluetooth works on every layer. If you’re interested in getting an overview of the protocols behind Bluetooth, check this out.
- Bluetooth.org Specifications – Thousands of pages covering the specifications of every Bluetooth version and profile known to mankind.
- Althos Bluetooth Tutorial – This is a well done beginner tutorial presented in slide form.