Bluetooth Low Energy (BLE) মোবাইল ডেভেলপমেন্টে: এটি কী, প্রোটোকল এবং কীভাবে কাজ করে

লেখক: IT Sectr প্রকাশিত: 2026-07-25 পড়ার সময়: 11 মিনিট

Bluetooth Low Energy (BLE) হল একটি ওয়্যারলেস যোগাযোগ মান যা ন্যূনতম শক্তি খরচে অল্প পরিমাণ ডেটা প্রেরণের জন্য অপ্টিমাইজ করা হয়েছে। Bluetooth SIG, 2025 অনুসারে, প্রযুক্তিটি বিশ্বব্যাপী 5 বিলিয়নেরও বেশি ডিভাইসে ব্যবহৃত হয়। GATT (Generic Attribute Profile) ডেটাকে Service → Characteristic → Descriptor ক্রমানুসারে সংগঠিত করে, যা iOS এবং Android-এর জন্য সমস্ত BLE অ্যাপ্লিকেশনের ভিত্তি তৈরি করে।

মূল পয়েন্ট

  • GATT — Bluetooth Low Energy-এ ডেটা বিনিময় প্রোটোকল যার Service → Characteristic → Descriptor ক্রমানুসার রয়েছে
  • Core Bluetooth — iOS-এ BLE-এর সাথে কাজ করার জন্য Apple-এর ফ্রেমওয়ার্ক, CBCentralManager এবং CBPeripheral-এর উপর ভিত্তি করে
  • BluetoothGatt — BluetoothLeScanner-এর মাধ্যমে Android-এ BLE সংযোগের জন্য প্রধান API
  • iBeacon — iOS-এ CLLocationManager-এর মাধ্যমে নেটিভ সমর্থন সহ Apple-এর BLE বীকন প্রোটোকল
  • Bonding — একটি স্থায়ী এনক্রিপ্টেড সংযোগ যা বারবার স্ক্যানিং এবং পেয়ারিং দূর করে

Bluetooth Low Energy (BLE) কী এবং এটি কীভাবে কাজ করে?

Bluetooth Low Energy (BLE) দুটি ভূমিকা সহ ক্লায়েন্ট-সার্ভার মডেলে কাজ করে: Central (মোবাইল ডিভাইস) এবং Peripheral (ডিভাইস)। Central বাতাসে স্ক্যান করে এবং সংযোগ শুরু করে, যখন Peripheral ডেটা প্রেরণ করে। ক্লাসিক Bluetooth-এর বিপরীতে, BLE অডিও স্ট্রিমের জন্য ডিজাইন করা হয়নি — এর কাজ হল ন্যূনতম শক্তি খরচে ছোট প্যাকেট প্রেরণ করা। Bluetooth SIG Core Specification 5.4 (2025) অনুসারে, BLE সক্রিয় মোডে 15 mA-এর কম কারেন্টে 2 Mbps পর্যন্ত গতি সমর্থন করে।

GATT ক্রমানুসার: Service, Characteristic, Descriptor

GATT (Generic Attribute Profile) Bluetooth Low Energy-এর ডেটা কাঠামো সংজ্ঞায়িত করে। Service হল বৈশিষ্ট্যগুলির একটি যৌক্তিক গ্রুপ (উদাহরণস্বরূপ, Heart Rate Service 0x180D)। Characteristic হল একটি নির্দিষ্ট মান সহ একটি ডেটা পয়েন্ট। Descriptor হল বৈশিষ্ট্যের মেটাডেটা, যাতে বিজ্ঞপ্তি ব্যবস্থাপনার জন্য CCCD অন্তর্ভুক্ত থাকে। প্রতিটি উপাদানের একটি UUID থাকে — স্ট্যান্ডার্ড Bluetooth SIG প্রোফাইলের জন্য 16-বিট বা কাস্টমের জন্য 128-বিট।

মোবাইল অ্যাপ্লিকেশনে Bluetooth Low Energy স্মার্টফোন এবং পেরিফেরাল ডিভাইসের মধ্যে ডেটা বিনিময় সংগঠিত করতে এই ক্রমানুসার ব্যবহার করে। GATT-এর সঠিক বোঝাপড়া উভয় প্ল্যাটফর্মে BLE অ্যাপ্লিকেশন বিকাশের ভিত্তি। ডেভেলপারকে ডিভাইসের পরিষেবা এবং বৈশিষ্ট্যগুলির UUID, পাশাপাশি প্রতিটি বৈশিষ্ট্যের বৈশিষ্ট্যগুলি (read, write, notify, indicate) জানতে হবে।

Advertising Data এবং Scan Response

BLE ডিভাইসগুলি আবিষ্কারের জন্য বিজ্ঞাপন প্যাকেট (advertising packets) প্রেরণ করে। Advertising Data-তে ডিভাইসের নাম, পরিষেবা UUID, RSSI এবং Manufacturer Specific Data থাকে। বিজ্ঞাপন প্যাকেটের আকার 31 বাইটে সীমাবদ্ধ। অতিরিক্ত ডেটা প্রেরণের জন্য Scan Response ব্যবহার করা হয় — একটি দ্বিতীয় প্যাকেট যা কেন্দ্রীয় ডিভাইস আবিষ্কারের পরে অনুরোধ করে।

iOS-এ BLE: Core Bluetooth, CBCentralManager, CBPeripheral

iOS-এ, Core Bluetooth ফ্রেমওয়ার্ক Bluetooth Low Energy পরিচালনা করে। CBCentralManager স্ক্যানিং এবং সংযোগ পরিচালনা করে, CBPeripheral একটি দূরবর্তী BLE ডিভাইস উপস্থাপন করে। প্রক্রিয়াটি মানক: CBCentralManager আরম্ভ করা, poweredOn অবস্থা পরীক্ষা করা, scanForPeripherals শুরু করা, সংযোগ করা এবং পরিষেবা আবিষ্কার করা। Core Bluetooth স্বয়ংক্রিয়ভাবে রেডিও মডিউলের শক্তি পরিচালনা করে — যদি BLE ব্যবহার না হয়, এটি বন্ধ হয়ে যায়।

iOS-এ মোবাইল ডেভেলপমেন্টে BLE-এর জন্য ব্যাকগ্রাউন্ড মোড বিবেচনা করা প্রয়োজন। Core Bluetooth ব্যাকগ্রাউন্ড মোড প্রকল্পের Capabilities (Uses Bluetooth LE accessories) এর মাধ্যমে সক্রিয় করা হয়। ব্যাকগ্রাউন্ডে, অ্যাপ বৈশিষ্ট্যগুলি থেকে বিজ্ঞপ্তি পেতে পারে, কিন্তু স্ক্যানিং সীমিত — সিস্টেম ডিভাইসটি সরলে কেবল এটি পুনরায় চালু করে। iBeacon-এর জন্য, CLLocationManager-এর মাধ্যমে ব্যাকগ্রাউন্ড স্ক্যানিং আরও সক্রিয়ভাবে কাজ করে।

Swift-এ BLE স্ক্যানিংয়ের উদাহরণ

swift
import CoreBluetooth

class DeviceScanner: NSObject, CBCentralManagerDelegate {
    var centralManager: CBCentralManager!

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

    func centralManagerDidUpdateState(_ central: CBCentralManager) {
        guard central.state == .poweredOn else { return }
        central.scanForPeripherals(withServices: nil, options: nil)
    }

    func centralManager(_ central: CBCentralManager,
                        didDiscover peripheral: CBPeripheral,
                        advertisementData: [String: Any],
                        rssi RSSI: NSNumber) {
        print("পাওয়া গেছে: \(peripheral.name ?? "unknown")")
    }
}

এই উদাহরণে, CBCentralManagerDelegate সমস্ত BLE সংযোগ ইভেন্ট পরিচালনা করে। centralManagerDidUpdateState পদ্ধতি মোবাইল ডিভাইসে Bluetooth চালু আছে কিনা তা পরীক্ষা করে। সফল আরম্ভের পরে, স্ক্যানিং শুরু হয়। প্রতিটি পাওয়া ডিভাইসের জন্য didDiscover কলব্যাক কল করা হয়।

Core Bluetooth-এ সংযোগ এবং বৈশিষ্ট্য পড়া

ডিভাইস আবিষ্কারের পরে, আপনাকে connect এবং discoverServices কল করতে হবে। CBPeripheralDelegate প্রতিটি ধাপ পরিচালনার জন্য পদ্ধতি সরবরাহ করে: didDiscoverServices, didDiscoverCharacteristics, didUpdateValueFor। প্রতিটি পদ্ধতি অ্যাসিঙ্ক্রোনাস — ডেটা ডেলিগেট কলব্যাকের মাধ্যমে আসে। RSSI (Received Signal Strength Indicator) সংকেত স্তর দেখায়: মান 0-এর যত কাছাকাছি, সংকেত তত শক্তিশালী।

Android-এ BLE: BluetoothAdapter, BluetoothGatt, BluetoothLeScanner

Android-এ, Bluetooth Low Energy android.bluetooth প্যাকেজের মাধ্যমে বাস্তবায়িত হয়। BluetoothAdapter সমস্ত BLE অপারেশনের জন্য প্রবেশ বিন্দু। BluetoothLeScanner ScanCallback কলব্যাক সহ স্ক্যানিং শুরু করে। ডিভাইস আবিষ্কারের পরে, BluetoothGatt তৈরি করা হয় — পেরিফেরালের সাথে একটি সংযোগ। BluetoothGattCallback ইভেন্টগুলি পরিচালনা করে: সংযোগ, পরিষেবা আবিষ্কার, বৈশিষ্ট্য পড়া, RSSI পরিবর্তন।

Android-এ মোবাইল অ্যাপ্লিকেশনে Bluetooth Low Energy-এর জন্য স্পষ্ট BLUETOOTH_SCAN, BLUETOOTH_CONNECT এবং ACCESS_FINE_LOCATION অনুমতি প্রয়োজন। Android 12 থেকে অনুমতিগুলি পৃথক করা হয়েছে: স্ক্যানিংয়ের জন্য BLUETOOTH_SCAN, সংযোগের জন্য BLUETOOTH_CONNECT। নির্দিষ্ট ধরণের ডিভাইস স্ক্যান করার জন্য কেবল ACCESS_FINE_LOCATION প্রয়োজন। এই অনুমতি ছাড়া, অ্যাপ BLE-এর সাথে কাজ করতে পারে না।

Kotlin-এ BLE স্ক্যানিংয়ের উদাহরণ

kotlin
class BLEScanner(private val bluetoothAdapter: BluetoothAdapter) {

    fun startScan() {
        val scanner = bluetoothAdapter.bluetoothLeScanner
        val settings = ScanSettings.Builder()
            .setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
            .build()
        scanner.startScan(null, settings, scanCallback)
    }

    private val scanCallback = object : ScanCallback() {
        override fun onScanResult(callbackType: Int, result: ScanResult) {
            val device = result.device
            val rssi = result.rssi
            Log.d("BLE", "ডিভাইস: ${device.name}, RSSI: $rssi")
        }
    }
}

ScanSettings আপনাকে স্ক্যানিং মোড কনফিগার করতে দেয়: ব্যাটারি বাঁচাতে LOW_POWER, মানক কাজের জন্য BALANCED, সর্বোচ্চ আবিষ্কার গতির জন্য LOW_LATENCY। ScanFilter পরিষেবা UUID, ডিভাইসের নাম বা MAC ঠিকানা দ্বারা অনুসন্ধান সংকুচিত করে। ফিল্টারিং শক্তি খরচ কমায় এবং পছন্দসই ডিভাইসের আবিষ্কার ত্বরান্বিত করে।

BluetoothGatt: Android-এ পড়া এবং বিজ্ঞপ্তি

connectGatt-এর মাধ্যমে BluetoothGatt তৈরি করার পরে, অ্যাপ discoverServices কল করে। BluetoothGattCallback-এ onServicesDiscovered, onCharacteristicRead, onCharacteristicChanged অন্তর্ভুক্ত রয়েছে। বৈশিষ্ট্য পরিবর্তন সম্পর্কে বিজ্ঞপ্তি পেতে, আপনাকে setCharacteristicNotification কল করতে হবে। প্রক্রিয়াটিতে মনোযোগ প্রয়োজন: প্রতিটি GATT অপারেশন অ্যাসিঙ্ক্রোনাস, এবং ফলাফল একটি পৃথক কলব্যাকে আসে।

BLE ইকোসিস্টেমে iBeacon, Bonding এবং Advertising Data

iBeacon হল BLE বীকনের জন্য Apple-এর প্রযুক্তি যা UUID, Major এবং Minor প্রেরণ করে। বীকন ডিভাইস একটি বিজ্ঞাপন প্যাকেট সম্প্রচার করে, এবং মোবাইল অ্যাপ্লিকেশন এই ডেটার উপর ভিত্তি করে অবস্থান এবং দূরত্ব নির্ধারণ করে। iOS-এ, iBeacon CLLocationManager-এর মাধ্যমে নেটিভভাবে সমর্থিত। Android-এ, তৃতীয়-পক্ষের লাইব্রেরি প্রয়োজন (উদাহরণস্বরূপ, AltBeacon বা Android iBeacon Library)।

Bonding হল BLE ডিভাইসের মধ্যে একটি স্থায়ী সুরক্ষিত সংযোগ তৈরি করার পদ্ধতি। Bonding-এর পরে, এনক্রিপশন কীগুলি সংরক্ষিত হয়, এবং ডিভাইসগুলি পুনরায় কাছে এলে স্বয়ংক্রিয়ভাবে সংযুক্ত হয়। iOS-এ, বন্ডিং সিস্টেম দ্বারা স্বয়ংক্রিয়ভাবে পরিচালিত হয়। Android-এ — BluetoothDevice.createBond()-এর মাধ্যমে। Bonding পরিধানযোগ্য ডিভাইস এবং ফিটনেস ট্র্যাকারের জন্য গুরুত্বপূর্ণ যাতে দ্রুত পুনঃসংযোগ প্রয়োজন।

বিজ্ঞাপন প্যাকেট এবং Manufacturer Specific Data

Advertising Data হল Bluetooth Low Energy-এ একটি মূল আবিষ্কার প্রক্রিয়া। ডিভাইস প্রস্তুতকারকরা কাস্টম ডেটা প্রেরণের জন্য বিজ্ঞাপন প্যাকেটে Manufacturer Specific Data যোগ করতে পারেন। প্যাকেট বিন্যাসে Company Identifier (2 বাইট) এবং নির্বিচার ডেটা অন্তর্ভুক্ত থাকে। iOS-এ, CBCentralManager ফিল্টারিংয়ের জন্য পরিষেবা UUID-এর একটি অ্যারে গ্রহণ করে — এটি ব্যাটারি বাঁচায়। Android-এ, ScanFilter একই নীতিতে কাজ করে।

BLE ডেভেলপমেন্টের জন্য iOS এবং Android-এর তুলনা

প্যারামিটারiOS (Core Bluetooth)Android (BluetoothGatt)
ব্যবস্থাপকCBCentralManagerBluetoothLeScanner
সংযোগconnect(to:)connectGatt()
পরিষেবাdiscoverServices()discoverServices()
পড়াreadValue(for:)readCharacteristic()
বিজ্ঞপ্তিsetNotifyValue(_:for:)setCharacteristicNotification()
অনুমতিস্বয়ংক্রিয়BLUETOOTH_SCAN, BLUETOOTH_CONNECT
iBeaconCLLocationManager (নেটিভ)AltBeacon / লাইব্রেরি

BLE অপ্টিমাইজেশন: MTU, Connection Interval এবং ব্যাকগ্রাউন্ড মোড

MTU (Maximum Transmission Unit) হল একটি একক Bluetooth Low Energy ডেটা প্যাকেটের সর্বোচ্চ আকার। ডিফল্টভাবে, MTU 23 বাইট (3 বাইট হেডার + 20 বাইট ডেটা)। MTU 512 বাইটে বৃদ্ধি করা কনফিগারেশন বা লগ বিনিময়ের সময় ট্রান্সমিশন উল্লেখযোগ্যভাবে ত্বরান্বিত করে। iOS-এ, maximumWriteValueLength উপলব্ধ MTU দেখায়। Android-এ, MTU বাড়ানোর জন্য requestMtu() ব্যবহার করা হয়।

Connection Interval হল ফ্রিকোয়েন্সি যার সাথে কেন্দ্রীয় ডিভাইস পেরিফেরালকে পোল করে। ব্যবধান যত ছোট, ট্রান্সমিশন গতি তত বেশি, তবে শক্তি খরচও তত বেশি। সাধারণ মান 7.5 ms থেকে 4 সেকেন্ড পর্যন্ত হয়। ফিটনেস ট্র্যাকারের জন্য, 100 ms যথেষ্ট; অডিওর জন্য — 7.5 ms। মোবাইল ডেভেলপমেন্টে BLE-এর জন্য ট্রান্সমিশন গতি এবং ডিভাইসের ব্যাটারি লাইফের মধ্যে ভারসাম্য প্রয়োজন।

iOS এবং Android-এ ব্যাকগ্রাউন্ড মোড

iOS ব্যাকগ্রাউন্ড মোডের মাধ্যমে BLE সমর্থন করে, কিন্তু সীমাবদ্ধতা সহ। ব্যাকগ্রাউন্ডে অ্যাপ বৈশিষ্ট্যগুলি থেকে বিজ্ঞপ্তি পায়, কিন্তু সক্রিয়ভাবে স্ক্যান করতে পারে না। সিস্টেম ডিভাইসের অবস্থান পরিবর্তন হলে স্ক্যানিং পুনরায় চালু করে। Android-এ, ব্যাকগ্রাউন্ড স্ক্যানিংয়ের জন্য একটি স্থায়ী বিজ্ঞপ্তি সহ Foreground Service প্রয়োজন। এটি ছাড়া, মোবাইল সিস্টেম অ্যাপটি মিনিমাইজ করার সময় প্রক্রিয়াটি বন্ধ করে দেবে।

ব্যবহারিক অপ্টিমাইজেশন সুপারিশ

মোবাইল অ্যাপ্লিকেশনে নির্ভরযোগ্য BLE অপারেশনের জন্য, এই নিয়মগুলি অনুসরণ করুন। পোলিংয়ের পরিবর্তে notify ব্যবহার করুন — বিজ্ঞপ্তি সহ একটি বৈশিষ্ট্য পরিবর্তনের সময় ডেটা পাঠায়, যা ব্যাটারি বাঁচায়। সংযোগের শুরুতে সর্বোত্তম MTU সেট করুন। স্ক্যান করার সময় পরিষেবা UUID দ্বারা ডিভাইস ফিল্টার করুন। বিভিন্ন মডেলে BLE স্ট্যাক সামঞ্জস্যতা পরীক্ষা করুন — প্রস্তুতকারকরা (Xiaomi, Huawei, Samsung) Bluetooth আচরণকে প্রভাবিত করে এমন পরিবর্তন করে।

প্রায়শই জিজ্ঞাসিত প্রশ্ন

BLE ক্লাসিক Bluetooth থেকে কীভাবে আলাদা?

Bluetooth Low Energy (BLE) কম শক্তি খরচে ছোট প্যাকেটের পর্যায়ক্রমিক প্রেরণের জন্য অপ্টিমাইজ করা হয়েছে। ক্লাসিক Bluetooth অডিও স্ট্রিম এবং বড় পরিমাণ ডেটার ক্রমাগত প্রেরণের জন্য ডিজাইন করা হয়েছে।

Bluetooth Low Energy-এ GATT কী?

GATT (Generic Attribute Profile) হল BLE-এ একটি ডেটা বিনিময় প্রোটোকল যা Service → Characteristic → Descriptor ক্রমানুসার সংজ্ঞায়িত করে। GATT BLE ডিভাইস থেকে ডেটা পড়া, লেখা এবং বিজ্ঞপ্তি পাওয়ার জন্য ব্যবহৃত হয়।

Android-এ BLE-এর জন্য ACCESS_FINE_LOCATION অনুমতির প্রয়োজন কেন?

Android 12-এর আগে, BLE স্ক্যানিং অবস্থান নির্ধারণের জন্য ব্যবহার করা যেত, তাই Google এই অনুমতিগুলি একত্রিত করেছিল। Android 12 থেকে, অবস্থান থেকে পৃথক একটি আলাদা BLUETOOTH_SCAN অনুমতি চালু করা হয়েছে।

BLE ডেটা স্থানান্তর গতি কীভাবে বাড়াবেন?

Android-এ requestMtu() এবং iOS-এ maximumWriteValueLength-এর মাধ্যমে MTU বাড়ান। Connection Intervalও গতিকে প্রভাবিত করে — এটি যত ছোট, স্থানান্তর তত দ্রুত। সর্বোত্তম সংমিশ্রণ 10 গুণ পর্যন্ত উন্নতি প্রদান করে।

BLE-এ Bonding কী?

Bonding হল BLE ডিভাইসের মধ্যে একটি স্থায়ী সুরক্ষিত সংযোগ তৈরি করার পদ্ধতি। Bonding-এর পরে, এনক্রিপশন কীগুলি সংরক্ষিত হয়, এবং ডিভাইসগুলি বারবার অনুসন্ধান ছাড়াই স্বয়ংক্রিয়ভাবে সংযুক্ত হয়।

সারসংক্ষেপ

  • Bluetooth Low Energy — ন্যূনতম শক্তি খরচ এবং 2 Mbps পর্যন্ত গতি সহ IoT-এর জন্য ওয়্যারলেস যোগাযোগ মান
  • GATT ডেটাকে প্রতিটি উপাদানের জন্য UUID সহ Service → Characteristic → Descriptor ক্রমানুসারে সংগঠিত করে
  • Core Bluetooth — iOS-এ BLE-এর জন্য Apple-এর ফ্রেমওয়ার্ক যাতে CBCentralManager, CBPeripheral এবং ব্যাকগ্রাউন্ড মোড রয়েছে
  • BluetoothGatt — BluetoothAdapter, BluetoothLeScanner এবং স্পষ্ট BLUETOOTH_SCAN অনুমতি সহ প্রধান Android API
  • iBeacon — CLLocationManager-এর মাধ্যমে iOS-এ নেটিভ সমর্থন সহ BLE বীকন প্রযুক্তি
  • Bonding এনক্রিপশন কী সংরক্ষণের পরে স্বয়ংক্রিয় পুনঃসংযোগ সক্ষম করে
  • মোবাইল অ্যাপ্লিকেশনে Bluetooth Low Energy-এর জন্য MTU, Connection Interval এবং প্ল্যাটফর্ম ব্যাকগ্রাউন্ড সীমাবদ্ধতা বিবেচনা করা প্রয়োজন

আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব

IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।

প্রকল্প নিয়ে আলোচনা করুন