Peripheral হল Bluetooth Low Energy আর্কিটেকচার একটি ডিভাইস যা advertising প্যাকেটের মাধ্যমে তার সেবাগুলির বিজ্ঞাপন দেয় এবং Central এর কাছ থেকে সংযোগের অপেক্ষা করে। IoT ইকোসিস্টেমে, Peripheral সাধারণত সীমিত শক্তি ব্যবহারকারী একটি ডিভাইস: একটি তাপমাত্রা সেন্সর, স্মার্ট ল্যাম্প, ফিটনেস ব্রেসলেট, বিকন (Beacon)। Bluetooth Core Specification 5.4 (2023) বিজ্ঞাপন প্রোটোকল সংজ্ঞায়িত করে: Peripheral পর্যায়ক্রমিকভাবে advertising প্যাকেট প্রেরণ করে যাতে ডিভাইসের নাম, সেবার তালিকা এবং কাস্টম ডেটা থাকে, য়খন Central এই প্যাকেটগুলি স্ক্যান করে এবং সংযোগ করা উচিত কি না তা সিদ্ধান্ত নেয়। সংযোগ স্থাপনের পর, Peripheral একটি GATT সার্ভার হিসাবে কাজ করে, পড়া এবং লেখার জন্য সেবা এবং বৈশিষ্ট্য প্রদান করে।
মূখ্য বিষয়সমূহ
Peripheral হল একটি BLE ডিভাইস যা একটি GATT সার্ভার বাস্তবায়ন করে এবং advertising চ্যানেলের মাধ্যমে তার ক্ষমতার বিজ্ঞাপন দেয়। Central এর বিপরীতে, যা সক্রিয়ভাবে ডিভাইস অনুসন্ধান করে, Peripheral নিষ্ক্রিয়ভাবে সংযোগের অপেক্ষা করে। এটি ব্যাটারি চালিত ডিভাইসের শক্তি দক্ষতার জন্য অপ্টিমাইজ়ড একটি অসামমিত মডেল।
Peripheral বেশ কয়েকটি মোডে থাকতে পারে: advertising (বিজ্ঞাপন), connected (Central এর সাথে সংযুক্ত), sleeping (বিজ্ঞাপন বন্ধ রেখে ঘুমানো)। advertising মোডে, Peripheral ন্যূনতম শক্তি ব্যবহারে পর্যায়ক্রমিকভাবে ছোট ডেটা প্যাকেট প্রেরণ করে। সংযোগের পর, Peripheral সংযুক্ত মোডে চলে যায়, যেখানে এটি আলোচিত সংযোগ ব্যবধান অনুযায়ী Central এর সাথে ডেটা বিনিময় করে।
Bluetooth Core Specification 5.4 (2023) অনুযায়ী, একটি ডিভাইস দ্রুত গতিতে Peripheral এবং Central এর মধ্যে স্যুইচ করতে পারে, কিন্তু যে কোনো এক মুহূর্তে একটি সংযোগের জন্য ভূমিকা নির্দিষ্ট থাকে। একটি সাধারণ পরিদৃশ্য: একটি IoT সেন্সর নিরন্তরভাবে Peripheral হিসাবে কাজ করে, য়খন একটি স্মার্টফোন Central হিসাবে সংযোগ পরিচালনা করে।
ডিভেলপারদের বোঝা গুরুত্বপূর্ণ: Peripheral নির্ধারণ করে কোন কোন সেবা এবং বৈশিষ্ট্য উপলব্ধ এবং সেগুলিতে প্রবেশ পরিচালনা করে। Peripheral এর GATT সার্ভার গঠন নির্ধারণ করে Central কি ডেটা পড়তে পারে এবং কোন কমান্ড লিখতে পারে।
Advertising হল সেই প্রক্রিয়া যার মাধ্যমে Peripheral তার উপস্থিতি ঘোষণা করে। Peripheral তিনটি উৎসর্গীকৃত চ্যানেলে (37, 38, 39) 20 এমএস থেকে 10.24 সেকেন্ড ব্যবধানে advertising প্যাকেট প্রেরণ করে। প্রতিটি advertising প্যাকেটে নির্দিষ্ট তথ্য থাকে এবং আইচ্ছিক ডেটা অন্তর্ভুক্ত থাকতে পারে।
দুই ধরনের advertising প্যাকেট আছে: advertising PDU (প্রধান প্যাকেট) এবং scan response PDU (Central এর অনুরোধের জবাব)। প্রধান প্যাকেটে বাধ্যবাহ্যক ফিল্ড থাকে: প্যাকেটের ধরন, প্রেরকের ঠিকানা, ডেটা। যদি Central একটি স্ক্যান অনুরোধ প্রেরণ করে, Peripheral আরও সম্পূর্ণ তথ্য সহ একটি অতিরিক্ত প্যাকেট দিয়ে সড়া দেয় — উদাহরণস্বরূপ, সম্পূর্ণ ডিভাইসের নাম।
Advertising প্যারামিটারগুলি আবিষ্কারের গতি এবং শক্তি ব্যবহারকে প্রভাবিত করে। Advertising interval হল প্যাকেট প্রেরণের মধ্যে সময়। ব্যবধান যত ছোট হবে, Central তত দ্রুত ডিভাইস আবিষ্কার করবে, কিন্তু Peripheral তত বেশি শক্তি ব্যবহার করবে। সুপারিশ করা ব্যবধান: বেশিরভাগ ডিভাইসের জন্য 100–1000 এমএস।
| প্যারামিটার | পরিসর | প্রভাব | সুপারিশ |
|---|---|---|---|
| Advertising Interval | 20 ms – 10.24 s | আবিষ্কারের গতি, শক্তি | 100–1000 ms ভারসাম্যের জন্য |
| Advertising Channels | 37, 38, 39 | আবিষ্কারের বিশ্বসনীয়তা | সকল 3টি চ্যানেল আবশ্যক |
| Tx Power | -20 – +10 dBm | ব্যাপ্তি, হস্তক্ষেপ | অন্তর্দেশে 0 dBm, বাইরে +4 dBm |
| Advertising Timeout | 0 – 180 সেকেন্ড | বিজ্ঞাপনের মেয়াদ | বিকনের জন্য 0 (অসীম) |
BLE বিজ্ঞাপন প্যাকেট এর advertising PDU এর জন্য 31 বাইট এবং scan response এর জন্য আরও 31 বাইট সীমা রয়েছে। প্যাকেটের ভিতরে, ডেটা AD Structure (Advertising Data Structure) ফর্মেটে সাজানো হয়: প্রতিটি ফিল্ডের একটি ধরন (1 বাইট), দৈর্ঘ্য (1 বাইট) এবং মান থাকে।
সবচেয়ে বেশি ব্যবহৃত AD ধরন: Flags (0x01) — সংযোগ এবং আবিষ্কার মোড, Local Name (0x08 বা 0x09) — ডিভাইসের নাম, Service UUID List (0x02–0x07) — সেবা UUID এর তালিকা, Manufacturer Specific Data (0xFF) — প্রস্তুতকারীর ডেটা। 31-বাইট প্যাকেটে ডেটা সঠিকভাবে প্যাক করা এম্বেডেড ডিভাইস ডিভেলপারদের জন্য একটি গুরুত্বপূর্ণ কাজ।
যে সব ডিভাইসের আরও ডেটা প্রেরণের প্রয়োজন, তাদের জন্য extended advertising (BLE 5.0+) advertising প্যাকেটের আকার 251 বাইট বাড়ায় এবং নতুন প্যাকেট ধরন যোগ করে। Extended advertising খোলা অঞ্চলে 1 কিমি পর্যন্ত বৃদ্ধিত পরিসরের জন্য কোডেড PHY চ্যানেলও সমর্থন করে।
একটি বিজ্ঞাপন প্যাকেট ডিজাইন করার সময় মনে রাখুন: advertising প্যাকেটে যত বেশি ডেটা থাকবে, অন্য ডিভাইসের সাথে সংঘর্ষের সম্ভাবনা তত বেশি। দ্রুত আবিষ্কারের জন্য, শুধুমাত্র গুরুত্বপূর্ণ ডেটা (Service UUID) advertising PDU-তে এবং অতিরিক্ত ডেটা scan response-এ রাখার পরামর্শ দেওয়া হয়।
GATT সার্ভার Peripheral এর উপর সমস্ত সেবা এবং বৈশিষ্ট্য ধারণ করে যা Central আবিষ্কার করতে এবং যার সাথে যোগাযোগ করতে পারে। সংযোগের পর, Central সেবা আবিষ্কার করে, তারপর বৈশিষ্ট্য, এবং GATT প্রোটোকলের মাধ্যমে তাদের সাথে যোগাযোগ করে।
Peripheral একটি GATT সার্ভার হিসাবে Central এর অনুরোধগুলি সঠিকভাবে প্রক্রিয়া করা উচিত: পড়ার অনুরোধ, লেখার অনুরোধ, বিজ্ঞপ্তি এবং ইংডিকেশন। প্রতিটি অনুরোধ GATT টেবিল দিয়ে যায়, যেখানে প্রতিটি এট্রিবিউট (সেবা, বৈশিষ্ট্য, বর্ণনাকারী) একটি Handle — 16-বিট ঠিকানার সাথে মেলা খায়।
Peripheral ডিভেলপার প্রতিটি এট্রিবিউটের জন্য প্রবেশ অনুমতি সংজ্ঞায়িত করে: শুধু পড়া, শুধু লেখা, পড়া এবং লেখা, এনক্রিপশন সহ বা ছাড়া। সংবেদনশীল ডেটার জন্য (ব্যক্তিগত তথ্য, চিকিৎসা সংকেতক), MITM Protection এর মাধ্যমে এনক্রিপশন বাধ্যবাহ্যকতা সক্রিয় করার পরামর্শ দেওয়া হয়।
CBPeripheralManager হল iOS-এ Peripheral ভূমিকা বাস্তবায়নের জন্য একটি Core Bluetooth ক্লাস। এটি GATT সার্ভার পরিচালনা করে, সেবা এবং বৈশিষ্ট্য প্রকাশ করে, এবং Centrals এর অনুরোধ প্রক্রিয়া করে। CBCentralManager এর বিপরীতে, CBPeripheralManager স্ক্যান করে না — এটি শুধু বিজ্ঞাপন দেয় এবং সংযোগ পরিচালনা করে।
iOS-এ Peripheral বাস্তবায়নের মূখ্য পদক্ষেপ: CBPeripheralManager আরম্ভ করা, add এর মাধ্যমে সেবা যোগ করা, startAdvertising এর মাধ্যমে বিজ্ঞাপন শুরু করা, CBPeripheralManagerDelegate এর মাধ্যমে Centrals এর অনুরোধ প্রক্রিয়া করা।
import CoreBluetooth
class BLEPeripheralManager: NSObject, CBPeripheralManagerDelegate {
private var peripheralManager: CBPeripheralManager!
func startAdvertising() {
let advertisementData: [String: Any] = [
CBAdvertisementDataLocalNameKey: "BLE Sensor",
CBAdvertisementDataServiceUUIDsKey: [
CBUUID("180F")
]
]
peripheralManager.startAdvertising(advertisementData)
}
func peripheralManagerDidUpdateState(
_ peripheral: CBPeripheralManager
) {
if peripheral.state == .poweredOn {
startAdvertising()
}
}
}
iOS Peripheral কে Background Modes-এ bluetooth-peripheral কী সহ পৃষ্ঠভূমিতে কাজ করতে দেয়। পৃষ্ঠভূমিতে, iOS সীমিত ডেটা সহ বিজ্ঞাপন এবং সংযোগ পরিচালনা করতে পারে। দীর্ঘ বিজ্ঞাপনের জন্য (180 সেকেন্ডের বেশি), শক্তি বাঁচাতে CBAdvertisementDataWaitForResponseFromCentral বিকল্প ব্যবহার করুন।
Android Peripheral ভূমিকায় কাজের জন্য BluetoothLeAdvertiser প্রদান করে (API 21 থেকে শুরু)। API কনফিগরযোগ্য প্যারামিটার সহ বিজ্ঞাপন শুরু করার অনুমতি দেয়: ট্রান্সমিটার পাওয়ার, বিজ্ঞাপন ব্যবধান, প্যাকেট ডেটা। Android সঙ্গত ডিভাইসে extended advertising (BLE 5.0) ও সমর্থন করে।
import android.bluetooth.le.*;
private BluetoothLeAdvertiser advertiser;
public void startPeripheral() {
BluetoothAdapter adapter =
BluetoothAdapter.getDefaultAdapter();
advertiser = adapter.getBluetoothLeAdvertiser();
AdvertiseData data = new AdvertiseData.Builder()
.setIncludeDeviceName(true)
.addServiceUuid(
new ParcelUuid(
UUID.fromString("0000180F-0000-1000-8000-00805F9B34FB")
)
)
.build();
AdvertiseSettings settings = new AdvertiseSettings.Builder()
.setAdvertiseMode(AdvertiseSettings.ADVERTISE_MODE_LOW_POWER)
.setTxPowerLevel(AdvertiseSettings.ADVERTISE_TX_POWER_MEDIUM)
.build();
advertiser.startAdvertising(
settings, data, advertiseCallback
);
}
Android-এ, Peripheral সমর্থন প্রস্তুতকারী এবং ওএস সংস্করণ এর উপর নির্ভর করে। সকল ডিভাইস BluetoothLeAdvertiser সমর্থন করে না — adapter.isMultipleAdvertisementSupported() এর মাধ্যমে যাচাই করুন। Android 10 থেকে শুরু, Peripheral ভূমিকার জন্য BLUETOOTH_ADVERTISE অনুমতি প্রয়োজন, target SDK 31+ এর অ্যাপের জন্য রানটাইম অনুরোধ সহ।
শক্তি দক্ষতা BLE এর একটি মূখ্য সুবিধা, এবং Peripheral এখানে প্রধান ভূমিকা পালন করে। একটি ডিভাইস অপ্টিমাইজ়ড শক্তি ব্যবহারের কারণে CR2032 ব্যাটারি (220 mAh) এ এক বছরের বেশি চলতে পারে। বেশিরভাগ সময়, Peripheral বিজ্ঞাপন বন্ধ রেখে সিড়ে মোডে থাকে, শুধু একটি advertising প্যাকেট প্রেরণ বা Central এর অনুরোধ প্রক্রিয়া করার জন্য জাগা হয়।
বিভিন্ন মোডে Peripheral এর শক্তি ব্যবহার: সিড়ে মোড (গভীর ঘুম) — 1–5 µA, টাইমার সহ নিষ্ক্রিয় — 10–50 µA, advertising — 5–15 mA (প্যাকেট প্রেরণের সময়), connected — 5–10 mA (সংযোগ ইভেন্টের সময়)। 1000 ms এর advertising ব্যবধান এবং 4 ms এর প্যাকেট মেয়াদের সাথে, গড় করন্ট প্রায় 50–100 µA।
Texas Instruments Application Report (SWRA478, 2024) অনুযায়ী, advertising ব্যবধান 100 ms থেকে 1000 ms এ অপ্টিমাইজ় করা হলে গড় শক্তি ব্যবহার 90% কমে যায়। অতিরিক্ত সন্চয় slave latency (সংযোগ ইভেন্ট অস্বীকার), সামান্য দূরত্বে Tx Power কমানো এবং সংযোগের পর বিজ্ঞাপন বন্ধ (connectable advertising) এর মাধ্যমে অর্জন করা যায়।
সামন্য প্রশ্নাবলী
হ্যাঁ, বিজ্ঞপ্তি/ইংডিকেশন প্রক্রিয়ার মাধ্যমে। যদিও Central সবসময় সংযোগের সূচনাকারী, সংযোগের পর Peripheral Central এর সপষ্ট অনুরোধ ছাড়াই GATT বিজ্ঞপ্তির মাধ্যমে ডেটা প্রেরণ করতে পারে। এর জন্য, Central কে প্রথমে CCCD এর মাধ্যমে সাবস্ক্রাইব করতে হবে।
বিজ্ঞাপনের মেয়াদ সপেসিফিকেশন দ্বারা সীমাবদ্ধ নয়, কিন্তু ব্যবহারিকভাবে এটি ব্যাটারির শক্তি দ্বারা সীমাবদ্ধ। iOS-এ, একটি Peripheral অতিরিক্ত সেটিং ছাড়াই পৃষ্ঠভূমিতে প্রতি সাত্রে সর্বাধিক 180 সেকেন্ড বিজ্ঞাপন দিতে পারে। Android-এ, বিজ্ঞাপন অনির্দিষ্টভাবে কাজ করতে পারে, কিন্তু ব্যাটারির আয়ু যথেষ্ট হ্রাস করে।
Advertising ব্যবধান বাড়ান (সুপারিশ 500–1000 ms), সংযোগ ইভেন্ট এড়িয়ে যাওয়ার জন্য slave latency ব্যবহার করুন, সংযোগের পর বিজ্ঞাপন বন্ধ করুন, এবং প্রয়োজনীয় দূরত্বে স্থির যোগাযোগের জন্য সর্বনিম্ন Tx Power নির্বাচন করুন।
Non-connectable advertising হল একটি মোড যেখানে Peripheral বিজ্ঞাপন দেয় কিন্তু সংযোগ অনুরোধ গ্রহণ করে না। এটি বিকনের জন্য ব্যবহৃত হয় যা দুই-মুখী সংযোগ স্থাপন না করেই শুধু ডেটা প্রেরণ করে (যেমন, একটি দোকান শনাক্তাকারী)। এটি connectable advertising এর তুলনায় শক্তি সংরক্ষণ করে।
31 বাইটে আপনি অন্তর্ভুক্ত করতে পারেন: flags (3 বাইট), ডিভাইসের নাম (সংক্ষিপ্ত আকারে 28 বাইট পর্যন্ত), সেবা UUID এর একটি তালিকা (2–16 বাইট প্রতি UUID), প্রস্তুতকারীর ডেটা (26 বাইট পর্যন্ত)। সর্বোত্তম কৌশল হল ফিল্টারিংয়ের জন্য advertising PDU-তে সেবা UUID এবং scan response-এ সম্পূর্ণ নাম রাখা।
সারাংশ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন