[스터디] IoT - Bluetooth

JOMO34·2022년 4월 16일

[스터디] IoT

목록 보기
9/11
post-thumbnail

Bluetooth

대표적인 WPAN(Wireless Personal Area Network)중 하나. (범위 : WLAN < WPAN < WBAN)
저전력, 저가로 특정한 목적(노래재생, 마우스, 키보드)을 위한 통신을 2.4GHz 대역에서 수행한다. 이때 연결은 인터넷 연결이 아니고 ad hoc모드로 연결이 된다.
스마트 폰과 같은 많은 개인용, 휴대용 디바이스에 포함되어있다.

2010 개발된 Bluetooth 4.0에서는 Bluetooth Low Energe(통칭 BLE)기술이 추가되었다.
BLE는 몇달 ~ 몇년동안 지속되는 효율을 목표로 하고있다. 또, bluetooth와 같이 2.4GHz 대역에서 동작된다.

Bluetooth Roles

하나의 메인역할을 하는 master와 master에 연결되는 slave의 역할로 나눌수가 있다.
ex) 스마트폰 - master, 무선이어폰, 스마트워치 등등 - slave
이들이 연결될때에는 먼저 서로 발견을 해야한다. 이때 master가 스캔을 하고, slave는 자신이 있다는 정보인 advertise를 보낸다.

또 실제 측정 데이터를 가지고있는 GATT server와 그 데이터를 받아와서 사용하는 GATT client로 나눌 수 있다. 이때 데이터를 누가 가지고있고, 누가 데이터를 요청하느냐에 따라 나눠진다.
대개 master라면 GATT client이고 slave라면 GATT server 역할을 한다.


BLE Radio Layer

2.4GHz대역에는 총 13개의 채널이 존재하지만, 그 채널들을 BLE는 40개, Bluetooth는 80개로 다시 쪼개서 사용한다. 이때 BLE가 나눈 40개의 채널중 마지막 번호의 채널 세개(37, 38, 39)는 연결을 맺기위한 제어용으로 사용된다. 이것들은 discovery, connection, broadcast역할을 수행한다.
이 채널들의 숫자는 가장 마지막 번호이지만 실제로는 처음, 중간, 끝에 위치해있다.
그 이유는 2.4GHz는 와이파이도 사용하는 대역이므로 서로 간섭을 줄 수 있다. 따라서 와이파이의 대역을 피해서 사용하는 것이다.

BLE Discovery Process

Advertising - slave
bluetooth slave기기들이 연결되기 위해서는 계속 주기적으로 패킷을 보내는 advertising을 해야한다. 이때 advertising channel을 사용한다.

Scanning - master
두가지 방법으로 scanning을 할 수 있다.
1.Passive : Scanner가 advertising packet을 듣기만 한다.
2.Active : Scanner가 advertising packet을 듣다가 스캔이 되면, 추가적인 request 메시지를 보내서 통신을 연결한다.

Slave들은 advertising하는 텀이 있는데, 그 텀마다 계속 세개의 채널로 advertising packet을 보내주고, Master(scanner)는 알고리즘을 통해 한 채널을 확인해서 advertising packet을 확인한다.

Connection

한개의 master는 최대 7개의 slave와 연결할 수 있다.
그리고 한번 연결을 맺었던 slave와는 재연결시 복잡한 과정을 거치지 않고 자동으로 connection을 맺는다.

한번에 최대 7개의 slave와 연결될 수 있는 이유는 BLE의 한 주기안에 최대 7개의 slave와 데이터를 주고받을 수 있게 만들었기 때문이다.
한번의 주기동안 master가 TX(Transmitt)을 하면 연결된 slave가 RX(receive)를 한 뒤 데이터를 다시 전달(TX)하고, 그 데이터를 master가 수신(RX)한다.

Frequency Hopping

이 한번의 주기동안 데이터를 주고받을 채널은 40개의 채널중 제어용으로 사용되는 채널 3개를 뺀 나머지 37개 채널중 하나를 골라서 사용한다.
2.4GHz 대역에는 수많은 신호들(와이파이, 다른 BLE 등등)이 존재하기 때문에 BLE는 한번에 주기동안 사용할 채널을 바꿔가면서 신호를 주고받는다. 이것을 Frequency Hopping이라고 한다.

다음 주기에 사용할 채널 f(n+1) = (f(n)+hop) mod 37
위 식으로 다음채널을 선택하고있으며, 이때 hop 키는 master와 slave 둘다 공유를 해야하므로 이를 위해서 시간 동기화가 필요하다.

Adaptive Frequency Hopping

기존의 Frequency Hopping에서 더 진화된 방법.
Hopping을 해서 사용할 채널이 다른 채널로부터 간섭을 많이 받는 주파수대역에 있따면 통신이 잘 안된다. 이때 BLE는 한 주기마다 slave와 데이터를 주고받으므로 error을 탐지할 수 있고, 따라서 각 채널마다 error rate을 알 수 있다. 그래서 error rate이 높은 채널들을 bad channel로 마킹한다. 그 후 Hopping할때 bad channel이 걸린다면 다른 good channel로 re mapping해서 사용하는 방식이다.

profile
요새 공부하는 것들

0개의 댓글