Central — ay isang device sa arkitektura ng Bluetooth Low Energy na nagpapasimula ng pag-scan, nagtatatag ng koneksyon, at namamahala ng pagpapalitan ng data sa mga peripheral na device. Sa konteksto ng mobile development, ang Central ay isang smartphone o tablet sa iOS o Android na kumokonekta sa mga BLE sensor, fitness tracker, at matatalinong aksesorya. Ayon sa Bluetooth Core Specification 5.4 (2023), ang Central ay maaaring sumuporta ng hanggang 7 sabay-sabay na koneksyon sa iba't ibang Peripheral, bagaman ang aktwal na limitasyon ay depende sa manufacturer ng chip at bersyon ng OS. Ang Core Bluetooth sa iOS at android.bluetooth.le sa Android ay nagbibigay ng kumpletong API para sa pamamahala ng papel ng Central.
Mga pangunahing punto
Central — ay isang GATT client sa arkitektura ng Bluetooth Low Energy na nagpapasimula ng lahat ng komunikasyon. Hindi tulad ng Peripheral na passive na naghihintay ng koneksyon at nag-a-advertise ng mga serbisyo nito, ang Central ay aktibong nagsa-scan ng ere, nakakakita ng mga advertising packet, at nagpapasimula ng koneksyon.
Ang asymmetric na modelong Central-Peripheral ay isang pangunahing katangian ng BLE. Ang Central ay namamahala ng lohika ng interaksyon: nagpapasya ito kung aling device ang kokonektahan, aling mga serbisyo ang susuriin, aling mga katangian ang babasahin at isusulat. Peripheral ay gumaganap bilang data server — nag-iimbak ng mga serbisyo at katangian, ngunit hindi nagpapasimula ng mga koneksyon.
Ayon sa Bluetooth Core Specification 5.4 (2023), ang isang device ay maaaring sabay na maging Central at Peripheral (dual role). Halimbawa, ang isang smartphone ay maaaring maging Central para sa isang fitness bracelet at Peripheral para sa ibang smartphone na naglilipat ng mga file. Gayunpaman, ang sabay na pagtatrabaho sa parehong papel ay nagpapataas ng konsumo ng kuryente at pagiging kumplikado ng pamamahala ng koneksyon.
Sa ecosystem ng mobile development, ang papel ng Central ay ang pinakakaraniwang sitwasyon. Ang application sa smartphone ay naghahanap ng mga BLE device (sensor, headphone, bracelet), kumokonekta sa kanila, at tumatanggap ng data. Ang developer ay gumagamit ng API ng operating system para sa pagtatrabaho sa Central: CBCentralManager sa iOS, BluetoothLeScanner at BluetoothGatt sa Android.
Pag-scan — ay ang unang yugto ng trabaho ng Central. Ang device ay nakikinig sa mga BLE radio channel (37, 38, 39) upang makita ang mga advertising packet na pana-panahong ipinapadala ng Peripheral. Ang bawat advertising packet ay naglalaman ng pangalan ng device, listahan ng mga UUID ng serbisyo, at data ng user.
Ang Central ay maaaring gumana sa dalawang mode ng pag-scan: passive scanning (tanging pagtanggap ng mga advertising packet) at active scanning (pagpapadala ng scan request upang makakuha ng karagdagang data sa pamamagitan ng scan response). Ang passive scanning ay nakakatipid ng enerhiya ngunit nagbibigay ng mas kaunting impormasyon. Ang active scanning ay nagbibigay-daan upang makuha ang kumpletong data ng advertising packet, kabilang ang pangalan ng device at kumpletong listahan ng mga serbisyo.
Ang pagsasala ayon sa UUID — isang mahalagang optimisasyon. Ang Central ay maaaring mag-scan lamang ng mga device na may partikular na Service UUID, hindi pinapansin ang iba. Ito ay hindi lamang nakakatipid ng enerhiya, kundi pati na rin pinapasimple ang lohika ng application: ang delegate ay tumatanggap lamang ng mga kaugnay na device.
import CoreBluetooth
class BLECentralManager: NSObject, CBCentralManagerDelegate {
private var centralManager: CBCentralManager!
override init() {
super.init()
centralManager = CBCentralManager(
delegate: self,
queue: nil
)
}
func centralManagerDidUpdateState(_ central: CBCentralManager) {
if central.state == .poweredOn {
central.scanForPeripherals(
withServices: nil,
options: [
CBCentralManagerScanOptionAllowDuplicatesKey: false
]
)
}
}
}
Pamamahala ng mga koneksyon — pangunahing responsibilidad ng Central. Pagkatapos makakita ng angkop na Peripheral, ang Central ay nagpapasimula ng koneksyon. Ang BLE koneksyon ay itinatag sa pamamagitan ng pamamaraan ng pagtatatag ng koneksyon, na kinabibilangan ng pagpapalitan ng mga parameter: connection interval, slave latency, at supervision timeout.
Ang connection interval ay tumutukoy kung gaano kadalas nagpapalitan ng data ang Central at Peripheral pagkatapos ng koneksyon. Ang interval ay maaaring mula 7.5 ms hanggang 4 na segundo. Kung mas maikli ang interval, mas mataas ang bandwidth, ngunit mas malaki ang konsumo ng kuryente. Slave latency ay nagpapahintulot sa Peripheral na laktawan ang ilang mga kaganapan ng koneksyon upang makatipid ng enerhiya. Supervision timeout — ang maximum na oras na walang tugon, pagkatapos nito ang koneksyon ay itinuturing na nawala.
Ang Central ay responsable para sa pagputol ng koneksyon pagkatapos ng pagtatapos ng pagpapalitan ng data. Ang mga BLE device ay karaniwang hindi nagpapanatili ng koneksyon nang permanente — ang Central ay kumokonekta, tumatanggap ng data, at pumuputol ng koneksyon. Ito ay isang karaniwang pattern para sa mga IoT sensor: ang Central ay nagsa-scan, nakakahanap ng temperature sensor, kumokonekta, nagbabasa ng halaga, at pumuputol ng koneksyon.
| Parameter | Saklaw | Layunin | Rekomendasyon |
|---|---|---|---|
| Connection Interval | 7.5 ms – 4 s | Dalas ng pagpapalitan ng data | 30–50 ms para sa streams, 1–4 s para sa madalang na data |
| Slave Latency | 0–499 kaganapan | Paglaktaw ng mga kaganapan ng Peripheral | 4–10 para makatipid ng enerhiya ng sensor |
| Supervision Timeout | 100 ms – 32 s | Timeout ng pagkawala ng koneksyon | 6–10 segundo para sa karamihan ng mga sitwasyon |
| MTU | 23–517 byte | Sukat ng ATT packet | Humingi ng maximum kapag kumokonekta |
Core Bluetooth — framework ng Apple para sa pagtatrabaho sa BLE sa iOS at macOS. Ang klase na CBCentralManager ay nagbibigay ng kumpletong API para sa pagpapatupad ng papel ng Central: pag-scan, pagkonekta, pamamahala ng mga koneksyon. Ang pagtatrabaho sa Central sa iOS ay batay sa modelo ng delegate: ang CBCentralManagerDelegate ay tumatanggap ng mga kaganapan ng pagbabago ng estado, pagtuklas ng mga device, at mga resulta ng koneksyon.
Mga pangunahing hakbang ng Central sa iOS: pagsisimula ng CBCentralManager, pagsuri ng katayuan ng Bluetooth, pagsisimula ng pag-scan, pagproseso ng mga natuklasang device sa pamamagitan ng delegate, pagkonekta sa napiling Peripheral, pagtuklas ng mga serbisyo at katangian, pagpapalitan ng data.
// Kumonekta sa natuklasang Peripheral
func centralManager(
_ central: CBCentralManager,
didDiscover peripheral: CBPeripheral,
advertisementData: [String: Any],
rssi RSSI: NSNumber
) {
// Panatilihin ang referensya sa peripheral at kumonekta
discoveredPeripheral = peripheral
central.connect(peripheral, options: nil)
}
// Matagumpay na koneksyon
func centralManager(
_ central: CBCentralManager,
didConnect peripheral: CBPeripheral
) {
peripheral.delegate = self
peripheral.discoverServices(nil)
}
Ang iOS ay naglilimita sa background na trabaho ng BLE: sa background mode, ang application ay maaari lamang mag-scan gamit ang mga tiyak na key sa Info.plist, at ang mga konektadong device ay maaaring mag-notify sa Central tungkol sa mga pagbabago ng data. Para sa mga kritikal na application (mga medical device) gamitin ang Background Modes na may key na bluetooth-central.
Android ay nagbibigay ng BluetoothLeScanner API para sa pag-scan ng mga BLE device at BluetoothGatt para sa pamamahala ng mga koneksyon. Mula sa Android 5.0 (API 21), pinalitan ng BluetoothLeScanner ang lumang startLeScan. Ang API ay nangangailangan ng mga pahintulot na BLUETOOTH, BLUETOOTH_ADMIN, at ACCESS_FINE_LOCATION (o ACCESS_BACKGROUND_LOCATION para sa Android 10+).
import android.bluetooth.le.*;
import android.bluetooth.*;
private BluetoothLeScanner scanner;
private BluetoothGatt bluetoothGatt;
// I-configure ang pag-scan
ScanSettings settings = new ScanSettings.Builder()
.setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
.build();
// Simulan ang pag-scan
scanner.startScan(null, settings, new ScanCallback() {
@Override
public void onScanResult(
int callbackType,
ScanResult result
) {
BluetoothDevice device = result.getDevice();
// Kumonekta sa device
bluetoothGatt = device.connectGatt(
context, false, gattCallback
);
}
});
Sa Android, mahalagang isaalang-alang ang mga limitasyon sa pag-scan: mula sa Android 7 (API 24), ang pag-scan ay hindi maaaring simulan nang higit sa 5 beses sa loob ng 30 segundo sa mga application na hindi gumagamit ng Location. Ang Android 12+ ay nangangailangan ng mga pahintulot na BLUETOOTH_SCAN, BLUETOOTH_CONNECT, at ADVERTISE, pati na rin ang runtime na paghiling ng mga pahintulot na ito.
Pagkonsumo ng kuryente ng Central ay mas mataas kaysa sa Peripheral dahil sa pangangailangan na patuloy na mag-scan ng mga radio channel. Ang Central ay tumatanggap ng data sa pamamagitan ng mga BLE packet, nagpoproseso ng mga ito, namamahala ng mga koneksyon, at madalas na nagsasagawa ng mga kalkulasyon sa processor ng application. Ayon sa Bluetooth SIG, ang pag-scan ay kumokonsumo ng 30 mA hanggang 100 mA depende sa mode.
Mayroong ilang mga estratehiya para makatipid ng enerhiya para sa Central. Interval scanning — ang pinakamabisang paraan: ang Central ay nagsa-scan sa maikling window (scan window) na may mahabang pahinga (scan interval). Halimbawa, sa scan window na 30 ms at scan interval na 1000 ms, ang konsumo ng kuryente ay nababawasan ng 97% kumpara sa tuloy-tuloy na pag-scan.
Dagdag na optimisasyon — pagsasala ayon sa UUID. Ang Central ay mas mabilis na nagpoproseso lamang ng mga kaugnay na advertising packet, hindi pinapansin ang iba. Ito ay nagbabawas ng load sa processor at nagpapahaba ng buhay ng baterya ng device. Inirerekomenda din na ihinto ang pag-scan kaagad pagkatapos makita ang nais na device at huwag panatilihin ang koneksyon nang mas matagal kaysa kinakailangan.
Mga madalas itanong
Oo, sinusuportahan ng BLE ang dual role: ang isang device ay maaaring sabay na maging Central para sa ilang device at Peripheral para sa iba. Halimbawa, ang isang smartphone ay nagbabasa ng data mula sa isang sensor (bilang Central) at sabay na nag-a-advertise ng sarili nitong serbisyo (bilang Peripheral) upang maglipat ng data sa ibang device.
Ang BLE specification ay tumutukoy ng limitasyon na 7 koneksyon para sa isang Central. Sa praktika, ang limitasyon ay depende sa manufacturer ng chip: ang Nordic nRF52840 chips ay sumusuporta ng hanggang 20 koneksyon, at ang ilang murang Bluetooth adapter — hindi hihigit sa 3–4.
Ang mga dahilan ay maaaring magkakaiba: ang sensor ay hindi nag-a-advertise (wala sa advertising mode), ang filter ng UUID ay masyadong mahigpit, ang Bluetooth sa smartphone ay naka-off, ang mga kinakailangang pahintulot ay wala (Location sa Android), o ang sensor ay wala sa saklaw (inirerekomenda hanggang 10 metro sa loob ng bahay).
Hindi kinakailangan. Para sa maraming sitwasyon, ang pattern na connect-and-read ay ginagamit: ang Central ay nagsa-scan, kumokonekta, nagbabasa ng kinakailangang data, at pumuputol ng koneksyon. Ang permanenteng koneksyon ay kailangan lamang para sa streaming data (pulso, ECG) o real-time na kontrol ng device.
Gumamit ng interval scanning na may ratio ng scan window 30–50 ms at scan interval 500–1000 ms. I-filter ang mga device ayon sa UUID upang iproseso lamang ang mga kaugnay na advertising packet. Ihinto ang pag-scan kaagad pagkatapos makita ang nais na Peripheral.
Buod
Gagawa kami ng mobile application na turnkey
Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.
Basahin din