Developer Document

Embedded Software 개발을 하면서 습득한 내용을 적은 시니어 개발자들의 글

코 독 코 독 CoderDocument

Embedded SW 기초

Bluetooth란 + BLE 동작 방식

stdQ 2024. 6. 3. 19:58

 

블루투스란 디지털 기기 사이에 전파를 이용하여 정보를 교환하는 기술로, 디지털 기기를 연결하는 케이블을 대체하는 단거리 무선 통신 시스템이라고 할 수 있습니다.

1994년 에릭슨이 최초로 개발하였고, 1998년 Bluetooth SIG(pecial Interest Group) 설립 후 Bluetooth라는 이름을 발표했으며, 현재 블루투스는 Bluetooth SIG을 통해 관리되고 있습니다.

 

블루투스 시스템은 크게 BR/EDR(Basic Rate/Enhanced Data Rate)과 LE(Low Energy)두 가지로 나눌 수 있습니다.

이러한 시스템 구현 방식에 따라 Bluetooth 장치 또한 두 가지 유형으로 구분되는데, BR/EDR 또는 LE 만 구현된 장치는 싱글모드 장치라고 하고, BR/EDR과 LE 모두 구현된 장치는 듀얼모드 장치라고 합니다.

 

그렇다면 BR/EDR, LE는 무슨 의미일까요?

위에서 덧붙인 영문 풀네임의 의미 그대로 BR은 기본 속도, EDR은 향상된 속도, LE는 저전력을 의미합니다.

보편적으로 BR과 EDR을 묶어 BR/EDR로 통칭하는 경우가 많고, LE는 조금 나중에 나온 시스템으로 앞의 두 시스템과 분리하여 따로 말하는 경우가 많습니다.

 

이 다음부터 설명할 내용은 LE에 대한 내용이 주를 이룰 것입니다.

BR/EDR에 대한 설명을 줄이는 이유는 BR/EDR은 스트리밍과 같은 대용량 데이터 전송에 적합하고, LE는 저용량 데이터 전송에 적합했으나,  LE에서도 대용량 데이터 전송이 가능해지면서 BLE(Bluetooth LE) 오디오 장치가 출시되기 시작하여 LE와의 가장 큰 차이점이었던 전송 데이터의 크기 차이가 거의 무의미해졌다고 볼 수 있기 때문입니다.

 


 

그렇다면 BLE에 대해 알아보겠습니다.

BLE는 아래와 같이 동작합니다.

  • 2.4 GHz의 ISM 대역에서 작동(2402~2480 MHz)
    * ISM 대역 : 산업Industry-과학Science-의료Medical 등에 쓰이는 주파수 대역
    • 2402~2480MHz 영역에서 2MHz 간격으로 총 40개 채널 사용
    • BLE는 2.4GHz 대역의 40개 채널 중 자신의 존재를 알리는 advertising 패킷을 보내는 채널 3개가 있고, 연결 이후 데이터를 전송하는데 사용하는 37개의 채널이 있습니다.

블루투스 대역폭

 

  • 주파수 호핑
    • 여러 채널로 나눠진 대역폭에서 채널을 바꿔가며 무선 신호를 전송하는 기법
    • 외부 신호 간섭 및 fading 방지
      * fading : 신호가 전파되며 외부 요인에 의해 신호의 세기가 불규칙적으로 변화하는 현상
    • 다중 접속 방식 사용
    • 제한된 대역폭 자원을 잘 분배하여 안정적인 무선통신을 하기 위한 기술
    • FDMA(주파수 분할 다중 접속), TDMA(시분할 다중 접속) 방식 사용

다중접속방식


 linux Bluetoothctl 명령어를 사용하여 Bluetooth control 하는 방법에 대해 설명해 보겠습니다.

$ bluetoothctl
[bluetooth]#

 

  • 현재 정보 확인

블루투스 모듈은 정상동작( Powered: yes, Pairable: yes) 중입니다.

[bluetooth]# show

bluetoothctl show

  • 주변장치 검색 

연결하려는 블루투스 장치의 전원을 켠 후, 주변 블루투스 장치를 찾습니다.

[bluetooth]# scan on

bluetoothctl scan on

  • 검색 중단

이어폰 (F4:2B:8C:11:CD:C5)의 주소값을 찾았으면 필요한 정보를 확인하였으므로 검색은 중단합니다.

[bluetooth]# scan off

bluetoothctl scan off

  • 장치 페어링

블루투스에서 페어링이란 연결할 두 장치가 서로를 알아내는 것입니다. 여기서 핵심은 둘 간에 키(link-key)를 교환하여 통신의 보안성을 확보하는 절차입니다. 이때 장치의 종류에 따라 사용자의 확인을 요구하는 경우와 그렇지 않은 경우가 있습니다.

 

1) 블루투스 이어폰과 페어링

스피커와 같은 사용자의 입력이 없는 단순한 장치는 페어링 시 키를 요구하지 않으며, 사용자의 확인도 요구하지 않습니다. 따라서 페어링을 명령하면 즉시 연결됩니다.

[bluetooth]# pair F4:2B:8C:11:CD:C5

bluetoothctl pair

 

2) 안드로이드 폰과의 페어링

반면 안드로이드 폰과 같은 장치의 경우 사용자에게 페어링 코드 확인 및 확정을 요청합니다.

페어링 코드를 교환하고 사용자에게 확인을 요구하는 작업을 진행할 대리인(agent)을 활성화합니다.

[bluetooth]# agent on

만약 agent on이 되어있으면 Agent is already registered 내용이 출력된다.

bluetoothctl agent on

페어링을 시도합니다. 확인 메시지가 화면에 표시되면, yes를 입력합니다.

[bluetooth]# pair BC:93:07:06:6B:62

bluetoothctl pair

  • 연결하기

페어링이 완료되면 장치와 연결합니다.

[bluetooth]# connect F4:2B:8C:11:CD:C5

bluetoothctl connect

  • 자동 재연결 설정

주변에 해당 장치가 있으면 자동으로 페어링을 수행하도록 신뢰할 수 있는 장치 목록에 추가합니다.

[bluetooth]# trust F4:2B:8C:11:CD:C5

bluetoothctl trust

'Embedded SW 기초' 카테고리의 다른 글

메모리 구조  (0) 2024.06.10
임베디드 리눅스 부팅 절차  (0) 2024.06.10
Yocto 기초  (0) 2024.06.09
SHELL script  (0) 2024.06.03
SQLD 1장 데이터 모델링의 이해  (0) 2024.06.02