Bluetooth و BLE: چیست، تفاوت Classic با Low Energy و نحوه کار

نویسنده: IT Sectr منتشر شده: 2026-03-24 زمان مطالعه: 12 دقیقه

Bluetooth و Bluetooth Low Energy استانداردهای ارتباط بی‌سیم برای انتقال داده در فواصل کوتاه هستند. Bluetooth Classic (BR/EDR) یک کانال جریانی پایدار برای صدا و فایل‌ها فراهم می‌کند، در حالی که BLE برای کار کم‌مصرف با سنسورها و تجهیزات جانبی بهینه شده است. طبق داده‌های Bluetooth SIG، 2025، سالانه بیش از ۵ میلیارد دستگاه با پشتیبانی BLE عرضه می‌شود — این استاندارد به اساس IoT، الکترونیک پوشیدنی و اکسسوارهای موبایل تبدیل شده است.

نکات اصلی

  • Bluetooth Classic — استاندارد BR/EDR برای انتقال پیوسته صدا و داده با سرعت تا ۳ مگابیت بر ثانیه و مصرف انرژی ۱۰–۳۰ میلی‌آمپر
  • Bluetooth Low Energy — پروتکل برای انتقال منقطع داده‌های کم‌حجم با جریان پیک ۵–۱۵ میلی‌آمپر و عمر باتری تا چند سال
  • پروفایل GATT — مدل یکپارچه مشتری-سرور که نحوه خواندن مشخصات دستگاه جانبی توسط اپلیکیشن موبایل را تعیین می‌کند
  • Advertising — مکانیزمی که در آن دستگاه BLE به طور دوره‌ای بسته‌های بیکن برای شناسایی توسط دستگاه مرکزی (گوشی هوشمند) ارسال می‌کند
  • iOS و Android — پلتفرم‌ها از APIهای متفاوت (Core Bluetooth و android.bluetooth) استفاده می‌کنند، اما هر دو GATT را پشتیبانی می‌کنند — کد با کمترین تغییرات قابل انتقال است

Bluetooth و BLE چیست؟

Bluetooth — یک استاندارد شبکه شخصی بی‌سیم (WPAN) است که در باند ISM 2.4 گیگاهرتز کار می‌کند و برای ارتباط دستگاه‌ها در فاصله تا ۱۰۰ متر طراحی شده است. مشخصات IEEE 802.15.1 لایه فیزیکی و MAC را تعریف می‌کند، و پشته Bluetooth SIG پروفایل‌های سطح بالاتر را برای سناریوهای خاص تعریف می‌کند: هدست‌های صوتی (HSP)، انتقال فایل (OPP)، ورودی صفحه کلید (HID).

این استاندارد از نسخه ۴.۰ (۲۰۱۰) به دو شاخه تقسیم شده است: Bluetooth Classic (BR/EDR — Basic Rate / Enhanced Data Rate) و Bluetooth Low Energy (BLE، قبلاً Bluetooth Smart). Classic برای جریان‌های پیوسته — تماس‌های صوتی، موسیقی، فایل‌ها طراحی شده است. BLE برای برنامه‌هایی که داده‌ها در بسته‌های کوتاه با فواصل ده‌ها ثانیه یا دقیقه منتقل می‌شوند — پالس‌سنج‌ها، برچسب‌ها، سنسورهای دما ایجاد شده است.

طبق داده‌های Bluetooth SIG (۲۰۲۵)، ۹۹٪ گوشی‌های هوشمند جدید هر دو نسخه را پشتیبانی می‌کنند، و اکوسیستم BLE شامل بیش از ۱۵ نوع پروفایل از Blood Pressure تا Environmental Sensing است.

Bluetooth Classic در مقابل BLE: مقایسه مشخصات

انتخاب بین Classic و BLE به سناریو بستگی دارد: برای انتقال جریانی صدا فقط Classic مناسب است، برای پرسش از سنسور یک بار در ساعت — فقط BLE. BR/EDR از ۷۹ کانال با گام ۱ مگاهرتز و مدولاسیون فرکانس تطبیقی (AFH) استفاده می‌کند که مقاومت در برابر تداخل Wi-Fi را تضمین می‌کند.

پارامترBluetooth Classic (BR/EDR)Bluetooth Low Energy (BLE)
سرعت انتقال۱–۳ مگابیت/ث (EDR)۱۲۵ کیلوبیت/ث – ۲ مگابیت/ث (LE 2M PHY)
جریان پیک۱۰–۳۰ میلی‌آمپر۵–۱۵ میلی‌آمپر
زمان ارسال~۱۰۰ میلی‌ثانیه~۳ میلی‌ثانیه
توپولوژیPiconet (۱ master، تا ۷ slave)Broadcaster / Observer / Peripheral / Central
پروفایل‌هاHFP, A2DP, HSP, SPP, OPPمبتنی بر GATT (HRS, BLS, CTS و غیره)
دستگاه‌های معمولهدست‌ها، بلندگوها، دستگاه‌های hands-free خودرودستبندهای تناسب‌اندام، برچسب‌ها، پالس‌سنج‌ها، سنسورهای IoT
سازگاریدر سطح فیزیکی با BLE سازگار نیستتراشه‌های دوحالته هر دو پشته را پشتیبانی می‌کنند

BLE 5.x LE Coded PHY را برای افزایش برد تا ۱ کیلومتر (در فضای باز) و LE Audio با کدک LC3 اضافه کرد — نسخه جدید به تدریج مرز بین Classic و BLE را برای سناریوهای صوتی محو می‌کند.

معماری BLE: Controller، Host و Application

پشته BLE به سه لایه تقسیم می‌شود: Controller (لایه فیزیکی و پیوند)، Host (L2CAP, ATT, GATT, Security Manager) و Application(پیاده‌سازی پروفایل در برنامه). این تقسیم به تولیدکننده تراشه اجازه می‌دهد Controller را در فریم‌وئر پیاده‌سازی کند، و به توسعه‌دهنده اپلیکیشن موبایل — فقط با انتزاعات GATT کار کند.

لایه پیوند (LL) زمان ارسال را مدیریت می‌کند: دستگاه بین حالت‌های Standby، Advertising، Scanning، Initiating و Connection جابجا می‌شود. در حالت Connected، Central و Peripheral در مورد connection interval — فرکانس تبادل بسته‌های داده توافق می‌کنند. فاصله معمول ۷٫۵–۱۰۰۰ میلی‌ثانیه است؛ هر چه تبادل مکررتر باشد، پهنای باند بیشتر و مصرف انرژی بالاتر است.

Security Manager (SM) رمزنگاری AES-128 را با تبادل کلید از طریق پروتکل pairing پیاده‌سازی می‌کند. سه حالت متمایز می‌شود: Just Works (بدون وارد کردن PIN)، Passkey Entry (کد ۶ رقمی روی صفحه) و OOB (NFC یا QR). برای دستگاه‌های پوشیدنی معمولاً از Just Works و برای دستگاه‌های پزشکی از OOB با تأیید اضافی استفاده می‌شود.

طبق Bluetooth Core Specification ۵.۴ (۲۰۲۳)، زمان برقراری اتصال امن در حالت LE Secure Connections از ۳۰۰ میلی‌ثانیه در connection interval ۳۰ میلی‌ثانیه تجاوز نمی‌کند.

پروفایل GATT: سرویس‌ها، مشخصه‌ها و توصیف‌گرها

پروتکل ATT (Attribute Protocol) — مدل حمل و نقل پایه‌ای که در آن سرور (دستگاه جانبی) ویژگی‌ها را ذخیره می‌کند و مشتری (گوشی هوشمند) آنها را می‌خواند یا می‌نویسد. GATT (Generic Attribute Profile) سلسله‌مراتبی را روی ATT می‌سازد: Service → Characteristic → Descriptor.

هر سرویس یک گروه منطقی از مشخصه‌ها است که یک عملکرد دستگاه را توصیف می‌کند: Heart Rate Service (UUID 0x180D) شامل مشخصه Heart Rate Measurement (UUID 0x2A37) با Descriptor Client Characteristic Configuration (0x2902) است که اعلان‌ها را مدیریت می‌کند. توسعه‌دهنده اپلیکیشن موبایل لیست سرویس‌ها را از طریق discoverServices() دریافت می‌کند، سپس مشخصه مورد نظر را با UUID پیدا کرده و در اعلان‌ها مشترک می‌شود.

BLE برای سرویس‌های استاندارد Bluetooth SIG از UUID ۱۶ بیتی و برای سرویس‌های سفارشی تولیدکننده از UUID ۱۲۸ بیتی استفاده می‌کند. به عنوان مثال، یک برچسب-ردیاب می‌تواند سرویس A000-… را با مشخصه‌ای برای انتقال سطح شارژ باتری خود تعریف کند.

مثال کار با GATT در 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("نبض: $heartRate ضربان/دقیقه")
    }
}

در مثال، برنامه سرویس Heart Rate را با UUID استاندارد Bluetooth SIG پیدا می‌کند، مشخصه اندازه‌گیری نبض را دریافت کرده و در اعلان‌های آن مشترک می‌شود — با هر تغییر نبض، دستگاه جانبی داده‌ها را بدون درخواست صریح از Central ارسال می‌کند.

Advertising، اسکن و برقراری اتصال

Advertising — مکانیزم کلیدی BLE است که در آن دستگاه Peripheral به طور دوره‌ای بسته‌های پخش (advertising PDUs) را در سه کانال اولیه (۳۷، ۳۸، ۳۹) ارسال می‌کند. دستگاه مرکزی این کانال‌ها را اسکن می‌کند، داده‌های advertising را دریافت می‌کند و می‌تواند اتصال را آغاز کند.

بسته advertising حاوی تا ۳۱ بایت بار مفید است: پرچم‌ها، سطح توان TX، نام محلی، UUID سرویس‌ها، داده‌های خاص تولیدکننده. این برای انتقال قرائت سنسور بدون برقراری اتصال کافی است — حالت Connectionless (نوع Broadcaster). برای انتقال مداوم داده (مثلاً دما هر دقیقه) از اتصال با connection interval تا ۱۰۰۰ میلی‌ثانیه استفاده می‌شود.

در پلتفرم موبایل، اسکن از طریق startScan() (Android) یا scanForPeripherals() (iOS) راه‌اندازی می‌شود. فیلتر کردن بر اساس UUID سرویس اجازه می‌دهد انرژی برای پردازش همه دستگاه‌های قابل مشاهده هدر نرود — برنامه فقط برای برچسب‌ها یا سنسورهای مورد نظر callback دریافت می‌کند.

مثال اسکن دستگاه‌های BLE در 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("دستگاه پیدا شد: \(name)")
        }
    }
}

پس از کشف دستگاه، Central connect() را با ارسال شیء CBPeripheral فراخوانی می‌کند. پارامترهای اتصال (interval, latency, supervision timeout) در سطح Link Layer توافق می‌شوند — توسعه‌دهنده مستقیماً آنها را مدیریت نمی‌کند، اما می‌تواند از طریق requestConnectionPriority در اندروید تأثیر بگذارد.

Bluetooth LE در توسعه اپلیکیشن موبایل: Core Bluetooth و android.bluetooth

هر دو پلتفرم موبایل APIهای بومی برای کار با BLE ارائه می‌دهند. Core Bluetooth (iOS) از رویکرد تفویضی استفاده می‌کند: مدیر مرکزی عملیات را آغاز می‌کند و شیء جانبی نتایج را از طریق متدهای تفویضی گزارش می‌دهد. android.bluetooth (Android) بر روی رابط‌های callback ساخته شده است و از عملیات GATT موازی با چندین دستگاه پشتیبانی می‌کند.

تفاوت‌های کلیدی بین پلتفرم‌ها:

  • iOS — تا ۷ اتصال همزمان را پشتیبانی می‌کند؛ حالت پس‌زمینه BLE نیاز به UIBackgroundModes = bluetooth-central دارد؛ پس از خروج از پس‌زمینه، سیستم ممکن است callbackها را چند دقیقه به تأخیر بیندازد
  • Android — محدودیت ثابت اتصال ندارد (محدودیت حافظه)؛ نیاز به مجوزهای BLUETOOTH_SCAN و BLUETOOTH_CONNECT دارد (Android 12+)؛ foreground service برای اسکن قابل اعتماد در پس‌زمینه ضروری است
  • Flutter — بسته flutter_blue_plus APIهای پلتفرم را با یک رابط Dart یکپارچه انتزاع می‌کند: کد اسکن و عملیات GATT در هر دو پلتفرم یکسان است

طبق آزمایش‌های Bluetooth SIG (۲۰۲۴)، زمان اتصال BLE گوشی هوشمند با دستبند تناسب‌اندام به طور متوسط ۱۵۰–۳۰۰ میلی‌ثانیه در Android و ۱۰۰–۲۵۰ میلی‌ثانیه در iOS است — تفاوت به سیاست‌های مدیریت ماژول رادیویی مربوط می‌شود.

مثال اتصال BLE در 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;
      }
    }
  }
}

توسعه‌دهنده Flutter یک رابط API یکپارچه دریافت می‌کند که در زیر آن flutter_blue_plus فراخوانی‌ها را به android.bluetooth یا Core Bluetooth بومی ترجمه می‌کند. این رویکرد زمان توسعه برنامه برای کار با تجهیزات جانبی BLE در هر دو پلتفرم را کاهش می‌دهد.

سوالات متداول

تفاوت بین Bluetooth Classic و BLE چیست؟

Bluetooth Classic (BR/EDR) برای انتقال جریانی پیوسته — تماس‌های صوتی، موسیقی، انتقال فایل طراحی شده است. BLE برای بسته‌های کوتاه داده با حداقل مصرف انرژی — سنسورها، برچسب‌ها، ردیاب‌های تناسب‌اندام بهینه شده است. Classic ۱۰–۳۰ میلی‌آمپر و BLE ۵–۱۵ میلی‌آمپر در پیک مصرف می‌کند.

آیا Bluetooth Classic و BLE با یکدیگر سازگار هستند؟

در سطح فیزیکی آنها ناسازگار هستند — مدولاسیون و نقشه کانال متفاوت. با این حال، اکثر تراشه‌های مدرن دوحالته (dual-mode) هستند و هر دو پشته را پیاده‌سازی می‌کنند. گوشی هوشمند با تراشه دوحالته می‌تواند همزمان با هدست Classic و ردیاب BLE ارتباط برقرار کند.

connection interval در BLE چیست؟

connection interval فاصله زمانی بین دو بسته داده در یک اتصال برقرار شده است. مقدار از ۷٫۵ میلی‌ثانیه تا ۴ ثانیه متغیر است. هر چه فاصله کمتر باشد، پهنای باند بیشتر و مصرف انرژی بالاتر است. برای سنسور دمایی که هر دقیقه یک بار قرائت می‌کند از فاصله ۱۰۰۰ میلی‌ثانیه استفاده می‌شود.

Pairing در BLE چگونه کار می‌کند؟

Pairing فرآیند تبادل کلیدهای رمزنگاری بین Central و Peripheral است. BLE از سه روش پشتیبانی می‌کند: Just Works (بدون تأیید)، Passkey Entry (وارد کردن PIN روی صفحه) و OOB (تبادل از طریق NFC یا QR). پس از pairing، دستگاه‌ها کلیدها را ذخیره می‌کنند (bonding) و در اتصال مجدد درخواست تأیید هویت مجدد نمی‌کنند.

کدام پروفایل‌های BLE در اپلیکیشن‌های موبایل استفاده می‌شوند؟

متداول‌ترین‌ها: Heart Rate Profile (0x180D) برای پالس‌سنج‌ها، Blood Pressure Profile (0x1810) برای فشارسنج‌ها، Environmental Sensing (0x181A) برای سنسورهای دما و رطوبت، Battery Service (0x180F) برای سطح شارژ، Device Information (0x180A) برای مدل و شماره سریال.

خلاصه

  • Bluetooth — استاندارد WPAN در باند ۲٫۴ گیگاهرتز، از نسخه ۴٫۰ به Classic (BR/EDR) و Low Energy (BLE) تقسیم می‌شود
  • Bluetooth Classic سرعت تا ۳ مگابیت/ثانیه را فراهم می‌کند و برای هدست‌های صوتی و انتقال فایل استفاده می‌شود
  • BLE برای مصرف کم انرژی (۵–۱۵ میلی‌آمپر) بهینه شده و در IoT، دستبندهای تناسب‌اندام و سنسورها استفاده می‌شود
  • پروفایل GATT داده‌ها را در سلسله‌مراتب Service → Characteristic → Descriptor با تبادل از طریق پروتکل ATT سازماندهی می‌کند
  • Advertising به دستگاه‌های جانبی اجازه می‌دهد بدون برقراری اتصال در سه کانال اولیه داده ارسال کنند
  • iOS (Core Bluetooth) و Android (android.bluetooth) APIهای بومی با رویکردهای متفاوت به کار پس‌زمینه و مجوزها ارائه می‌دهند
  • Flutter (flutter_blue_plus) APIهای پلتفرم را در یک رابط Dart یکپارچه برای توسعه بین‌پلتفرمی ترکیب می‌کند

ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد

IT Sectr از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه

همچنین بخوانید