Peripheral — định nghĩa, vai trò trong BLE và cách quảng cáo dịch vụ

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

Peripheral là thiết bị trong kiến trúc Bluetooth Low Energy quảng cáo dịch vụ của mình qua các gói advertising và chờ kết nối từ Central. Trong hệ sinh thái IoT, Peripheral thường là thiết bị có mức tiêu thụ điện thấp: cảm biến nhiệt độ, đèn thông minh, vòng đeo fitness, beacon. Bluetooth Core Specification 5.4 (2023) định nghĩa giao thức quảng cáo: Peripheral định kỳ gửi các gói advertising chứa tên thiết bị, danh sách dịch vụ và dữ liệu tùy chỉnh, trong khi Central quét các gói này và quyết định có kết nối hay không. Sau khi thiết lập kết nối, Peripheral hoạt động như một máy chủ GATT, cung cấp các dịch vụ và đặc tính để đọc và ghi.

Điểm chính

  • Peripheral là thiết bị BLE thụ động quảng cáo dịch vụ và chờ kết nối từ Central.
  • Các gói advertising chứa tên thiết bị, UUID dịch vụ, dữ liệu nhà sản xuất và RSSI để ước lượng khoảng cách.
  • Peripheral hoạt động như máy chủ GATT lưu trữ các dịch vụ và đặc tính để Central truy cập.
  • Mức tiêu thụ điện của Peripheral có thể dao động từ 5 µA ở chế độ ngủ đến 15 mA khi truyền dữ liệu tích cực.
  • Sau khi kết nối, Peripheral có thể tắt quảng cáo để tiết kiệm điện và bật lại khi cần.

Peripheral trong BLE là gì?

Peripheral là thiết bị BLE triển khai máy chủ GATT và quảng cáo khả năng của mình qua các kênh advertising. Không giống như Central chủ động tìm kiếm thiết bị, Peripheral thụ động chờ kết nối. Đây là mô hình bất đối xứng được tối ưu cho hiệu quả năng lượng của thiết bị chạy bằng pin.

Peripheral có thể ở nhiều chế độ: advertising (quảng cáo), connected (kết nối với Central), sleeping (ngủ với tắt quảng cáo). Ở chế độ advertising, Peripheral định kỳ gửi các gói dữ liệu ngắn với mức tiêu thụ điện tối thiểu. Sau khi kết nối, Peripheral chuyển sang chế độ connected, nơi nó trao đổi dữ liệu với Central theo khoảng kết nối đã thỏa thuận.

Theo Bluetooth Core Specification 5.4 (2023), thiết bị có thể chuyển đổi linh hoạt giữa vai trò Peripheral và Central, nhưng tại bất kỳ thời điểm nào, vai trò được cố định cho một kết nối đơn lẻ. Kịch bản điển hình: cảm biến IoT hoạt động liên tục như Peripheral, trong khi điện thoại thông minh quản lý kết nối như Central.

Nhà phát triển cần hiểu: Peripheral xác định dịch vụ và đặc tính nào có sẵn và quản lý quyền truy cập vào chúng. Cấu trúc máy chủ GATT trên Peripheral xác định dữ liệu mà Central có thể đọc và lệnh mà nó có thể ghi.

Quá trình quảng cáo (Advertising)

Advertising là cơ chế mà Peripheral thông báo sự hiện diện của mình. Peripheral gửi các gói advertising trên ba kênh chuyên dụng (37, 38, 39) với khoảng thời gian từ 20 ms đến 10,24 giây. Mỗi gói advertising chứa thông tin cố định và có thể bao gồm dữ liệu tùy chọn.

Có hai loại gói advertising: advertising PDU (gói chính) và scan response PDU (phản hồi yêu cầu từ Central). Gói chính chứa các trường bắt buộc: loại gói, địa chỉ người gửi, dữ liệu. Nếu Central gửi yêu cầu quét, Peripheral trả lời bằng một gói bổ sung chứa thông tin đầy đủ hơn — ví dụ, tên đầy đủ của thiết bị.

Các thông số advertising ảnh hưởng đến tốc độ phát hiện và mức tiêu thụ điện. Advertising interval là thời gian giữa các lần truyền gói. Khoảng càng ngắn, Central càng phát hiện thiết bị nhanh, nhưng Peripheral tiêu thụ càng nhiều điện. Khoảng được khuyến nghị: 100–1000 ms cho hầu hết các thiết bị.

Thông sốPhạm viẢnh hưởngKhuyến nghị
Advertising Interval20 ms – 10,24 sTốc độ phát hiện, điện100–1000 ms để cân bằng
Advertising Channels37, 38, 39Độ tin cậy phát hiệnCả 3 kênh bắt buộc
Công suất Tx-20 – +10 dBmPhạm vi, nhiễu0 dBm trong nhà, +4 dBm ngoài trời
Advertising Timeout0 – 180 giâyThời gian quảng cáo0 (vô hạn) cho beacon

Cấu trúc gói advertising

Gói advertising BLE có giới hạn 31 byte cho advertising PDU và thêm 31 byte cho scan response. Bên trong gói, dữ liệu được tổ chức ở định dạng AD Structure (Advertising Data Structure): mỗi trường có loại (1 byte), độ dài (1 byte) và giá trị.

Các loại AD phổ biến nhất: Flags (0x01) — chế độ kết nối và phát hiện, Local Name (0x08 hoặc 0x09) — tên thiết bị, Service UUID List (0x02–0x07) — danh sách UUID dịch vụ, Manufacturer Specific Data (0xFF) — dữ liệu nhà sản xuất. Đóng gói dữ liệu đúng cách vào gói 31 byte là nhiệm vụ quan trọng đối với nhà phát triển thiết bị nhúng.

Đối với các thiết bị cần truyền nhiều dữ liệu hơn, extended advertising (BLE 5.0+) tăng kích thước gói advertising lên 251 byte và thêm các loại gói mới. Extended advertising cũng hỗ trợ các kênh PHY được mã hóa để tăng phạm vi lên đến 1 km ở khu vực mở.

Khi thiết kế gói advertising, hãy nhớ: càng nhiều dữ liệu trong gói advertising, khả năng xung đột với các thiết bị khác càng cao. Để phát hiện nhanh, chỉ nên đặt dữ liệu quan trọng (Service UUID) trong advertising PDU và dữ liệu bổ sung trong scan response.

Peripheral như máy chủ GATT

Máy chủ GATT trên Peripheral chứa tất cả các dịch vụ và đặc tính mà Central có thể khám phá và tương tác. Sau khi kết nối, Central khám phá các dịch vụ, sau đó các đặc tính và tương tác với chúng qua giao thức GATT.

Peripheral với tư cách máy chủ GATT phải xử lý chính xác các yêu cầu từ Central: yêu cầu đọc, yêu cầu ghi, thông báo và chỉ thị. Mỗi yêu cầu đi qua bảng GATT, nơi mỗi thuộc tính (dịch vụ, đặc tính, bộ mô tả) tương ứng với Handle — địa chỉ 16 bit.

Nhà phát triển Peripheral xác định quyền truy cập cho mỗi thuộc tính: chỉ đọc, chỉ ghi, đọc và ghi, có hoặc không mã hóa. Đối với dữ liệu nhạy cảm (thông tin cá nhân, chỉ số y tế), nên bật mã hóa qua MITM Protection.

Peripheral trên iOS: CBPeripheralManager

CBPeripheralManager là lớp Core Bluetooth để triển khai vai trò Peripheral trên iOS. Nó quản lý máy chủ GATT, công bố các dịch vụ và đặc tính và xử lý các yêu cầu từ Centrals. Không giống CBCentralManager, CBPeripheralManager không quét — nó chỉ quảng cáo và quản lý kết nối.

Các bước chính để triển khai Peripheral trên iOS: khởi tạo CBPeripheralManager, thêm dịch vụ qua add, bắt đầu quảng cáo qua startAdvertising, xử lý yêu cầu từ Centrals qua delegate CBPeripheralManagerDelegate.

swift
import CoreBluetooth

class BLEPeripheralManager: NSObject, CBPeripheralManagerDelegate {

    private var peripheralManager: CBPeripheralManager!

    func startAdvertising() {
        let advertisementData: [String: Any] = [
            CBAdvertisementDataLocalNameKey: "BLE Sensor",
            CBAdvertisementDataServiceUUIDsKey: [
                CBUUID("180F")
            ]
        ]
        peripheralManager.startAdvertising(advertisementData)
    }

    func peripheralManagerDidUpdateState(
        _ peripheral: CBPeripheralManager
    ) {
        if peripheral.state == .poweredOn {
            startAdvertising()
        }
    }
}

iOS cho phép Peripheral hoạt động ở chế độ nền với khóa bluetooth-peripheral trong Background Modes. Ở chế độ nền, iOS có thể quảng cáo với tập dữ liệu hạn chế và quản lý kết nối. Đối với quảng cáo kéo dài (hơn 180 giây), hãy sử dụng tùy chọn CBAdvertisementDataWaitForResponseFromCentral để tiết kiệm điện.

Peripheral trên Android: BluetoothLeAdvertiser

Android cung cấp BluetoothLeAdvertiser để hoạt động ở vai trò Peripheral (từ API 21). API cho phép bắt đầu quảng cáo với các thông số có thể cấu hình: công suất phát, khoảng quảng cáo, dữ liệu gói. Android cũng hỗ trợ extended advertising (BLE 5.0) trên các thiết bị tương thích.

java
import android.bluetooth.le.*;

private BluetoothLeAdvertiser advertiser;

public void startPeripheral() {
    BluetoothAdapter adapter =
        BluetoothAdapter.getDefaultAdapter();
    advertiser = adapter.getBluetoothLeAdvertiser();

    AdvertiseData data = new AdvertiseData.Builder()
        .setIncludeDeviceName(true)
        .addServiceUuid(
            new ParcelUuid(
                UUID.fromString("0000180F-0000-1000-8000-00805F9B34FB")
            )
        )
        .build();

    AdvertiseSettings settings = new AdvertiseSettings.Builder()
        .setAdvertiseMode(AdvertiseSettings.ADVERTISE_MODE_LOW_POWER)
        .setTxPowerLevel(AdvertiseSettings.ADVERTISE_TX_POWER_MEDIUM)
        .build();

    advertiser.startAdvertising(
        settings, data, advertiseCallback
    );
}

Trên Android, hỗ trợ Peripheral phụ thuộc vào nhà sản xuất và phiên bản hệ điều hành. Không phải tất cả thiết bị đều hỗ trợ BluetoothLeAdvertiser — hãy kiểm tra qua adapter.isMultipleAdvertisementSupported(). Từ Android 10, cần quyền BLUETOOTH_ADVERTISE cho vai trò Peripheral, cùng với yêu cầu runtime cho ứng dụng có target SDK 31+.

Hiệu suất năng lượng của Peripheral

Hiệu suất năng lượng là lợi thế chính của BLE và Peripheral đóng vai trò quan trọng trong việc này. Thiết bị có thể chạy bằng pin CR2032 (220 mAh) trong hơn một năm nhờ mức tiêu thụ điện được tối ưu. Phần lớn thời gian, Peripheral ở chế độ ngủ với quảng cáo tắt, chỉ thức dậy để gửi gói advertising hoặc xử lý yêu cầu từ Central.

Mức tiêu thụ điện của Peripheral ở các chế độ khác nhau: chế độ ngủ (ngủ sâu) — 1–5 µA, không hoạt động với bộ định thời — 10–50 µA, advertising — 5–15 mA (khi truyền gói), connected — 5–10 mA (khi có sự kiện kết nối). Với khoảng advertising 1000 ms và thời gian gói 4 ms, dòng điện trung bình khoảng 50–100 µA.

Theo Texas Instruments Application Report (SWRA478, 2024), tối ưu khoảng advertising từ 100 ms xuống 1000 ms giảm mức tiêu thụ điện trung bình 90%. Tiết kiệm bổ sung đạt được nhờ slave latency (bỏ qua các sự kiện kết nối), giảm công suất Tx ở khoảng cách ngắn và tắt quảng cáo sau khi kết nối (connectable advertising).

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

Peripheral có thể bắt đầu truyền dữ liệu không?

Có, thông qua cơ chế thông báo/chỉ thị. Mặc dù Central luôn là người khởi tạo kết nối, sau khi kết nối, Peripheral có thể gửi dữ liệu qua thông báo GATT mà không cần yêu cầu rõ ràng từ Central. Để làm được điều này, Central phải đăng ký trước qua CCCD.

Peripheral có thể quảng cáo trong bao lâu?

Thời gian quảng cáo không bị giới hạn bởi thông số kỹ thuật, nhưng trong thực tế bị giới hạn bởi năng lượng pin. Trên iOS, Peripheral có thể quảng cáo ở chế độ nền tối đa 180 giây mỗi phiên mà không cần cài đặt thêm. Trên Android, quảng cáo có thể hoạt động vô hạn, nhưng làm giảm đáng kể tuổi thọ pin.

Làm thế nào để giảm mức tiêu thụ điện của Peripheral mà không mất chức năng?

Tăng khoảng advertising (được khuyến nghị 500–1000 ms), sử dụng slave latency để bỏ qua các sự kiện kết nối, tắt quảng cáo sau khi kết nối và chọn công suất Tx tối thiểu đủ cho giao tiếp ổn định ở khoảng cách cần thiết.

Non-connectable advertising là gì và được dùng để làm gì?

Non-connectable advertising là chế độ mà Peripheral quảng cáo nhưng không chấp nhận yêu cầu kết nối. Nó được sử dụng cho các beacon chỉ truyền dữ liệu (ví dụ, mã nhận dạng cửa hàng) mà không thiết lập kết nối hai chiều. Nó tiết kiệm năng lượng so với connectable advertising.

Những dữ liệu nào có thể được truyền trong gói advertising (31 byte)?

Trong 31 byte, bạn có thể bao gồm: flags (3 byte), tên thiết bị (tối đa 28 byte ở dạng viết tắt), danh sách UUID dịch vụ (2–16 byte mỗi UUID), dữ liệu nhà sản xuất (tối đa 26 byte). Chiến lược tối ưu là đặt UUID dịch vụ trong advertising PDU để lọc và tên đầy đủ trong scan response.

Tổng kết

  • Peripheral là máy chủ GATT BLE quảng cáo dịch vụ và chờ kết nối từ Central để trao đổi dữ liệu.
  • Các gói advertising được truyền trên kênh 37, 38, 39 với khoảng từ 20 ms đến 10,24 s và bị giới hạn ở 31 byte dữ liệu.
  • Peripheral lưu trữ dịch vụ và đặc tính trong bảng GATT, cung cấp cho Central quyền truy cập dữ liệu qua đọc, ghi và thông báo.
  • Trên iOS, Peripheral được triển khai qua CBPeripheralManager, trên Android qua BluetoothLeAdvertiser với máy chủ GATT.
  • Mức tiêu thụ điện của Peripheral ở chế độ ngủ là 1–5 µA, cho phép hoạt động lên đến một năm với pin CR2032.
  • Tối ưu khoảng advertising và slave latency có thể giảm mức tiêu thụ điện lên đến 90% mà không mất chức năng.
  • Cấu trúc gói advertising phù hợp và thiết kế máy chủ GATT xác định khả năng tương thích, tốc độ phát hiện và hiệu quả của thiết bị 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