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 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.
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ệu | 1–3 Mbit/s (EDR) | 125 kbit/s – 2 Mbit/s (LE 2M PHY) |
| Dòng đỉnh | 10–30 mA | 5–15 mA |
| Thời gian phát sóng | ~100 ms | ~3 ms |
| Cấu trúc liên kết | Piconet (1 chủ, tối đa 7 tớ) | Broadcaster / Observer / Peripheral / Central |
| Hồ sơ | HFP, A2DP, HSP, SPP, OPP | Dựa trên GATT (HRS, BLS, CTS, v.v.) |
| Thiết bị điển hình | Tai 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ích | Khô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.
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.
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ó.
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 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.
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.
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:
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.
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
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.
Ở 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 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 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.
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
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.
Đọc thêm