Advertising trong BLE: khái niệm, định dạng gói và cơ chế quảng cáo

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

Advertising (quảng cáo) là một cơ chế trong Bluetooth Low Energy mà qua đó thiết bị Peripheral thông báo sự hiện diện của mình bằng cách truyền các gói dữ liệu ngắn trên ba kênh chuyên dụng (37, 38, 39). Bluetooth Core Specification 5.4 (2023) định nghĩa hai loại quảng cáo: connectable — thiết bị sẵn sàng kết nối, và non-connectable — được sử dụng bởi beacon chỉ truyền dữ liệu mà không thiết lập liên lạc hai chiều. Các thông số quảng cáo — khoảng thời gian từ 20 ms đến 10,24 s, công suất phát từ -20 đến +10 dBm và loại gói — ảnh hưởng trực tiếp đến tốc độ phát hiện thiết bị và mức tiêu thụ năng lượng, điều rất quan trọng khi phát triển các thiết bị IoT chạy bằng pin.

Những điểm chính

  • Advertising là cơ chế phát hiện thiết bị BLE chính hoạt động trên ba kênh chuyên dụng 37, 38 và 39.
  • Gói quảng cáo tiêu chuẩn bị giới hạn ở 31 byte dữ liệu; quảng cáo mở rộng (BLE 5.0) tăng giới hạn lên 251 byte.
  • Quảng cáo có kết nối (connectable) cho phép Central kết nối với thiết bị; non-connectable chỉ truyền một chiều (beacon).
  • Khoảng thời gian quảng cáo ảnh hưởng đến mức tiêu thụ năng lượng: ở khoảng thời gian 1000 ms, dòng điện trung bình thấp hơn 10 lần so với 100 ms.
  • Scan response cho phép truyền thêm 31 byte dữ liệu để phản hồi yêu cầu của Central.

Advertising trong BLE là gì?

Advertising (quảng cáo) là quá trình truyền định kỳ các gói dữ liệu ngắn mà qua đó thiết bị BLE thông báo sự hiện diện và khả năng sẵn sàng của mình. Không giống Bluetooth cổ điển, nơi việc phát hiện thiết bị mất vài giây, quảng cáo BLE cho phép phát hiện thiết bị trong mili giây trong khi tiêu thụ năng lượng tối thiểu.

Kiến trúc BLE chia thiết bị thành hai vai trò: Peripheral (quảng cáo) và Central (quét). Peripheral gửi các gói quảng cáo, trong khi Central quét sóng và quyết định có kết nối hay không. Mô hình bất đối xứng này là một lợi thế chính của BLE: thiết bị quảng cáo chỉ tiêu tốn năng lượng để gửi các gói ngắn chứ không phải liên tục lắng nghe sóng.

Quá trình quảng cáo bao gồm ba giai đoạn: advertising event (gửi gói trên cả ba kênh), scan request/response (trao đổi tùy chọn với Central) và connection request (khởi tạo kết nối bởi Central). Mỗi giai đoạn được quản lý bởi Bluetooth Controller ở cấp Link Layer.

Kênh quảng cáo và chức năng của chúng

BLE sử dụng 40 kênh trong băng tần 2,4 GHz, trong đó 37 (2402 MHz), 38 (2426 MHz) và 39 (2480 MHz) được dành riêng cho quảng cáo. Ba kênh là sự thỏa hiệp giữa độ tin cậy phát hiện và thông lượng: một kênh có thể bị Wi-Fi hoặc nhiễu khác chiếm dụng, nhưng thiết bị sẽ được phát hiện trên hai kênh còn lại.

Kênh 37 nằm gần kênh Wi-Fi 1, kênh 39 nằm gần kênh Wi-Fi 6, và kênh 38 nằm giữa chúng trong vùng nhiễu tối thiểu. Việc chọn ba kênh đảm bảo rằng thiết bị sẽ được phát hiện ngay cả trong môi trường vô tuyến dày đặc — ví dụ, trong trung tâm thương mại có hàng chục điểm truy cập Wi-Fi.

Peripheral gửi gói quảng cáo tuần tự trên cả ba kênh — đây được gọi là advertising event. Thiết bị trung tâm quét một kênh tại một thời điểm, chuyển đổi giữa chúng theo thuật toán được triển khai trong Bluetooth Controller. Xác suất phát hiện trong một advertising event khi không có xung đột là gần 100%.

Các loại gói quảng cáo

Bluetooth Core Specification định nghĩa một số loại PDU quảng cáo (Protocol Data Unit), mỗi loại có mục đích riêng. Các loại chính là: ADV_IND (connectable undirected advertising) — quảng cáo tiêu chuẩn có khả năng kết nối, ADV_NONCONN_IND (non-connectable undirected advertising) — chỉ quảng cáo không kết nối, ADV_SCAN_IND (scannable undirected advertising) — hỗ trợ yêu cầu quét, ADV_DIRECT_IND (directed advertising) — quảng cáo cho một Central cụ thể.

ADV_IND là loại phổ biến nhất được sử dụng trong hầu hết các thiết bị BLE. Khi nhận được ADV_IND, Central có thể gửi yêu cầu kết nối và thiết lập kết nối. ADV_NONCONN_IND được sử dụng trong beacon: thiết bị quảng cáo nhưng không chấp nhận yêu cầu kết nối — chỉ truyền dữ liệu một chiều.

Loại PDUMô tảKết nốiScan response
ADV_INDQuảng cáo tiêu chuẩn
ADV_DIRECT_INDQuảng cáo cho Central cụ thểKhông
ADV_NONCONN_INDKhông kết nối (beacon)KhôngKhông
ADV_SCAN_INDCó hỗ trợ quét
ADV_EXT_INDQuảng cáo mở rộng (BLE 5.0)

ADV_DIRECT_IND chứa địa chỉ của Central mục tiêu, cho phép thiết lập kết nối nhanh mà không cần chờ quét. Nó được sử dụng khi các thiết bị đã “biết” nhau — ví dụ, sau khi kết nối lại với điện thoại thông minh đã ghép đôi trước đó. Loại này giảm mức tiêu thụ năng lượng vì không yêu cầu quảng cáo trên tất cả các kênh.

Khoảng thời gian quảng cáo và mức tiêu thụ năng lượng

Khoảng thời gian quảng cáo (Advertising interval) là thời gian giữa các advertising event liên tiếp. Thông số kỹ thuật cho phép khoảng thời gian từ 20 ms đến 10,24 s với bước 0,625 ms. Khoảng thời gian thực tế được tính bằng tổng của giá trị cố định và độ trễ ngẫu nhiên (0–10 ms), giúp giảm xác suất xung đột giữa nhiều thiết bị quảng cáo.

Chọn khoảng thời gian là sự cân bằng giữa tốc độ phát hiệnmức tiêu thụ năng lượng. Ở khoảng thời gian 20 ms, thiết bị sẽ được phát hiện trong 20–30 ms, nhưng dòng điện trung bình sẽ khoảng 1–2 mA. Ở khoảng thời gian 1000 ms, việc phát hiện sẽ mất tới 1 giây, nhưng dòng điện trung bình sẽ giảm xuống 50–100 µA. Đối với hầu hết các thiết bị IoT, khoảng thời gian khuyến nghị là 200–1000 ms.

Theo Texas Instruments Application Report SWRA478 (2024), tăng khoảng thời gian quảng cáo từ 100 ms lên 1000 ms giúp giảm mức tiêu thụ năng lượng 90%. Nếu thiết bị không yêu cầu phát hiện tức thì (ví dụ, cảm biến nhiệt độ truyền dữ liệu mỗi phút một lần), khoảng thời gian tối ưu là 1000–2000 ms.

Một thông số bổ sung là thời gian chờ quảng cáo (advertising timeout) — thời gian tối đa mà thiết bị quảng cáo. Trên iOS, Peripheral tự động tắt quảng cáo sau 180 giây ở chế độ nền. Trên Android không có giới hạn như vậy, nhưng các nhà sản xuất có thể thêm giới hạn riêng của họ.

Scan Response: dữ liệu bổ sung

Scan Response là một gói dữ liệu bổ sung (lên đến 31 byte) mà Peripheral gửi để phản hồi yêu cầu quét từ Central. Yêu cầu quét được Central gửi sau khi nhận được gói quảng cáo nếu cần thêm thông tin trước khi kết nối. Scan Response không yêu cầu quảng cáo bổ sung — nó chỉ được gửi khi có yêu cầu, tiết kiệm thời gian phát sóng.

Phân bố dữ liệu điển hình: PDU quảng cáo (31 byte) chứa cờ (3 byte), UUID dịch vụ (2–16 byte) và dữ liệu nhà sản xuất (các byte còn lại). Scan response mang tên đầy đủ của thiết bị (lên đến 28 byte) và UUID bổ sung hoặc TX Power Level. Sự phân tách này cho phép Central nhanh chóng lọc thiết bị theo UUID mà không cần đọc scan response.

Khi thiết kế gói quảng cáo, hãy lưu ý: nếu tất cả 31 byte đều bị chiếm trong PDU quảng cáo, Central sẽ không thể xác định liệu thiết bị có hỗ trợ scan response hay không. Nên để trống ít nhất 3–5 byte trong PDU quảng cáo để chỉ ra khả năng scan response.

Quảng cáo mở rộng trong BLE 5.0

Quảng cáo mở rộng (Extended Advertising BLE 5.0) là một phần mở rộng của cơ chế quảng cáo giúp tăng kích thước gói quảng cáo từ 31 lên 251 byte và bổ sung các loại gói mới. Extended Advertising cũng hỗ trợ coded PHY để mở rộng phạm vi liên lạc lên đến 1 km ở khu vực mở và quảng cáo định kỳ (Periodic Advertising) để đồng bộ nhiều Central.

Những cải tiến chính: ADV_EXT_IND — PDU quảng cáo mở rộng có thể truyền tới 251 byte dữ liệu trong một gói duy nhất. Extended Advertising sử dụng các kênh chính (37, 38, 39) chỉ để chỉ ra kênh phụ nào (0–36) mang dữ liệu đầy đủ. Điều này giảm tải trên các kênh quảng cáo và tăng thông lượng tổng thể của hệ thống.

Quảng cáo định kỳ (Periodic Advertising) là một cơ chế bổ sung trong đó Peripheral gửi dữ liệu trên các kênh phụ với khoảng thời gian cố định và Central có thể đồng bộ hóa với chuỗi này. Nó được sử dụng cho các dịch vụ yêu cầu cập nhật dữ liệu thường xuyên — ví dụ, phát trực tuyến âm thanh hoặc đọc cảm biến thời gian thực.

Thông sốBLE tiêu chuẩnExtended BLE 5.0
Kích thước gói tối đa31 byte251 byte
KênhChỉ 37, 38, 39+ phụ 0–36
Phạm viLên đến 100 mLên đến 1000 m (coded PHY)
Tốc độ1 Mbps125 kbps – 2 Mbps
Định kỳKhông

Cấu hình quảng cáo trên iOS và Android

iOS (Core Bluetooth) cung cấp CBPeripheralManager để quản lý quảng cáo. Các thông số quảng cáo được thiết lập thông qua từ điển advertisementData với các khóa CBAdvertisementDataLocalNameKey (tên thiết bị), CBAdvertisementDataServiceUUIDsKey (UUID dịch vụ), CBAdvertisementDataTxPowerLevelKey (mức công suất). iOS tự động quản lý khoảng thời gian quảng cáo và không cho phép thiết lập thủ công.

swift
import CoreBluetooth

class AdvertiserManager: NSObject, CBPeripheralManagerDelegate {

    private var peripheralManager: CBPeripheralManager!

    func startBLEAdvertising() {
        let data: [String: Any] = [
            CBAdvertisementDataLocalNameKey: "BLE Beacon",
            CBAdvertisementDataServiceUUIDsKey: [
                CBUUID("180F")
            ],
            CBAdvertisementDataIsConnectable: true
        ]
        peripheralManager.startAdvertising(data)
    }
}

Android (BluetoothLeAdvertiser) cung cấp khả năng kiểm soát chi tiết hơn. Có sẵn: AdvertiseSettings — cấu hình chế độ (LOW_POWER, BALANCED, LOW_LATENCY), công suất phát và khoảng thời gian; AdvertiseData — dữ liệu gói. Android hỗ trợ quảng cáo mở rộng (BLE 5.0) trên các thiết bị tương thích, nhưng tỷ lệ các thiết bị như vậy trên thị trường là khoảng 30–40%.

java
BluetoothLeAdvertiser advertiser =
    BluetoothAdapter.getDefaultAdapter()
    .getBluetoothLeAdvertiser();

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

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

advertiser.startAdvertising(
    settings, data, advertiseCallback
);

Khi phát triển ứng dụng BLE đa nền tảng, hãy xem xét sự khác biệt: iOS không cho phép kiểm soát trực tiếp khoảng thời gian quảng cáo nhưng đảm bảo hoạt động ổn định trên tất cả các thiết bị; Android cung cấp toàn quyền kiểm soát, nhưng sự phân mảnh về phiên bản và nhà sản xuất có thể dẫn đến không tương thích. Nên kiểm tra quảng cáo trên các thiết bị thực của cả hai nền tảng.

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

Sự khác biệt giữa quảng cáo có kết nối và không kết nối là gì?

Quảng cáo có kết nối (ADV_IND) cho phép Central thiết lập kết nối hai chiều với thiết bị. Quảng cáo không kết nối (ADV_NONCONN_IND) chỉ truyền dữ liệu một chiều, được sử dụng bởi beacon để phát định danh mà không có khả năng kết nối.

Có thể truyền bao nhiêu byte trong một gói quảng cáo?

Gói quảng cáo tiêu chuẩn là 31 byte, scan response thêm 31 byte. Quảng cáo mở rộng (BLE 5.0+) tăng giới hạn lên 251 byte bằng cách sử dụng các kênh phụ để truyền dữ liệu.

Nên chọn khoảng thời gian quảng cáo nào cho thiết bị IoT?

Đối với hầu hết các thiết bị IoT, nên chọn 500–1000 ms. Nếu cần phát hiện nhanh (ví dụ, để kết nối tai nghe), hãy sử dụng 20–50 ms. Đối với cảm biến truyền dữ liệu không thường xuyên, hãy sử dụng 1000–2000 ms để tiết kiệm năng lượng.

Tại sao BLE sử dụng ba kênh quảng cáo?

Ba kênh (37, 38, 39) là sự thỏa hiệp giữa độ tin cậy phát hiện và thông lượng. Một kênh có thể bị Wi-Fi chiếm dụng, nhưng thiết bị sẽ được phát hiện trên hai kênh còn lại. Kênh 38 nằm trong vùng nhiễu tối thiểu giữa các kênh Wi-Fi.

Quảng cáo ảnh hưởng đến tuổi thọ pin như thế nào?

Quảng cáo là nguồn tiêu thụ năng lượng chính trong BLE. Ở khoảng thời gian 1000 ms, dòng điện trung bình là 50–100 µA, cho phép thiết bị hoạt động trong một năm với pin CR2032. Ở khoảng thời gian 20 ms, dòng điện tăng lên 1–2 mA, giảm thời gian hoạt động xuống còn vài tuần.

Tổng kết

  • Advertising là cơ chế phát hiện thiết bị BLE hoạt động trên ba kênh (37, 38, 39) với kích thước gói lên đến 31 byte.
  • Có năm loại PDU quảng cáo: ADV_IND, ADV_DIRECT_IND, ADV_NONCONN_IND, ADV_SCAN_IND và ADV_EXT_IND cho BLE 5.0.
  • Khoảng thời gian quảng cáo dao động từ 20 ms đến 10,24 s và ảnh hưởng trực tiếp đến tốc độ phát hiện và mức tiêu thụ năng lượng của thiết bị.
  • Scan Response cung cấp thêm 31 byte dữ liệu theo yêu cầu của Central mà không làm tăng mức tiêu thụ năng lượng của Peripheral.
  • Quảng cáo mở rộng (BLE 5.0) tăng gói lên 251 byte và hỗ trợ phạm vi lên đến 1 km qua coded PHY.
  • Trên iOS, quảng cáo được quản lý thông qua CBPeripheralManager; trên Android — thông qua BluetoothLeAdvertiser với các cài đặt chi tiết.
  • Việc chọn đúng khoảng thời gian quảng cáo và loại gói quyết định hiệu quả năng lượng và tuổi thọ pin 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