Central — vai trò trong BLE và cách quét thiết bị

Tác giả: IT Sectr Đã đăng: 2026-07-15 Thời gian đọc: 8 phút

Central là thiết bị trong kiến trúc Bluetooth Low Energy khởi tạo quét, thiết lập kết nối và quản lý trao đổi dữ liệu với các thiết bị ngoại vi. Trong bối cảnh phát triển di động, Central là điện thoại thông minh hoặc máy tính bảng chạy iOS hoặc Android kết nối với cảm biến BLE, máy theo dõi sức khỏe và phụ kiện thông minh. Theo Bluetooth Core Specification 5.4 (2023), Central có thể hỗ trợ đồng thời tới 7 kết nối đồng thời với các Peripheral khác nhau, mặc dù giới hạn thực tế phụ thuộc vào nhà sản xuất chip và phiên bản hệ điều hành. Core Bluetooth trên iOS và android.bluetooth.le trên Android cung cấp API đầy đủ để quản lý vai trò Central.

Những điểm chính

  • Central là thiết bị BLE chủ động quét, kết nối và quản lý trao đổi với thiết bị ngoại vi.
  • Quét được thực hiện thông qua gói quảng cáo — Central có thể lọc thiết bị theo Service UUID để tiết kiệm năng lượng.
  • Một Central có thể hỗ trợ đồng thời tới 7 kết nối với các Peripheral khác nhau (tùy thuộc vào triển khai).
  • Trong phát triển di động, Central là điện thoại thông minh sử dụng Core Bluetooth (iOS) hoặc android.bluetooth.le (Android).
  • Vai trò Central tiêu thụ nhiều năng lượng hơn Peripheral do quét liên tục và xử lý dữ liệu.

Central trong BLE là gì?

Central là máy khách GATT trong kiến trúc Bluetooth Low Energy khởi tạo tất cả giao tiếp. Không giống như Peripheral thụ động chờ kết nối và quảng cáo dịch vụ của mình, Central chủ động quét sóng, phát hiện gói quảng cáo và khởi tạo kết nối.

Mô hình bất đối xứng Central-Peripheral là đặc điểm cơ bản của BLE. Central quản lý logic tương tác: quyết định kết nối với thiết bị nào, khám phá dịch vụ nào và đọc/ghi đặc tính nào. Peripheral hoạt động như máy chủ dữ liệu — lưu trữ dịch vụ và đặc tính nhưng không khởi tạo kết nối.

Theo Bluetooth Core Specification 5.4 (2023), một thiết bị có thể đồng thời là Central và Peripheral (vai trò kép). Ví dụ, điện thoại thông minh có thể là Central cho vòng đeo sức khỏe và là Peripheral cho một điện thoại thông minh khác đang truyền tệp. Tuy nhiên, hoạt động đồng thời ở cả hai vai trò làm tăng mức tiêu thụ năng lượng và độ phức tạp quản lý kết nối.

Trong hệ sinh thái phát triển di động, vai trò Central là kịch bản phổ biến nhất. Ứng dụng trên điện thoại thông minh tìm kiếm thiết bị BLE (cảm biến, tai nghe, vòng đeo), kết nối với chúng và nhận dữ liệu. Nhà phát triển sử dụng API hệ điều hành để làm việc với Central: CBCentralManager trên iOS, BluetoothLeScanner và BluetoothGatt trên Android.

Quy trình quét thiết bị

Quét là giai đoạn đầu tiên trong hoạt động của Central. Thiết bị lắng nghe trên các kênh vô tuyến BLE (37, 38, 39) để phát hiện các gói quảng cáo mà Peripheral gửi định kỳ. Mỗi gói quảng cáo chứa tên thiết bị, danh sách UUID dịch vụ và dữ liệu tùy chỉnh.

Central có thể hoạt động ở hai chế độ quét: quét thụ động (chỉ nhận gói quảng cáo) và quét chủ động (gửi yêu cầu quét để nhận thêm dữ liệu qua phản hồi quét). Quét thụ động tiết kiệm năng lượng nhưng cung cấp ít thông tin hơn. Quét chủ động cho phép nhận dữ liệu đầy đủ của gói quảng cáo, bao gồm tên thiết bị và danh sách dịch vụ hoàn chỉnh.

Lọc theo UUID là một tối ưu hóa quan trọng. Central chỉ có thể quét các thiết bị có Service UUID cụ thể, bỏ qua phần còn lại. Điều này không chỉ tiết kiệm năng lượng mà còn đơn giản hóa logic ứng dụng: ủy quyền chỉ nhận được các thiết bị liên quan.

swift
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
                ]
            )
        }
    }
}

Quản lý kết nối

Quản lý kết nối là trách nhiệm chính của Central. Sau khi phát hiện Peripheral phù hợp, Central khởi tạo kết nối. Kết nối BLE được thiết lập thông qua quy trình thiết lập kết nối bao gồm trao đổi tham số: khoảng thời gian kết nối, độ trễ slave và thời gian chờ giám sát.

Khoảng thời gian kết nối xác định tần suất Central và Peripheral trao đổi dữ liệu sau khi kết nối. Khoảng thời gian có thể từ 7,5 ms đến 4 giây. Khoảng thời gian càng ngắn, thông lượng càng cao nhưng mức tiêu thụ năng lượng cũng càng lớn. Độ trễ slave cho phép Peripheral bỏ qua nhiều sự kiện kết nối để tiết kiệm năng lượng. Thời gian chờ giám sát là thời gian tối đa không có phản hồi, sau đó kết nối được coi là bị mất.

Central chịu trách nhiệm kết thúc kết nối sau khi hoàn tất trao đổi dữ liệu. Thiết bị BLE thường không duy trì kết nối vĩnh viễn — Central kết nối, lấy dữ liệu và ngắt kết nối. Đây là mẫu tiêu chuẩn cho cảm biến IoT: Central quét, tìm cảm biến nhiệt độ, kết nối, đọc giá trị và ngắt kết nối.

Tham sốPhạm viMục đíchKhuyến nghị
Khoảng thời gian kết nối7,5 ms – 4 sTần suất trao đổi dữ liệu30–50 ms cho luồng, 1–4 s cho dữ liệu không thường xuyên
Độ trễ slave0–499 sự kiệnBỏ qua sự kiện Peripheral4–10 để tiết kiệm năng lượng cảm biến
Thời gian chờ giám sát100 ms – 32 sThời gian chờ mất kết nối6–10 giây cho hầu hết các kịch bản
MTU23–517 byteKích thước gói ATTYêu cầu tối đa khi kết nối

Central trên iOS: Core Bluetooth

Core Bluetooth là framework của Apple để làm việc với BLE trên iOS và macOS. Lớp CBCentralManager cung cấp API đầy đủ để triển khai vai trò Central: quét, kết nối, quản lý kết nối. Làm việc với Central trên iOS dựa trên mô hình ủy quyền: CBCentralManagerDelegate nhận các sự kiện thay đổi trạng thái, phát hiện thiết bị và kết quả kết nối.

Các bước chính cho Central trên iOS: khởi tạo CBCentralManager, kiểm tra trạng thái Bluetooth, bắt đầu quét, xử lý thiết bị được phát hiện qua ủy quyền, kết nối với Peripheral đã chọn, khám phá dịch vụ và đặc tính, trao đổi dữ liệu.

swift
// Kết nối với Peripheral đã phát hiện
func centralManager(
    _ central: CBCentralManager,
    didDiscover peripheral: CBPeripheral,
    advertisementData: [String: Any],
    rssi RSSI: NSNumber
) {
    // Giữ tham chiếu đến peripheral và kết nối
    discoveredPeripheral = peripheral
    central.connect(peripheral, options: nil)
}

// Kết nối thành công
func centralManager(
    _ central: CBCentralManager,
    didConnect peripheral: CBPeripheral
) {
    peripheral.delegate = self
    peripheral.discoverServices(nil)
}

iOS giới hạn công việc BLE nền: ở chế độ nền, ứng dụng chỉ có thể quét với các khóa cụ thể trong Info.plist và các thiết bị đã kết nối có thể thông báo cho Central về thay đổi dữ liệu. Đối với các ứng dụng quan trọng (thiết bị y tế), hãy sử dụng Chế độ nền với khóa bluetooth-central.

Central trên Android: BluetoothLeScanner

Android cung cấp API BluetoothLeScanner để quét thiết bị BLE và BluetoothGatt để quản lý kết nối. Bắt đầu từ Android 5.0 (API 21), BluetoothLeScanner đã thay thế startLeScan cũ. API yêu cầu quyền BLUETOOTH, BLUETOOTH_ADMIN và ACCESS_FINE_LOCATION (hoặc ACCESS_BACKGROUND_LOCATION cho Android 10+).

java
import android.bluetooth.le.*;
import android.bluetooth.*;

private BluetoothLeScanner scanner;
private BluetoothGatt bluetoothGatt;

// Cấu hình quét
ScanSettings settings = new ScanSettings.Builder()
    .setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
    .build();

// Bắt đầu quét
scanner.startScan(null, settings, new ScanCallback() {
    @Override
    public void onScanResult(
            int callbackType,
            ScanResult result
    ) {
        BluetoothDevice device = result.getDevice();
        // Kết nối với thiết bị
        bluetoothGatt = device.connectGatt(
            context, false, gattCallback
        );
    }
});

Trên Android, cần xem xét các giới hạn quét: bắt đầu từ Android 7 (API 24), quét không thể được bắt đầu quá 5 lần trong 30 giây ở các ứng dụng không sử dụng vị trí. Android 12+ yêu cầu quyền BLUETOOTH_SCAN, BLUETOOTH_CONNECT và ADVERTISE, cũng như yêu cầu thời gian chạy các quyền này.

Mức tiêu thụ năng lượng của Central

Mức tiêu thụ năng lượng của Central cao hơn Peripheral do cần quét liên tục các kênh vô tuyến. Central nhận gói BLE, xử lý chúng, quản lý kết nối và thường thực hiện tính toán trên bộ xử lý ứng dụng. Theo Bluetooth SIG, quét tiêu thụ từ 30 mA đến 100 mA tùy thuộc vào chế độ.

Có một số chiến lược tiết kiệm năng lượng cho Central. Quét ngắt quãng là phương pháp hiệu quả nhất: Central quét trong các cửa sổ ngắn (cửa sổ quét) với thời gian tạm dừng dài (khoảng thời gian quét). Ví dụ, với cửa sổ quét 30 ms và khoảng thời gian quét 1000 ms, mức tiêu thụ năng lượng giảm 97% so với quét liên tục.

Tối ưu hóa bổ sung là lọc theo UUID. Central chỉ xử lý nhanh các gói quảng cáo liên quan, bỏ qua phần còn lại. Điều này giảm tải CPU và tăng tuổi thọ pin của thiết bị. Cũng nên dừng quét ngay sau khi tìm thấy thiết bị mong muốn và không duy trì kết nối lâu hơn cần thiết.

Câu hỏi thường gặp

Điện thoại thông minh có thể đồng thời là Central và Peripheral không?

Có, BLE hỗ trợ vai trò kép: thiết bị có thể đồng thời là Central cho một số thiết bị và Peripheral cho các thiết bị khác. Ví dụ, điện thoại thông minh đọc dữ liệu từ cảm biến (với tư cách Central) và đồng thời quảng cáo dịch vụ riêng (với tư cách Peripheral) để truyền dữ liệu đến thiết bị khác.

Central có thể phục vụ đồng thời bao nhiêu thiết bị?

Đặc tả BLE xác định giới hạn 7 kết nối cho một Central. Trên thực tế, giới hạn phụ thuộc vào nhà sản xuất chip: chip Nordic nRF52840 hỗ trợ tới 20 kết nối, trong khi một số bộ điều hợp Bluetooth giá rẻ chỉ hỗ trợ 3–4 kết nối.

Tại sao Central không phát hiện cảm biến BLE của tôi?

Nguyên nhân có thể khác nhau: cảm biến không quảng cáo (không ở chế độ quảng cáo), bộ lọc UUID quá nghiêm ngặt, Bluetooth bị tắt trên điện thoại thông minh, thiếu quyền cần thiết (vị trí trên Android) hoặc cảm biến ngoài phạm vi (khuyến nghị tới 10 mét trong nhà).

Có cần duy trì kết nối với thiết bị BLE liên tục không?

Không nhất thiết. Đối với nhiều kịch bản, mẫu kết nối-và-đọc được sử dụng: Central quét, kết nối, đọc dữ liệu cần thiết và ngắt kết nối. Kết nối liên tục chỉ cần thiết cho dữ liệu luồng (mạch, ECG) hoặc điều khiển thiết bị thời gian thực.

Làm thế nào để giảm mức tiêu thụ năng lượng của Central khi quét?

Sử dụng quét ngắt quãng với cửa sổ quét 30–50 ms và khoảng thời gian quét 500–1000 ms. Lọc thiết bị theo UUID để chỉ xử lý các gói quảng cáo liên quan. Dừng quét ngay sau khi tìm thấy Peripheral mong muốn.

Tóm tắt

  • Central là người tham gia tích cực trong kết nối BLE, khởi tạo quét, kết nối và quản lý trao đổi dữ liệu.
  • Quy trình quét bao gồm nhận gói quảng cáo trên các kênh 37, 38, 39 với khả năng lọc theo Service UUID.
  • Sau khi phát hiện Peripheral, Central thiết lập kết nối với tham số có thể cấu hình — khoảng thời gian kết nối, độ trễ slave, thời gian chờ giám sát.
  • Trong phát triển di động, Central được triển khai qua CBCentralManager (iOS) hoặc BluetoothLeScanner + BluetoothGatt (Android).
  • Một Central có thể quản lý đồng thời tới 7 kết nối trong cấu hình Bluetooth tiêu chuẩn.
  • Mức tiêu thụ năng lượng của Central có thể được tối ưu hóa thông qua quét ngắt quãng và lọc UUID để tăng tuổi thọ pin.
  • Quản lý vòng đời kết nối phù hợp — từ phát hiện đến ngắt kết nối — quyết định hiệu quả của ứng dụng BLE.

Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay

IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.

Thảo luận dự án

Đọc thêm