Bluetooth dan Bluetooth Low Energy adalah standar komunikasi nirkabel untuk mentransmisikan data dalam jarak pendek. Bluetooth Classic (BR/EDR) menyediakan saluran streaming stabil untuk audio dan file, sementara BLE dioptimalkan untuk pekerjaan hemat energi dengan sensor dan periferal. Menurut data Bluetooth SIG, 2025, setiap tahun lebih dari 5 miliar perangkat dengan dukungan BLE dikirimkan — standar ini menjadi dasar IoT, elektronik yang dapat dikenakan, dan aksesori mobile.
主要观点
Bluetooth — adalah standar jaringan pribadi nirkabel (WPAN) yang beroperasi di pita ISM 2,4 GHz dan dirancang untuk komunikasi antar perangkat dalam jarak hingga 100 meter. Spesifikasi IEEE 802.15.1 mendefinisikan lapisan fisik dan MAC, dan tumpukan Bluetooth SIG mendefinisikan profil tingkat atas untuk skenario tertentu: headset audio (HSP), transfer file (OPP), input keyboard (HID).
Standar ini terbagi menjadi dua cabang sejak versi 4.0 (2010): Bluetooth Classic (BR/EDR) dan Bluetooth Low Energy (BLE, sebelumnya Bluetooth Smart). Classic ditujukan untuk streaming berkelanjutan — panggilan audio, musik, file. BLE diciptakan untuk aplikasi di mana data dikirim dalam paket pendek dengan jeda puluhan detik atau menit — alat pengukur denyut nadi, tag, sensor suhu.
Menurut Bluetooth SIG (2025), 99% smartphone baru mendukung kedua versi, dan ekosistem BLE mencakup lebih dari 15 jenis profil dari Blood Pressure hingga Environmental Sensing.
Pemilihan antara Classic dan BLE tergantung pada skenario: untuk streaming audio hanya Classic yang cocok, untuk pembacaan sensor sekali per jam — hanya BLE. BR/EDR menggunakan 79 saluran dengan langkah 1 MHz dan modulasi frekuensi adaptif (AFH), memberikan ketahanan terhadap interferensi Wi-Fi.
| Parameter | Bluetooth Classic (BR/EDR) | Bluetooth Low Energy (BLE) |
|---|---|---|
| Kecepatan transmisi | 1–3 Mbit/s (EDR) | 125 kbit/s – 2 Mbit/s (LE 2M PHY) |
| Arus puncak | 10–30 mA | 5–15 mA |
| Waktu siaran | ~100 ms | ~3 ms |
| Topologi | Piconet (1 master, hingga 7 slave) | Broadcaster / Observer / Peripheral / Central |
| Profil | HFP, A2DP, HSP, SPP, OPP | Berbasis GATT (HRS, BLS, CTS dll.) |
| Perangkat tipikal | Headset, speaker, perangkat hands-free mobil | Gelang fitness, tag, pengukur denyut nadi, sensor IoT |
| Kompatibilitas | Tidak kompatibel dengan BLE pada tingkat fisik | Chip dual-mode mendukung kedua tumpukan |
BLE 5.x menambahkan LE Coded PHY untuk meningkatkan jangkauan hingga 1 km (di area terbuka) dan LE Audio dengan codec LC3 — versi baru ini secara bertahap mengaburkan batas antara Classic dan BLE dalam skenario audio.
Tumpukan BLE dibagi menjadi tiga lapisan: Controller (fisik dan tautan), Host (L2CAP, ATT, GATT, Security Manager) dan Application (implementasi profil dalam aplikasi). Pemisahan ini memungkinkan produsen chip mengimplementasikan Controller di firmware, dan pengembang aplikasi mobile hanya bekerja dengan abstraksi GATT.
Link Layer (LL) mengatur waktu siaran: perangkat beralih di antara status Standby, Advertising, Scanning, Initiating dan Connection. Dalam status Connected, Central dan Peripheral menyepakati connection interval — frekuensi pertukaran paket data. Interval tipikal 7,5–1000 ms; semakin sering pertukaran, semakin tinggi bandwidth dan konsumsi daya.
Security Manager (SM) mengimplementasikan enkripsi AES-128 dengan pertukaran kunci melalui protokol pairing. Ada tiga mode: Just Works (tanpa memasukkan PIN), Passkey Entry (kode 6 digit di layar) dan OOB (NFC atau QR). Untuk perangkat yang dapat dikenakan biasanya digunakan Just Works, untuk perangkat medis — OOB dengan verifikasi tambahan.
Menurut Bluetooth Core Specification 5.4 (2023), waktu pembuatan koneksi aman dalam mode LE Secure Connections tidak melebihi 300 ms pada connection interval 30 ms.
Protokol ATT (Attribute Protocol) — model transportasi dasar di mana server (perangkat periferal) menyimpan atribut dan klien (smartphone) membacanya atau menulisnya. GATT (Generic Attribute Profile) membangun hierarki di atas ATT: Service → Characteristic → Descriptor.
Setiap layanan adalah grup logis karakteristik yang menggambarkan satu fungsi perangkat: Heart Rate Service (UUID 0x180D) berisi karakteristik Heart Rate Measurement (UUID 0x2A37) dengan Descriptor Client Characteristic Configuration (0x2902) yang mengelola notifikasi. Pengembang aplikasi mobile mendapatkan daftar layanan melalui discoverServices(), kemudian menemukan karakteristik yang diinginkan berdasarkan UUID dan berlangganan notifikasi.
BLE menggunakan UUID 16-bit untuk layanan standar Bluetooth SIG dan UUID 128-bit untuk layanan khusus produsen. Misalnya, casing tracker dapat mendefinisikan layanan A000-… dengan karakteristik untuk mentransmisikan tingkat pengisian baterai.
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("心率:$heartRate 次/分钟")
}
}
Dalam contoh, aplikasi menemukan layanan Heart Rate melalui UUID standar Bluetooth SIG, mendapatkan karakteristik pengukuran denyut nadi dan berlangganan notifikasinya — setiap kali denyut nadi berubah, perangkat periferal mengirim data tanpa permintaan eksplisit dari Central.
Advertising — mekanisme kunci BLE di mana perangkat Peripheral secara periodik mengirim paket siaran (advertising PDUs) di tiga saluran utama (37, 38, 39). Perangkat pusat memindai saluran ini, menerima data advertising dan dapat memulai koneksi.
Paket advertising berisi hingga 31 byte muatan berguna: flag, TX power level, nama lokal, UUID layanan, data khusus produsen. Ini cukup untuk mentransmisikan pembacaan sensor tanpa membuat koneksi — mode Connectionless (tipe Broadcaster). Untuk transmisi data berkelanjutan (misalnya suhu setiap menit) digunakan koneksi dengan connection interval hingga 1000 ms.
Di platform mobile, pemindaian dimulai melalui startScan() (Android) atau scanForPeripherals() (iOS). Pemfilteran berdasarkan UUID layanan menghemat energi — aplikasi hanya menerima callback untuk tag atau sensor yang menarik.
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("找到设备:\(name)")
}
}
}
Setelah mendeteksi perangkat, Central memanggil connect() dengan meneruskan objek CBPeripheral. Parameter koneksi (interval, latency, supervision timeout) dinegosiasikan di tingkat Link Layer — pengembang tidak mengelolanya secara langsung, tetapi dapat memengaruhinya melalui requestConnectionPriority di Android.
Kedua platform mobile menyediakan API native untuk bekerja dengan BLE. Core Bluetooth (iOS) menggunakan pendekatan delegasi: manajer pusat memulai operasi, objek periferal melaporkan hasil melalui metode delegasi. android.bluetooth (Android) dibangun di atas antarmuka callback dan mendukung operasi GATT paralel dengan beberapa perangkat.
Perbedaan utama antara platform:
Menurut tes Bluetooth SIG (2024), waktu koneksi BLE smartphone dengan gelang fitness rata-rata 150–300 ms di Android dan 100–250 ms di iOS — perbedaan disebabkan oleh kebijakan manajemen modul radio.
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;
}
}
}
}
Pengembang Flutter mendapatkan antarmuka API terpadu, di mana flutter_blue_plus menerjemahkan panggilan ke android.bluetooth atau Core Bluetooth native. Pendekatan ini mengurangi waktu pengembangan aplikasi untuk bekerja dengan periferal BLE di kedua platform.
常见问题
Bluetooth Classic (BR/EDR) ditujukan untuk transmisi streaming berkelanjutan — panggilan audio, musik, transfer file. BLE dioptimalkan untuk paket data pendek dengan konsumsi daya minimal — sensor, tag, pelacak fitness. Classic mengonsumsi 10–30 mA, BLE 5–15 mA pada puncaknya.
Pada tingkat fisik mereka tidak kompatibel — modulasi dan peta saluran berbeda. Namun, sebagian besar chip modern bersifat dual-mode dan mengimplementasikan kedua tumpukan. Smartphone dengan chip dual-mode dapat berkomunikasi secara bersamaan dengan headset Classic dan tracker BLE.
Connection interval adalah interval waktu antara dua paket data dalam koneksi yang telah dibuat. Nilainya bervariasi dari 7,5 ms hingga 4 detik. Semakin kecil interval, semakin tinggi bandwidth dan konsumsi daya. Untuk sensor suhu sekali per menit digunakan interval 1000 ms.
Pairing adalah proses pertukaran kunci enkripsi antara Central dan Peripheral. BLE mendukung tiga metode: Just Works (tanpa konfirmasi), Passkey Entry (memasukkan PIN di layar) dan OOB (pertukaran melalui NFC atau QR). Setelah pairing, perangkat menyimpan kunci (bonding) dan saat menghubungkan kembali tidak memerlukan autentikasi ulang.
Yang paling umum: Heart Rate Profile (0x180D) untuk pengukur denyut nadi, Blood Pressure Profile (0x1810) untuk tensimeter, Environmental Sensing (0x181A) untuk sensor suhu dan kelembaban, Battery Service (0x180F) untuk tingkat pengisian, Device Information (0x180A) untuk model dan nomor seri.
总结
我们将开发一款交钥匙移动应用程序
IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。