Core Bluetooth - Team-HGD/SniffMEET GitHub Wiki

๊ฐœ์š”

Core Bluetooth๋Š” ์ €์ „๋ ฅ ๋ธ”๋ฃจํˆฌ์Šค ์—ฐ๊ฒฐ์„ ์ง€์›ํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค.

์ €์ „๋ ฅ ๋ธ”๋ฃจํˆฌ์Šค(BLE)๋ฅผ ํ†ตํ•ด ์ฃผ๋ณ€ ๊ธฐ๊ธฐ์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์†ก์ˆ˜์‹ ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉฐ, ๋ฐฐํ„ฐ๋ฆฌ ์†Œ๋ชจ๊ฐ€ ์ ๊ณ  ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•˜๊ฑฐ๋‚˜ ์žฅ์น˜๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š”๋ฐ ํšจ์œจ์ ์ด๋ผ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์šฐ๋ฆฌ๊ฐ€ ๊ธฐํšํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋„ ์‚ฌ์šฉ๋  ๋ถ€๋ถ„์ด ์žˆ์„๊นŒ?

์„ค๋ช…

Bluetooth Low Energy (BLE)

์ „๋ ฅ ์†Œ๋น„๋ฅผ ๋ณด์™„ํ•˜๋Š” ์ €์ „๋ ฅ ๋ธ”๋ฃจํˆฌ์Šค๋กœ ํ†ต์‹  ์†๋„๋ณด๋‹ค๋Š” ์ „๋ ฅ ์†Œ๋ชจ๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์— ์ดˆ์ ์„ ๋งž์ถ˜ ๊ธฐ๋Šฅ์ด๋‹ค.

Core Bluetooth ํ•ต์‹ฌ ๊ธฐ๋Šฅ

  • Central ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๋Š” ์—ญํ• . ๋ณดํ†ต ์Šค๋งˆํŠธํฐ์ด Central ์—ญํ• ์„ ํ•˜๋ฉฐ ์ฃผ๋ณ€์˜ BLE ์žฅ์น˜๋ฅผ ์Šค์บ”ํ•˜๊ณ  ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•œ๋‹ค.

    • ์Šค์บ” ๋ฐ ํƒ์ƒ‰: CBCentralManager๋ฅผ ์‚ฌ์šฉํ•ด BLE ์žฅ์น˜๋ฅผ ํƒ์ƒ‰. ์ด๋•Œ ํŠน์ • Service UUID๋ฅผ ์„ค์ •ํ•ด ์›ํ•˜๋Š” ์žฅ์น˜๋งŒ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์—ฐ๊ฒฐ: ํŠน์ • Peripheral์„ ๋ฐœ๊ฒฌํ•œ ํ›„, ์—ฐ๊ฒฐ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค.
    • ๋ฐ์ดํ„ฐ ๊ตํ™˜: ์—ฐ๊ฒฐ๋œ Peripheral์—์„œ Characteristic์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์•Œ๋ฆผ์„ ์„ค์ •ํ•ด ์ฃผ๊ธฐ์ ์œผ๋กœ ๊ฐฑ์‹ ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.
  • Peripheral(์ฃผ๋ณ€ ์žฅ์น˜) ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์—ญํ• . ์ฃผ๋กœ BLE ์žฅ์น˜(์Šค๋งˆํŠธ ๊ธฐ๊ธฐ๋“ค)๊ฐ€ Peripheral ์—ญํ• ์„ ํ•˜๋ฉฐ ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ฑฐ๋‚˜ ์ค‘์•™ ์žฅ์น˜์˜ ์š”์ฒญ์— ์‘๋‹ตํ•œ๋‹ค.

    • ์ฃผ๋ณ€ ์žฅ์น˜ ์—ญํ•  ์ดˆ๊ธฐํ™”: CBPeripheral๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฃผ๋ณ€ ์žฅ์น˜๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
    • Service์™€ Characteristic ์„ค์ •: ์ œ๊ณตํ•  Service์™€ Characteristic์„ ์„ค์ •ํ•˜๊ณ , ์ด๋ฅผ ๊ด‘๊ณ ํ•ด ์ฃผ๋ณ€์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.
    • ๊ด‘๊ณ  ์‹œ์ž‘: ์„ค์ •ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ฃผ๋ณ€์˜ Central์— ์ธ์‹๋  ์ˆ˜ ์žˆ๋„๋ก ๊ด‘๊ณ ๋ฅผ ์‹œ์ž‘ํ•œ๋‹ค.
    • ์—ฐ๊ฒฐ ์ˆ˜๋ฝ ๋ฐ ๋ฐ์ดํ„ฐ ์ „์†ก: Central์ด ์—ฐ๊ฒฐ ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์†ก์‹ ํ•˜๊ฑฐ๋‚˜ ์š”์ฒญ์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•œ๋‹ค.
  • Service ํŠน์ • ๊ธฐ๋Šฅ์ด๋‚˜ ํŠน์„ฑ(๋ฐ์ดํ„ฐ๋‚˜ ๋™์ž‘)์„ ๋‚˜ํƒ€๋‚ด๋Š” ์—ญํ• . ์—ฌ๋Ÿฌ ์„œ๋น„์Šค๊ฐ€ ํ•˜๋‚˜์˜ BLE ์žฅ์น˜์— ์กด์žฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฐ ์„œ๋น„์Šค๋Š” ๊ณ ์œ ํ•œ ์„œ๋น„์Šค UUID(๋ฒ”์šฉ ๊ณ ์œ  ์‹๋ณ„์ž)๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๊ฐ ์„œ๋น„์Šค๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ํŠน์„ฑ(Characteristic)์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

  • Characteristic ํ•ด๋‹น ์„œ๋น„์Šค์˜ ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์—ญํ• . ํŠน์„ฑ์€ ์ฝ์„ ์ˆ˜ ์žˆ๊ฑฐ๋‚˜ ์“ธ ์ˆ˜ ์žˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์•Œ๋ฆผ(Notification)์ด๋‚˜ ์ธ๋””์ผ€์ด์…˜(Indication)์„ ํ†ตํ•ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์•Œ๋ฆฌ๋Š” ๋ฐ ์‚ฌ์šฉ๋  ์ˆ˜๋„ ์žˆ๋‹ค.

    • ์„œ๋น„์Šค๋Š” BLE ์žฅ์น˜๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‚˜ ํŠน์„ฑ์„ ์ •์˜ํ•˜๊ณ , ํŠน์„ฑ์€ ํ•ด๋‹น ์„œ๋น„์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

image

Core Bluetooth ๋™์ž‘

  1. CBCentralManager ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ , BLE ๊ถŒํ•œ์„ ์š”์ฒญํ•œ๋‹ค.
  2. BLE ์žฅ์น˜๋ฅผ ์Šค์บ”ํ•˜์—ฌ ์›ํ•˜๋Š” ์žฅ์น˜๋ฅผ ์ฐพ๋Š”๋‹ค. ์›ํ•˜๋Š” ์žฅ์น˜๊ฐ€ ๋ฐœ๊ฒฌ๋˜๋ฉด ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ•œ๋‹ค.
  3. ์—ฐ๊ฒฐ๋œ ์žฅ์น˜์˜ ์„œ๋น„์Šค ๋ชฉ๋ก์„ ๊ฒ€์ƒ‰ํ•˜๊ณ  ํ•„์š”ํ•œ ์„œ๋น„์Šค์™€ ํŠน์„ฑ์„ ์ฐพ๋Š”๋‹ค.
  4. ํŠน์ • ํŠน์„ฑ(characteristic) ๊ฐ’์„ ์ฝ๊ฑฐ๋‚˜, ๋ฐ์ดํ„ฐ๋ฅผ ์“ฐ๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  5. ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด ์žฅ์น˜์™€์˜ ์—ฐ๊ฒฐ์„ ํ•ด์ œํ•œ๋‹ค.

Multipeer Connectivity์™€์˜ ์ฐจ์ด

  • ๊ธฐ์ˆ  ๋ชฉ์ 
    • CB : BLE ์ง€์› ๊ธฐ๊ธฐ์™€์˜ ์ €์ „๋ ฅ ๋ฐ์ดํ„ฐ ์ „์†ก
    • MC : WiFi, Bluetooth ์ด์šฉํ•ด ์ฃผ๋ณ€ ๊ธฐ๊ธฐ๋“ค๊ณผ N : M ์—ฐ๊ฒฐํ•˜๊ณ  ๋ฐ์ดํ„ฐ ์ „์†ก
  • ๋„คํŠธ์›Œํฌ ๊ตฌ์กฐ
    • CB : Central - Peripheral ํ˜•ํƒœ๋กœ 1 : N ์ง€์›
    • MC : N : M ์—ด๊ฒฐ ์ง€์›
  • ์—ฐ๊ฒฐ ๊ฑฐ๋ฆฌ, ์†๋„
    • CB : ๋ธ”๋ฃจํˆฌ์Šค ์ง€์› ๋ฒ”์œ„ ๋‚ด๋กœ ์ œํ•œ, ์†Œ๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ์ „์†ก ์ตœ์ ํ™”
    • MC : WiFi ์ง€์›์„ ํ†ตํ•ด ์ข€ ๋” ๋„“์€ ๋ฒ”์œ„ ๊ฐ€๋Šฅ,
  • ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ง€์›
    • CB : ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ BLE ํ†ต์‹ ์„ ์ง€์›
    • MC : ํฌ๊ทธ๋ผ์šด๋“œ์—์„œ๋งŒ ์›ํ™œํ•œ ํ†ต์‹  ์ง€์›

์‚ฌ์šฉ

๊ธฐ๋ณธ์ ์œผ๋กœ, ํ˜„์žฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ Nearby Interaction + Multipeer Connectivity ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ํ•ต์‹ฌ ๊ธฐ๋Šฅ์„ ๊ฐ–๊ณ  ์žˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— Core Bluetooth ๊ธฐ๋Šฅ์ด ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ ์ƒํƒœ๋Š” ์•„๋‹ˆ๋ผ๊ณ  ๋ณด์—ฌ์ง„๋‹ค.

ํ•˜์ง€๋งŒ, Nearby Interaction ๊ธฐ๋Šฅ์€ ๊ธฐ๊ธฐ๊ฐ€ ํ™œ์„ฑํ™”๋œ ์ƒํƒœ์—์„œ๋งŒ ์ž‘๋™ํ•œ๋‹ค๋Š” ์ œํ•œ์ด ์กด์žฌํ•œ๋‹ค. ๋•Œ๋ฌธ์—, ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ƒํƒœ์—์„œ๋„ ๋™์ž‘ํ•˜๊ธธ ๋ฐ”๋ž€๋‹ค๋ฉด Core Bluetooth๋ฅผ ์ถ”๊ฐ€๋กœ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์ด ์ ์ ˆํ•ด ๋ณด์ธ๋‹ค.

  • ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ƒํƒœ์—์„œ Core Bluetooth ์‚ฌ์šฉํ•ด ๊ทผ์ฒ˜ BLE ์‚ฌ์šฉ์ž ๊ฐ์ง€ํ•˜์—ฌ ์•ฑ์„ ํ™œ์„ฑํ™”
  • ์•ฑ์ด ํ™œ์„ฑํ™”๋˜๋ฉด Nearby Interaction + Multipeer Connectivity ์‚ฌ์šฉํ•ด ํ”„๋กœํ•„ ๊ณต์œ  ์‹œ์ž‘

๋˜ํ•œ, BLE ๋™์ž‘์ด Nearby Interaction๋ณด๋‹ค๋Š” ์กฐ๊ธˆ ๋” ๋„“์€ ๋ฒ”์œ„์—์„œ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทผ์ฒ˜ ์‚ฌ์šฉ์ž๋ฅผ ์ฐพ๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ฒŒ๋œ๋‹ค๋ฉด ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„ ๋ณด์ธ๋‹ค.

Ref.

https://developer.apple.com/documentation/corebluetooth

https://ohwhatisthis.tistory.com/34