Bluetooth và BLE: khái niệm, sự khác biệt giữa Classic và Low Energy, cách hoạt động

Tác giả: IT Sectr Đã đăng: 2026-03-24 Thời gian đọc: 12 phút

Bluetooth và Bluetooth Low Energy là các tiêu chuẩn truyền thông không dây để truyền dữ liệu ở khoảng cách ngắn. Bluetooth Classic (BR/EDR) cung cấp kênh phát trực tuyến ổn định cho âm thanh và tệp tin, trong khi BLE được tối ưu hóa để hoạt động tiết kiệm năng lượng với các cảm biến và thiết bị ngoại vi. Theo Bluetooth SIG, 2025, hơn 5 tỷ thiết bị hỗ trợ BLE được xuất xưởng hàng năm — tiêu chuẩn này đã trở thành nền tảng của IoT, thiết bị điện tử đeo được và phụ kiện di động.

Những điểm chính

  • Bluetooth Classic — tiêu chuẩn BR/EDR để truyền âm thanh và dữ liệu liên tục với tốc độ lên đến 3 Mbit/s và mức tiêu thụ 10–30 mA
  • Bluetooth Low Energy — giao thức truyền dữ liệu khối lượng nhỏ không liên tục với dòng đỉnh 5–15 mA và tuổi thọ pin lên đến vài năm
  • Hồ sơ GATT — mô hình máy khách-máy chủ thống nhất xác định cách ứng dụng di động đọc các đặc tính của thiết bị ngoại vi
  • Advertising — cơ chế trong đó thiết bị BLE định kỳ gửi các gói beacon để được phát hiện bởi thiết bị trung tâm (điện thoại thông minh)
  • iOS và Android — các nền tảng sử dụng API khác nhau (Core Bluetooth và android.bluetooth), nhưng cả hai đều hỗ trợ GATT — mã có thể di động với những thay đổi tối thiểu

Bluetooth và BLE là gì?

Bluetooth là tiêu chuẩn mạng cá nhân không dây (WPAN) hoạt động trong băng tần ISM 2,4 GHz, được thiết kế để giao tiếp giữa các thiết bị ở khoảng cách lên đến 100 mét. Đặc tả IEEE 802.15.1 xác định các lớp vật lý và MAC, trong khi ngăn xếp Bluetooth SIG xác định các hồ sơ cấp cao cho các tình huống cụ thể: tai nghe âm thanh (HSP), truyền tệp (OPP), nhập bàn phím (HID).

Tiêu chuẩn này đã chia thành hai nhánh từ phiên bản 4.0 (2010): Bluetooth Classic (BR/EDR — Basic Rate / Enhanced Data Rate) và Bluetooth Low Energy (BLE, trước đây là Bluetooth Smart). Classic được thiết kế cho các luồng liên tục — cuộc gọi âm thanh, nhạc, tệp tin. BLE được tạo ra cho các ứng dụng nơi dữ liệu được truyền trong các gói ngắn với khoảng dừng hàng chục giây hoặc phút — máy đo nhịp tim, thẻ, cảm biến nhiệt độ.

Theo Bluetooth SIG (2025), 99% điện thoại thông minh mới hỗ trợ cả hai phiên bản và hệ sinh thái BLE bao gồm hơn 15 loại hồ sơ từ Blood Pressure đến Environmental Sensing.

Bluetooth Classic so với BLE: So sánh

Việc lựa chọn giữa Classic và BLE phụ thuộc vào tình huống: để phát trực tuyến âm thanh chỉ Classic phù hợp, để thăm dò cảm biến mỗi giờ một lần — chỉ BLE. BR/EDR sử dụng 79 kênh với khoảng cách 1 MHz và nhảy tần thích ứng (AFH), cung cấp khả năng chống nhiễu Wi-Fi.

Tham sốBluetooth Classic (BR/EDR)Bluetooth Low Energy (BLE)
Tốc độ dữ liệu1–3 Mbit/s (EDR)125 kbit/s – 2 Mbit/s (LE 2M PHY)
Dòng đỉnh10–30 mA5–15 mA
Thời gian phát sóng~100 ms~3 ms
Cấu trúc liên kếtPiconet (1 chủ, tối đa 7 tớ)Broadcaster / Observer / Peripheral / Central
Hồ sơHFP, A2DP, HSP, SPP, OPPDựa trên GATT (HRS, BLS, CTS, v.v.)
Thiết bị điển hìnhTai nghe, loa, rảnh tay ô tôTrình theo dõi sức khỏe, thẻ, máy đo nhịp tim, cảm biến IoT
Tương thíchKhông tương thích với BLE ở lớp vật lýChip hai chế độ hỗ trợ cả hai ngăn xếp

BLE 5.x đã thêm LE Coded PHY để tăng phạm vi lên đến 1 km (ở khu vực mở) và LE Audio với bộ giải mã LC3 — phiên bản mới đang dần xóa mờ ranh giới giữa Classic và BLE cho các tình huống âm thanh.

Kiến trúc BLE: Bộ điều khiển, Máy chủ và Ứng dụng

Ngăn xếp BLE được chia thành ba lớp: Bộ điều khiển (Controller) (lớp vật lý và liên kết), Máy chủ (Host) (L2CAP, ATT, GATT, Trình quản lý bảo mật) và Ứng dụng (Application) (triển khai hồ sơ trong ứng dụng). Sự phân tách này cho phép nhà sản xuất chip triển khai Bộ điều khiển trong phần sụn, trong khi nhà phát triển ứng dụng di động chỉ làm việc với các trừu tượng GATT.

Lớp liên kết (LL) quản lý thời gian phát sóng: thiết bị chuyển đổi giữa các trạng thái Standby, Advertising, Scanning, Initiating và Connection. Ở trạng thái Connected, Central và Peripheral thỏa thuận về khoảng thời gian kết nối — tần suất trao đổi gói dữ liệu. Khoảng thời gian điển hình là 7,5–1000 ms; trao đổi càng thường xuyên thì thông lượng càng cao và mức tiêu thụ điện càng lớn.

Trình quản lý bảo mật (SM) triển khai mã hóa AES-128 với trao đổi khóa thông qua giao thức ghép đôi. Có ba chế độ: Just Works (không nhập mã), Passkey Entry (mã 6 chữ số trên màn hình) và OOB (NFC hoặc QR). Đối với thiết bị đeo, thường sử dụng Just Works; đối với thiết bị y tế, sử dụng OOB với xác minh bổ sung.

Theo Bluetooth Core Specification 5.4 (2023), thời gian thiết lập kết nối an toàn ở chế độ LE Secure Connections không vượt quá 300 ms với khoảng thời gian kết nối 30 ms.

Hồ sơ GATT: Dịch vụ, Đặc tính và Bộ mô tả

ATT (Giao thức thuộc tính) là mô hình truyền tải cơ bản trong đó máy chủ (thiết bị ngoại vi) lưu trữ các thuộc tính và máy khách (điện thoại thông minh) đọc hoặc ghi chúng. GATT (Hồ sơ thuộc tính chung) xây dựng hệ thống phân cấp trên ATT: Service → Characteristic → Descriptor.

Mỗi dịch vụ là một nhóm logic các đặc tính mô tả một chức năng của thiết bị: Heart Rate Service (UUID 0x180D) chứa đặc tính Heart Rate Measurement (UUID 0x2A37) với Bộ mô tả Cấu hình Đặc tính Máy khách (0x2902) kiểm soát thông báo. Nhà phát triển ứng dụng di động lấy danh sách dịch vụ thông qua discoverServices(), sau đó tìm đặc tính cần thiết theo UUID và đăng ký nhận thông báo.

BLE sử dụng UUID 16 bit cho các dịch vụ chuẩn hóa Bluetooth SIG và UUID 128 bit cho các dịch vụ tùy chỉnh của nhà sản xuất. Ví dụ, một hộp đựng theo dõi có thể xác định dịch vụ A000-… với đặc tính để truyền mức sạc pin của nó.

Ví dụ làm việc với GATT trong Kotlin (Android)

kotlin
private val gattCallback = object BluetoothGattCallback() {
    override fun onServicesDiscovered(
        gatt: BluetoothGatt, status: Int
    ) {
        val service = gatt.getService(UUID.fromString("0000180d-0000-1000-8000-00805f9b34fb"))
        val char = service?.getCharacteristic(
            UUID.fromString("00002a37-0000-1000-8000-00805f9b34fb")
        )
        gatt.setCharacteristicNotification(char, true)
    }

    override fun onCharacteristicChanged(
        gatt: BluetoothGatt, char: BluetoothGattCharacteristic
    ) {
        val heartRate = char.getIntValue(BluetoothGattCharacteristic.FORMAT_UINT8, 1)
        updateUi("Nhịp tim: $heartRate nhịp/phút")
    }
}

Trong ví dụ, ứng dụng tìm dịch vụ Heart Rate theo UUID tiêu chuẩn Bluetooth SIG, lấy đặc tính đo nhịp tim và đăng ký nhận thông báo của nó — mỗi khi nhịp tim thay đổi, thiết bị ngoại vi gửi dữ liệu mà không cần yêu cầu rõ ràng từ Central.

Advertising, quét và thiết lập kết nối

Advertising là cơ chế chính của BLE trong đó thiết bị Peripheral định kỳ gửi các gói quảng bá (PDU advertising) trên ba kênh chính (37, 38, 39). Thiết bị trung tâm quét các kênh này, nhận dữ liệu advertising và có thể bắt đầu kết nối.

Một gói advertising chứa tới 31 byte tải trọng: cờ, mức công suất TX, tên cục bộ, UUID dịch vụ, dữ liệu dành riêng cho nhà sản xuất. Điều này đủ để truyền chỉ số cảm biến mà không cần thiết lập kết nối — chế độ không kết nối (loại Broadcaster). Để truyền dữ liệu liên tục (ví dụ: nhiệt độ mỗi phút một lần), sử dụng kết nối với khoảng thời gian lên đến 1000 ms.

Trên các nền tảng di động, quét được khởi chạy qua startScan() (Android) hoặc scanForPeripherals() (iOS). Lọc theo UUID dịch vụ giúp tiết kiệm năng lượng bằng cách không xử lý tất cả các thiết bị hiển thị — ứng dụng chỉ nhận callback cho các thẻ hoặc cảm biến liên quan.

Ví dụ quét thiết bị BLE trong Swift (iOS)

swift
import CoreBluetooth

class ScannerViewController: UIViewController {
    private var centralManager: CBCentralManager!

    override func viewDidLoad() {
        centralManager = CBCentralManager(
            delegate: self, queue: nil
        )
    }

    func centralManagerDidUpdateState(central: CBCentralManager) {
        if central.state == .poweredOn {
            centralManager.scanForPeripherals(
                withServices: nil, options: nil
            )
        }
    }

    func centralManager(
        central: CBCentralManager,
        didDiscover peripheral: CBPeripheral,
        advertisementData: [String : Any],
        rssi RSSI: NSNumber
    ) {
        if let name = advertisementData[CBAdvertisementDataLocalNameKey] {
            print("Đã tìm thấy thiết bị: \(name)")
        }
    }
}

Sau khi phát hiện thiết bị, Central gọi connect(), truyền đối tượng CBPeripheral. Các tham số kết nối (khoảng thời gian, độ trễ, thời gian chờ giám sát) được thương lượng ở cấp lớp liên kết — nhà phát triển không quản lý trực tiếp nhưng có thể ảnh hưởng thông qua requestConnectionPriority trên Android.

Bluetooth LE trong phát triển di động: Core Bluetooth và android.bluetooth

Cả hai nền tảng di động đều cung cấp API gốc để làm việc với BLE. Core Bluetooth (iOS) sử dụng phương pháp ủy quyền: trình quản lý trung tâm khởi tạo các hoạt động và đối tượng ngoại vi báo cáo kết quả thông qua các phương thức ủy quyền. android.bluetooth (Android) được xây dựng trên các giao diện callback và hỗ trợ các hoạt động GATT song song với nhiều thiết bị.

Sự khác biệt chính giữa các nền tảng:

  • iOS — hỗ trợ tới 7 kết nối đồng thời; chế độ BLE nền yêu cầu UIBackgroundModes = bluetooth-central; sau khi rời khỏi nền trước, hệ thống có thể trì hoãn callback vài phút
  • Android — không có giới hạn kết nối cố định (giới hạn bởi bộ nhớ); yêu cầu quyền BLUETOOTH_SCAN và BLUETOOTH_CONNECT (Android 12+); dịch vụ nền trước cần thiết để quét nền đáng tin cậy
  • Flutter — gói flutter_blue_plus trừu tượng hóa API nền tảng bằng giao diện Dart thống nhất: mã quét và hoạt động GATT giống hệt nhau trên cả hai nền tảng

Theo các thử nghiệm của Bluetooth SIG (2024), thời gian kết nối BLE giữa điện thoại thông minh và trình theo dõi sức khỏe trung bình 150–300 ms trên Android và 100–250 ms trên iOS — sự khác biệt là do các chính sách quản lý mô-đun tần số vô tuyến.

Ví dụ kết nối BLE trong Dart (Flutter)

dart
import 'package:flutter_blue_plus/flutter_blue_plus.dart';

class BleService {
  final FlutterBluePlus fbp = FlutterBluePlus();

  Future<void> scanAndConnect(String deviceName) async {
    await fbp.startScan(timeout: Duration(seconds: 15));

    await for (final result in fbp.scanResults) {
      if (result.device.advName == deviceName) {
        await fbp.stopScan();
        await result.device.connect();
        break;
      }
    }
  }
}

Nhà phát triển Flutter nhận được giao diện API thống nhất; bên dưới, flutter_blue_plus dịch các lệnh gọi sang android.bluetooth gốc hoặc Core Bluetooth. Cách tiếp cận này giảm thời gian phát triển ứng dụng để làm việc với thiết bị ngoại vi BLE trên cả hai nền tảng.

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

Sự khác biệt giữa Bluetooth Classic và BLE là gì?

Bluetooth Classic (BR/EDR) được thiết kế để phát trực tuyến liên tục — cuộc gọi âm thanh, nhạc, truyền tệp. BLE được tối ưu hóa cho các gói dữ liệu ngắn với mức tiêu thụ điện tối thiểu — cảm biến, thẻ, trình theo dõi sức khỏe. Classic tiêu thụ 10–30 mA, BLE — 5–15 mA ở đỉnh.

Bluetooth Classic và BLE có tương thích với nhau không?

Ở lớp vật lý, chúng không tương thích — điều chế và bản đồ kênh khác nhau. Tuy nhiên, hầu hết các chip hiện đại là hai chế độ và triển khai cả hai ngăn xếp. Điện thoại thông minh có chip hai chế độ có thể đồng thời giao tiếp với tai nghe Classic và trình theo dõi BLE.

Khoảng thời gian kết nối trong BLE là gì?

Khoảng thời gian kết nối là thời gian giữa hai gói dữ liệu trong một kết nối đã thiết lập. Giá trị dao động từ 7,5 ms đến 4 giây. Khoảng thời gian càng ngắn, thông lượng càng cao và mức tiêu thụ điện càng lớn. Đối với cảm biến nhiệt độ báo cáo mỗi phút một lần, sử dụng khoảng thời gian 1000 ms.

Ghép đôi trong BLE hoạt động như thế nào?

Ghép đôi là quá trình trao đổi khóa mã hóa giữa Central và Peripheral. BLE hỗ trợ ba phương pháp: Just Works (không xác nhận), Passkey Entry (nhập mã PIN trên màn hình) và OOB (trao đổi qua NFC hoặc QR). Sau khi ghép đôi, các thiết bị lưu trữ khóa (bonding) và không yêu cầu xác thực lại ở các kết nối tiếp theo.

Những hồ sơ BLE nào được sử dụng trong ứng dụng di động?

Phổ biến nhất: Heart Rate Profile (0x180D) cho máy đo nhịp tim, Blood Pressure Profile (0x1810) cho máy đo huyết áp, Environmental Sensing (0x181A) cho cảm biến nhiệt độ và độ ẩm, Battery Service (0x180F) cho mức sạc, Device Information (0x180A) cho kiểu máy và số sê-ri.

Tổng kết

  • Bluetooth là tiêu chuẩn WPAN trong băng tần 2,4 GHz, được chia thành Classic (BR/EDR) và Low Energy (BLE) từ phiên bản 4.0
  • Bluetooth Classic cung cấp tốc độ lên đến 3 Mbit/s và được sử dụng cho tai nghe âm thanh và truyền tệp
  • BLE được tối ưu hóa cho mức tiêu thụ điện thấp (5–15 mA) và được sử dụng trong IoT, trình theo dõi sức khỏe và cảm biến
  • Hồ sơ GATT tổ chức dữ liệu theo hệ thống phân cấp Service → Characteristic → Descriptor với trao đổi qua giao thức ATT
  • Advertising cho phép thiết bị ngoại vi truyền dữ liệu mà không cần thiết lập kết nối trên ba kênh chính
  • iOS (Core Bluetooth) và Android (android.bluetooth) cung cấp API gốc với các cách tiếp cận khác nhau cho hoạt động nền và quyền
  • Flutter (flutter_blue_plus) hợp nhất các API nền tảng bằng một giao diện Dart duy nhất để phát triển đa nền tảng

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