Advertising (বিজ্ঞাপন) হল Bluetooth Low Energy-এর একটি পদ্ধতি যার মাধ্যমে একটি Peripheral ডিভাইস তিনটি নির্ধারিত চ্যানেলে (37, 38, 39) ছোট ডেটা প্যাকেট প্রেরণ করে তার উপস্থিতি জানায়। Bluetooth Core Specification 5.4 (2023) দুটি ধরণের বিজ্ঞাপন নির্ধারণ করে: connectable — ডিভাইস সংযোগের জন্য প্রস্তুত, এবং non-connectable — বীকন (Beacon) দ্বারা ব্যবহৃত যা দ্বি-দিকনির্দেশক যোগাযোগ স্থাপন না করেই কেবল ডেটা প্রেরণ করে। বিজ্ঞাপন প্যারামিটার — ব্যবধান 20 ms থেকে 10.24 s, ট্রান্সমিটার শক্তি -20 থেকে +10 dBm এবং প্যাকেটের ধরন — সরাসরি ডিভাইস শনাক্তকরণের গতি এবং তার শক্তি খরচকে প্রভাবিত করে, যা ব্যাটারি চালিত IoT ডিভাইস তৈরিতে গুরুত্বপূর্ণ।
মূল বিষয়
Advertising (বিজ্ঞাপন) হল ছোট ডেটা প্যাকেটের পর্যায়ক্রমিক প্রেরণের প্রক্রিয়া যার মাধ্যমে একটি BLE ডিভাইস তার উপস্থিতি এবং প্রাপ্যতা জানায়। ক্লাসিক Bluetooth-এর বিপরীতে, যেখানে ডিভাইস শনাক্ত করতে সেকেন্ড সময় লাগে, BLE advertising মিলিসেকেন্ডের মধ্যে ডিভাইস শনাক্তকরণ সম্ভব করে, ন্যূনতম শক্তি খরচ করে।
BLE আর্কিটেকচার ডিভাইসগুলিকে দুটি ভূমিকায় বিভক্ত করে: Peripheral (বিজ্ঞাপন দেয়) এবং Central (স্ক্যান করে)। Peripheral বিজ্ঞাপন প্যাকেট পাঠায়, যখন Central বাতাস স্ক্যান করে এবং সংযোগ করার সিদ্ধান্ত নেয়। এই অসমমিত মডেল BLE-এর একটি মূল সুবিধা: বিজ্ঞাপনদাতা ডিভাইসটি ক্রমাগত বাতাস শোনার পরিবর্তে কেবল ছোট প্যাকেট পাঠাতে শক্তি ব্যয় করে।
বিজ্ঞাপন প্রক্রিয়া তিনটি ধাপ নিয়ে গঠিত: advertising event (তিনটি চ্যানেলে প্যাকেট পাঠানো), scan request/response (Central-এর সাথে ঐচ্ছিক আদান-প্রদান) এবং connection request (Central-এর দ্বারা সংযোগ শুরু)। প্রতিটি ধাপ Link Layer স্তরে Bluetooth Controller দ্বারা পরিচালিত হয়।
BLE 40টি চ্যানেল ব্যবহার করে 2.4 GHz ব্যান্ডে, যার মধ্যে 37 (2402 MHz), 38 (2426 MHz) এবং 39 (2480 MHz) শুধুমাত্র বিজ্ঞাপনের জন্য নির্ধারিত। তিনটি চ্যানেল শনাক্তকরণ নির্ভরযোগ্যতা এবং থ্রুপুটের মধ্যে একটি সমঝোতা: একটি চ্যানেল Wi-Fi বা অন্যান্য হস্তক্ষেপে ব্যস্ত থাকতে পারে, কিন্তু ডিভাইসটি অপর দুটিতে শনাক্ত হবে।
চ্যানেল 37 Wi-Fi চ্যানেল 1-এর কাছে, চ্যানেল 39 Wi-Fi চ্যানেল 6-এর কাছে এবং চ্যানেল 38 তাদের মাঝে ন্যূনতম হস্তক্ষেপের অঞ্চলে অবস্থিত। তিনটি চ্যানেলের নির্বাচন নিশ্চিত করে যে ডিভাইসটি ঘন রেডিও পরিবেশেও শনাক্ত হবে — উদাহরণস্বরূপ, ডজন খানেক Wi-Fi অ্যাক্সেস পয়েন্টযুক্ত একটি শপিং সেন্টারে।
Peripheral তিনটি চ্যানেলেই ক্রমান্বয়ে বিজ্ঞাপন প্যাকেট পাঠায় — একে advertising event বলে। কেন্দ্রীয় ডিভাইসটি একবারে একটি চ্যানেল স্ক্যান করে, Bluetooth Controller-এ বাস্তবায়িত অ্যালগরিদম অনুযায়ী তাদের মধ্যে পরিবর্তন করে। সংঘর্ষের অনুপস্থিতিতে একটি advertising event-এর মধ্যে শনাক্তকরণের সম্ভাবনা 100%-এর কাছাকাছি।
Bluetooth Core Specification বিভিন্ন ধরণের advertising PDU (Protocol Data Unit) নির্ধারণ করে, প্রতিটির নিজস্ব উদ্দেশ্য রয়েছে। মূল প্রকারগুলি হল: ADV_IND (connectable undirected advertising) — সংযোগ ক্ষমতা সহ স্ট্যান্ডার্ড বিজ্ঞাপন, ADV_NONCONN_IND (non-connectable undirected advertising) — সংযোগ ছাড়াই কেবল বিজ্ঞাপন, ADV_SCAN_IND (scannable undirected advertising) — scan request সমর্থন করে, ADV_DIRECT_IND (directed advertising) — নির্দিষ্ট Central-এর জন্য বিজ্ঞাপন।
ADV_IND হল সবচেয়ে সাধারণ প্রকার যা বেশিরভাগ BLE ডিভাইসে ব্যবহৃত হয়। ADV_IND গ্রহণের পর, Central একটি সংযোগ অনুরোধ পাঠাতে এবং সংযোগ স্থাপন করতে পারে। ADV_NONCONN_IND বীকনে (Beacon) ব্যবহৃত হয়: ডিভাইসটি বিজ্ঞাপন দেয় কিন্তু সংযোগ অনুরোধ গ্রহণ করে না — কেবল একমুখী ডেটা প্রেরণ।
| PDU প্রকার | বিবরণ | সংযোগ | Scan response |
|---|---|---|---|
| ADV_IND | স্ট্যান্ডার্ড বিজ্ঞাপন | হ্যাঁ | হ্যাঁ |
| ADV_DIRECT_IND | নির্দিষ্ট Central-এ বিজ্ঞাপন | হ্যাঁ | না |
| ADV_NONCONN_IND | সংযোগ ছাড়া (বীকন) | না | না |
| ADV_SCAN_IND | স্ক্যান সমর্থন সহ | হ্যাঁ | হ্যাঁ |
| ADV_EXT_IND | এক্সটেন্ডেড অ্যাডভার্টাইজিং (BLE 5.0) | হ্যাঁ | হ্যাঁ |
ADV_DIRECT_IND-এ লক্ষ্য Central-এর ঠিকানা থাকে, যা স্ক্যান করার অপেক্ষা না করে দ্রুত সংযোগ স্থাপনের অনুমতি দেয়। এটি ব্যবহার করা হয় যখন ডিভাইসগুলি ইতিমধ্যেই একে অপরকে “জানে” — উদাহরণস্বরূপ, পূর্বে যুক্ত করা স্মার্টফোনে পুনরায় সংযোগের পরে। এই প্রকার শক্তি খরচ কমায় কারণ এটির জন্য সব চ্যানেলে বিজ্ঞাপনের প্রয়োজন হয় না।
Advertising interval হল পর্যায়ক্রমিক advertising events-এর মধ্যে সময়। স্পেসিফিকেশন 0.625 ms ধাপে 20 ms থেকে 10.24 s পর্যন্ত ব্যবধান অনুমতি দেয়। প্রকৃত ব্যবধান একটি নির্দিষ্ট মান এবং এলোমেলো বিলম্বের (0–10 ms) যোগফল হিসাবে গণনা করা হয়, যা একাধিক বিজ্ঞাপনদাতা ডিভাইসের মধ্যে সংঘর্ষের সম্ভাবনা হ্রাস করে।
ব্যবধান নির্বাচন শনাক্তকরণের গতি এবং শক্তি খরচের মধ্যে একটি ভারসাম্য। 20 ms ব্যবধানে, ডিভাইসটি 20–30 ms-এ শনাক্ত হবে, কিন্তু গড় তড়িৎপ্রবাহ প্রায় 1–2 mA হবে। 1000 ms ব্যবধানে, শনাক্তকরণে 1 সেকেন্ড পর্যন্ত সময় লাগতে পারে, কিন্তু গড় তড়িৎপ্রবাহ 50–100 µA-এ নেমে যাবে। বেশিরভাগ IoT ডিভাইসের জন্য প্রস্তাবিত ব্যবধান 200–1000 ms।
Texas Instruments Application Report SWRA478 (2024) অনুযায়ী, বিজ্ঞাপন ব্যবধান 100 ms থেকে 1000 ms-এ বাড়ালে শক্তি খরচ 90% কমে যায়। যদি ডিভাইসের তৎক্ষণাৎ শনাক্তকরণের প্রয়োজন না হয় (উদাহরণস্বরূপ, তাপমাত্রা সেন্সর যা প্রতি মিনিটে একবার ডেটা প্রেরণ করে), তাহলে অনুকূল ব্যবধান হল 1000–2000 ms।
একটি অতিরিক্ত প্যারামিটার হল advertising timeout — সর্বোচ্চ সময় যার মধ্যে ডিভাইসটি বিজ্ঞাপন দেয়। iOS-এ, Peripheral স্বয়ংক্রিয়ভাবে পটভূমিতে 180 সেকেন্ড পরে বিজ্ঞাপন বন্ধ করে দেয়। Android-এ এমন কোনো সীমা নেই, কিন্তু নির্মাতারা নিজস্ব সীমা যোগ করতে পারেন।
Scan Response হল একটি অতিরিক্ত ডেটা প্যাকেট (31 বাইট পর্যন্ত) যা Peripheral Central-এর scan request-এর জবাবে পাঠায়। Scan request Central বিজ্ঞাপন প্যাকেট পাওয়ার পরে পাঠায় যদি সংযোগের আগে আরও তথ্যের প্রয়োজন হয়। Scan Response-এর জন্য অতিরিক্ত বিজ্ঞাপনের প্রয়োজন নেই — এটি শুধুমাত্র অনুরোধে পাঠানো হয়, যা এয়ারটাইম বাঁচায়।
সাধারণ ডেটা বিতরণ: advertising PDU (31 বাইট)-এ ফ্ল্যাগ (3 বাইট), সার্ভিস UUID (2–16 বাইট) এবং প্রস্তুতকারক ডেটা (অবশিষ্ট বাইট) থাকে। scan response-এ সম্পূর্ণ ডিভাইস নাম (28 বাইট পর্যন্ত) এবং অতিরিক্ত UUID বা TX Power Level থাকে। এই বিভাজন Central-কে scan response না পড়েই UUID দ্বারা দ্রুত ডিভাইস ফিল্টার করতে দেয়।
বিজ্ঞাপন প্যাকেট ডিজাইন করার সময় মনে রাখবেন: যদি advertising PDU-তে সব 31 বাইট ব্যস্ত থাকে, তাহলে Central নির্ধারণ করতে পারবে না যে ডিভাইসটি scan response সমর্থন করে কিনা। Scan response ক্ষমতা নির্দেশ করার জন্য advertising PDU-তে কমপক্ষে 3–5 বাইট ফাঁকা রাখার পরামর্শ দেওয়া হয়।
এক্সটেন্ডেড অ্যাডভার্টাইজিং (Extended Advertising BLE 5.0) হল বিজ্ঞাপন পদ্ধতির একটি সম্প্রসারণ যা বিজ্ঞাপন প্যাকেটের আকার 31 থেকে 251 বাইটে বাড়ায় এবং নতুন প্যাকেট প্রকার যোগ করে। Extended Advertising খোলা এলাকায় যোগাযোগ সীমা 1 কিমি পর্যন্ত বাড়ানোর জন্য coded PHY এবং একাধিক Central সিঙ্ক্রোনাইজ করার জন্য পর্যায়ক্রমিক বিজ্ঞাপন (Periodic Advertising)-ও সমর্থন করে।
মূল উদ্ভাবন: ADV_EXT_IND — এক্সটেন্ডেড advertising PDU যা একটি একক প্যাকেটে 251 বাইট পর্যন্ত ডেটা প্রেরণ করতে পারে। Extended Advertising প্রাথমিক চ্যানেলগুলি (37, 38, 39) শুধুমাত্র নির্দেশ করতে ব্যবহার করে যে কোন মাধ্যমিক চ্যানেলে (0–36) সম্পূর্ণ ডেটা প্রেরণ করা হয়। এটি বিজ্ঞাপন চ্যানেলগুলির উপর ভার কমায় এবং সিস্টেমের সামগ্রিক থ্রুপুট বাড়ায়।
পর্যায়ক্রমিক বিজ্ঞাপন (Periodic Advertising) একটি অতিরিক্ত পদ্ধতি যেখানে Peripheral নির্দিষ্ট ব্যবধানে মাধ্যমিক চ্যানেলে ডেটা পাঠায়, এবং Central এই ক্রমের সাথে সিঙ্ক্রোনাইজ হতে পারে। এটি নিয়মিত ডেটা আপডেট প্রয়োজন এমন পরিষেবার জন্য ব্যবহৃত হয় — উদাহরণস্বরূপ, অডিও স্ট্রিমিং বা রিয়েল-টাইম সেন্সর রিডিং।
| প্যারামিটার | স্ট্যান্ডার্ড BLE | এক্সটেন্ডেড BLE 5.0 |
|---|---|---|
| সর্বোচ্চ প্যাকেট আকার | 31 বাইট | 251 বাইট |
| চ্যানেল | শুধু 37, 38, 39 | + মাধ্যমিক 0–36 |
| সীমা | 100 মি পর্যন্ত | 1000 মি পর্যন্ত (coded PHY) |
| গতি | 1 Mbps | 125 kbps – 2 Mbps |
| পর্যায়ক্রমিক | না | হ্যাঁ |
iOS (Core Bluetooth) বিজ্ঞাপন পরিচালনার জন্য CBPeripheralManager প্রদান করে। বিজ্ঞাপন প্যারামিটারগুলি advertisementData অভিধানে CBAdvertisementDataLocalNameKey (ডিভাইস নাম), CBAdvertisementDataServiceUUIDsKey (সার্ভিস UUID), CBAdvertisementDataTxPowerLevelKey (শক্তি স্তর) কীগুলির সাথে সেট করা হয়। iOS স্বয়ংক্রিয়ভাবে বিজ্ঞাপন ব্যবধান পরিচালনা করে এবং এটি ম্যানুয়ালি সেট করার অনুমতি দেয় না।
import CoreBluetooth
class AdvertiserManager: NSObject, CBPeripheralManagerDelegate {
private var peripheralManager: CBPeripheralManager!
func startBLEAdvertising() {
let data: [String: Any] = [
CBAdvertisementDataLocalNameKey: "BLE Beacon",
CBAdvertisementDataServiceUUIDsKey: [
CBUUID("180F")
],
CBAdvertisementDataIsConnectable: true
]
peripheralManager.startAdvertising(data)
}
}
Android (BluetoothLeAdvertiser) আরও বিস্তারিত নিয়ন্ত্রণ প্রদান করে। উপলব্ধ: AdvertiseSettings — মোড কনফিগারেশন (LOW_POWER, BALANCED, LOW_LATENCY), ট্রান্সমিটার শক্তি এবং ব্যবধান; AdvertiseData — প্যাকেট ডেটা। Android সামঞ্জস্যপূর্ণ ডিভাইসে এক্সটেন্ডেড অ্যাডভার্টাইজিং (BLE 5.0) সমর্থন করে, কিন্তু বাজারে এই ধরনের ডিভাইসের অংশ প্রায় 30–40%।
BluetoothLeAdvertiser advertiser =
BluetoothAdapter.getDefaultAdapter()
.getBluetoothLeAdvertiser();
AdvertiseSettings settings = new AdvertiseSettings.Builder()
.setAdvertiseMode(
AdvertiseSettings.ADVERTISE_MODE_LOW_POWER
)
.setTxPowerLevel(
AdvertiseSettings.ADVERTISE_TX_POWER_MEDIUM
)
.build();
AdvertiseData data = new AdvertiseData.Builder()
.setIncludeDeviceName(true)
.addServiceUuid(new ParcelUuid(
UUID.fromString(
"0000180F-0000-1000-8000-00805F9B34FB"
)
))
.build();
advertiser.startAdvertising(
settings, data, advertiseCallback
);
ক্রস-প্ল্যাটফর্ম BLE অ্যাপ্লিকেশন তৈরির সময় পার্থক্যগুলি বিবেচনা করুন: iOS সরাসরি বিজ্ঞাপন ব্যবধান নিয়ন্ত্রণের অনুমতি দেয় না তবে সব ডিভাইসে স্থিতিশীল অপারেশন নিশ্চিত করে; Android সম্পূর্ণ নিয়ন্ত্রণ প্রদান করে, কিন্তু সংস্করণ এবং নির্মাতার বিভাজন অসামঞ্জস্যতার কারণ হতে পারে। উভয় প্ল্যাটফর্মের বাস্তব ডিভাইসে বিজ্ঞাপন পরীক্ষা করার পরামর্শ দেওয়া হয়।
সচরাচর জিজ্ঞাসিত প্রশ্ন
Connectable বিজ্ঞাপন (ADV_IND) Central-কে ডিভাইসের সাথে দ্বি-দিকনির্দেশক সংযোগ স্থাপনের অনুমতি দেয়। Non-connectable (ADV_NONCONN_IND) কেবল একমুখী ডেটা প্রেরণ, সংযোগ ক্ষমতা ছাড়াই একটি শনাক্তকারী সম্প্রচারের জন্য বীকন (Beacon)-এ ব্যবহৃত হয়।
স্ট্যান্ডার্ড বিজ্ঞাপন প্যাকেট 31 বাইট, scan response আরও 31 বাইট। এক্সটেন্ডেড অ্যাডভার্টাইজিং (BLE 5.0+) ডেটা প্রেরণের জন্য মাধ্যমিক চ্যানেল ব্যবহার করে সীমা বাড়িয়ে 251 বাইট করে।
বেশিরভাগ IoT ডিভাইসের জন্য 500–1000 ms প্রস্তাবিত। যদি দ্রুত শনাক্তকরণ প্রয়োজন হয় (যেমন হেডফোন সংযোগের জন্য), 20–50 ms ব্যবহার করুন। বিরল ডেটা প্রেরণকারী সেন্সরের জন্য, শক্তি বাঁচাতে 1000–2000 ms ব্যবহার করুন।
তিনটি চ্যানেল (37, 38, 39) শনাক্তকরণ নির্ভরযোগ্যতা এবং থ্রুপুটের মধ্যে একটি সমঝোতা। একটি চ্যানেল Wi-Fi দ্বারা ব্যস্ত থাকতে পারে, কিন্তু ডিভাইসটি অপর দুটিতে শনাক্ত হবে। চ্যানেল 38 Wi-Fi চ্যানেলগুলির মধ্যে ন্যূনতম হস্তক্ষেপের অঞ্চলে অবস্থিত।
বিজ্ঞাপন হল BLE-তে প্রধান শক্তি গ্রাসকারী। 1000 ms ব্যবধানে, গড় তড়িৎপ্রবাহ 50–100 µA, যা ডিভাইসটিকে CR2032 ব্যাটারিতে এক বছর চলতে দেয়। 20 ms ব্যবধানে, তড়িৎপ্রবাহ বেড়ে 1–2 mA হয়, যা অপারেটিং সময় কয়েক সপ্তাহে কমিয়ে দেয়।
সারসংক্ষেপ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন