WiFi ও ব্লুটুথ/BLE for IoT
এই পাঠে যা শিখবেন
- WiFi ও BLE-র মধ্যে মৌলিক পার্থক্য — পাওয়ার, ব্যান্ডউইথ, রেঞ্জ, ও ইন্টারনেট-কানেক্টিভিটি মডেল
- কেন BLE-এর প্রায়ই একটি গেটওয়ে/ফোন দরকার হয়, কিন্তু WiFi-র হয় না
- একই ওয়ার্কলোডে দুটো প্রোটোকলের আনুমানিক ব্যাটারি লাইফ সত্যিকারের গণনা করে তুলনা করা (M8/L34-র ফর্মুলা পুনরায় ব্যবহার করে)
- এই তুলনা কীভাবে বাস্তব প্রোডাক্ট সিদ্ধান্তে (ওয়্যারেবল বনাম স্মার্ট বাল্ব) প্রয়োগ হয়
১ · WiFi for IoT
WiFiWiFiIEEE 802.11-ভিত্তিক ওয়্যারলেস — তুলনামূলক বেশি পাওয়ার ও ব্যান্ডউইথ, বিদ্যমান হোম/অফিস রাউটারের মাধ্যমে সরাসরি ইন্টারনেট সংযোগ দেয়। হলো IoT-র জন্য সবচেয়ে পরিচিত ওয়্যারলেস অপশন — একটি ESP32/ESP8266-ক্লাস চিপ সরাসরি বাসার বা অফিসের বিদ্যমান WiFi রাউটারে যুক্ত হতে পারে, এবং সেই রাউটারের মাধ্যমে সরাসরি ইন্টারনেটে পৌঁছাতে পারে — অতিরিক্ত কোনো গেটওয়ে বা হাব ছাড়াই। বিনিময়ে WiFi রেডিও চালু রাখা ও রাউটারের সাথে "অ্যাসোসিয়েট" (সংযোগ স্থাপন) করা তুলনামূলক অনেক বেশি পাওয়ার খরচ করে — তাই ব্যাটারি-চালিত ডিভাইসে WiFi সবসময় সেরা পছন্দ নয়।
২ · ব্লুটুথ/BLE for IoT
BLEBluetooth Low Energyব্লুটুথের কম-পাওয়ার সংস্করণ — খুবই কম কারেন্ট খরচ করে, স্বল্প রেঞ্জ, এবং সাধারণত ইন্টারনেটে পৌঁছাতে একটি ফোন/হাব গেটওয়ে হিসেবে কাজ করে। (Bluetooth Low Energy) ডিজাইন করাই হয়েছে ব্যাটারি সংরক্ষণের কথা মাথায় রেখে — একটি ফিটনেস ব্যান্ড বা বিকন (beacon) মাসের পর মাস একটি ছোট কয়েন-সেল ব্যাটারিতে চলতে পারে। বিনিময়ে রেঞ্জ কম (সাধারণত কয়েক মিটার থেকে কয়েক দশ মিটার), ব্যান্ডউইথ কম, এবং সবচেয়ে গুরুত্বপূর্ণ — BLE ডিভাইসের নিজস্ব সম্পূর্ণ ইন্টারনেট স্ট্যাক সাধারণত থাকে না, তাই ইন্টারনেটে ডেটা পাঠাতে একটি ফোন বা BLE-গেটওয়ে হাব প্রয়োজন হয় যেটি সেই ডেটা রিলে করে দেয়।
Computer Networks কোর্স সাধারণ 802.11 (WiFi) নেটওয়ার্কিং স্তর ভিত্তি হিসেবে ধরে নেওয়া হয়েছে — এই পাঠ শুধু IoT ডিভাইসের দৃষ্টিকোণ থেকে পাওয়ার/ব্যান্ডউইথ ট্রেড-অফ এবং BLE-র মতো কনস্ট্রেইন্ড বিকল্পের সাথে তুলনায় ফোকাস করে।
৩ · একই ওয়ার্কলোডে ব্যাটারি লাইফ — একটি সত্যিকারের গণনা
M8/L34-এ ব্যবহৃত ব্যাটারি-লাইফ ফর্মুলা এখানে পুনরায় ব্যবহার করা হচ্ছে — $$\text{average current} = \frac{(I_{active} \times t_{active}) + (I_{sleep} \times t_{sleep})}{t_{total}}, \qquad \text{battery life} = \frac{\text{capacity (mAh)}}{\text{average current (mA)}}$$ একই ছোট সেন্সর নোড ধরা হচ্ছে — প্রতিদিন ২৮৮ বার (প্রতি ৫ মিনিটে একবার) একটি রিডিং পাঠায়, ২২০ mAh-এর একটি কয়েন-সেল-ক্লাস ব্যাটারিতে চলে। WiFi-তে প্রতিটি ট্রান্সমিশনে রাউটারের সাথে সংযোগ স্থাপন (association) করতে বেশি সময় ও কারেন্ট লাগে; BLE-তে সংযোগ অনেক দ্রুত ও কম কারেন্টে হয়। নিচের কোড এই দুটো পাইপলাইন সত্যিই গণনা করছে।
capacity_mah = 220 # illustrative কয়েন-সেল-ক্লাস ব্যাটারি capacity
transmissions_per_day = 288 # প্রতি ৫ মিনিটে একটি রিডিং পাঠানো
seconds_per_day = 24 * 60 * 60
# --- WiFi প্রোফাইল (illustrative, সংযোগ স্থাপন + ট্রান্সমিট সহ) ---
wifi_active_current_ma = 120.0
wifi_active_time_s = 2.0 # প্রতি ট্রান্সমিশনে: অ্যাসোসিয়েট + পাঠানো + অ্যাক
wifi_sleep_current_ma = 0.01 # ট্রান্সমিশনের মাঝে ডিপ-স্লিপ কারেন্ট
# --- BLE প্রোফাইল (illustrative, দ্রুত কানেক্ট + ট্রান্সমিট সহ) ---
ble_active_current_ma = 15.0
ble_active_time_s = 0.5 # BLE-র কানেকশন WiFi-র চেয়ে অনেক দ্রুত
ble_sleep_current_ma = 0.005
def battery_life_days(active_current_ma, active_time_s, sleep_current_ma):
active_total_s = transmissions_per_day * active_time_s
sleep_total_s = seconds_per_day - active_total_s
avg_current_ma = ((active_current_ma * active_total_s)
+ (sleep_current_ma * sleep_total_s)) / seconds_per_day
life_hours = capacity_mah / avg_current_ma
return avg_current_ma, life_hours / 24
wifi_avg_ma, wifi_days = battery_life_days(
wifi_active_current_ma, wifi_active_time_s, wifi_sleep_current_ma)
ble_avg_ma, ble_days = battery_life_days(
ble_active_current_ma, ble_active_time_s, ble_sleep_current_ma)
print(f"ওয়ার্কলোড: প্রতিদিন {transmissions_per_day} বার ট্রান্সমিশন, ব্যাটারি {capacity_mah} mAh\n")
print("=== WiFi ===")
print(f"গড় কারেন্ট: {wifi_avg_ma:.4f} mA")
print(f"আনুমানিক ব্যাটারি লাইফ: {wifi_days:.1f} দিন")
print("\n=== BLE ===")
print(f"গড় কারেন্ট: {ble_avg_ma:.4f} mA")
print(f"আনুমানিক ব্যাটারি লাইফ: {ble_days:.1f} দিন")
print(f"\nএকই কাজের জন্য BLE-তে ব্যাটারি লাইফ WiFi-র প্রায় {ble_days / wifi_days:.1f}x বেশি।")
WiFi ও BLE একে অপরের প্রতিদ্বন্দ্বী নয়, বরং ভিন্ন ভিন্ন কাজের জন্য ডিজাইন করা — WiFi যখন সরাসরি ইন্টারনেট সংযোগ ও বেশি ব্যান্ডউইথ দরকার এবং পাওয়ার সীমাবদ্ধতা কম (মেইন-পাওয়ার্ড ডিভাইস), আর BLE যখন ব্যাটারি লাইফ সবচেয়ে গুরুত্বপূর্ণ এবং একটি গেটওয়ে (ফোন/হাব) থাকা গ্রহণযোগ্য। L45-এ এই তুলনা Zigbee, LoRaWAN ও সেলুলার IoT-সহ একটি পূর্ণাঙ্গ সিদ্ধান্ত-স্কোরিং সিস্টেমে বিস্তৃত হবে।
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।
প্র ০১ কোড সেলের ফলাফলে BLE-এর ব্যাটারি লাইফ WiFi-র প্রায় ২৭ গুণ বেশি এলো কেন — শুধু অ্যাক্টিভ কারেন্ট কম হওয়ার কারণে, নাকি আরও কারণ আছে?
দুটো কারণ একসাথে কাজ করে: BLE-র অ্যাক্টিভ কারেন্ট WiFi-র প্রায় ৮ ভাগের ১ ভাগ (১৫ mA বনাম ১২০ mA), আর একইসাথে BLE-র প্রতি ট্রান্সমিশনের সময়ও কম (০.৫ সেকেন্ড বনাম ২ সেকেন্ড, কারণ BLE-র কানেকশন সেটআপ WiFi-র অ্যাসোসিয়েশনের চেয়ে অনেক দ্রুত)। কারেন্ট ও সময় — দুটোই কম হওয়ায় মোট "চার্জ খরচ" (mA × সময়) অনেক গুণ কমে যায়, তাই গুণফল আকারে পার্থক্যটা এত বড় হয়ে দাঁড়ায়।
প্র ০২
যদি transmissions_per_day ২৮৮ থেকে বেড়ে ২৮৮০ (প্রতি মিনিটে একবার) হয়ে যায়, তাহলে
WiFi ও BLE — কোনটির ব্যাটারি লাইফের উপর আপেক্ষিকভাবে বেশি প্রভাব পড়বে বলে মনে করেন?
দুটোরই ব্যাটারি লাইফ কমবে, কিন্তু WiFi-র উপর প্রভাব আপেক্ষিকভাবে বেশি হবে — কারণ WiFi-র প্রতি ট্রান্সমিশনে সময় ও কারেন্ট দুটোই বেশি, তাই ট্রান্সমিশন সংখ্যা বাড়লে "অ্যাক্টিভ সময়ের ভাগ" WiFi-র মোট এনার্জি বাজেটে দ্রুত হারে বাড়ে। BLE-তে প্রতিটি ট্রান্সমিশন এত সস্তা যে ট্রান্সমিশন সংখ্যা ১০ গুণ বাড়ালেও মোট প্রভাব তুলনামূলক কম থাকে।
প্র ০৩ WiFi ডিভাইস সরাসরি ইন্টারনেটে পৌঁছাতে পারে, কিন্তু BLE ডিভাইসের জন্য প্রায়ই একটি ফোন/গেটওয়ে লাগে কেন?
WiFi ডিভাইস একটি সম্পূর্ণ TCP/IP নেটওয়ার্ক স্ট্যাক চালাতে পারে এবং রাউটারের মাধ্যমে সরাসরি ইন্টারনেট প্রোটোকল ব্যবহার করে — এই সামর্থ্য থাকা মানেই বাড়তি পাওয়ার/মেমরি খরচ। BLE ডিজাইনই করা হয়েছে সেই ওভারহেড এড়িয়ে যতটা সম্ভব হালকা রাখার জন্য — তাই এর নিজস্ব প্রোটোকল সাধারণত IP-স্ট্যাক বহন করে না। ফলে BLE ডেটা ইন্টারনেটে পৌঁছাতে একটি মধ্যবর্তী গেটওয়ে (ফোন/হাব) দরকার হয় যা BLE-কে IP-তে "ট্রান্সলেট" করে — এটাই L41-এর এজ/ফগ ধারণার একটি বাস্তব উদাহরণ।
অনুশীলন
-
পরীক্ষা করুন: উপরের কোড সেলে
wifi_active_time_s২.০ থেকে ৫.০ সেকেন্ডে বদলান (ধরুন দুর্বল সিগন্যালে রি-ট্রাই বেশি লাগছে) — নতুন WiFi ব্যাটারি লাইফ কত দিন হবে?নতুন অ্যাক্টিভ সময় $= 288 \times 5 = 1440$ সেকেন্ড, স্লিপ সময় $= 86400 - 1440 = 84960$ সেকেন্ড। গড় কারেন্ট $= (120 \times 1440 + 0.01 \times 84960) / 86400 \approx 2.01$ mA, তাই ব্যাটারি লাইফ $\approx 220 / 2.01 / 24 \approx 4.6$ দিন — অর্থাৎ দুর্বল সিগন্যালে রি-ট্রাই বাড়লে WiFi-র ব্যাটারি লাইফ প্রায় অর্ধেকে নেমে আসে (১১.৩ থেকে ৪.৬ দিন)।
-
চিন্তা করুন:
ble_active_current_ma১৫ থেকে ৩০ mA-এ বাড়ালে (ধরুন BLE রেডিও ফুল পাওয়ারে ট্রান্সমিট করছে দূরত্বের কারণে) নতুন BLE ব্যাটারি লাইফ আনুমানিক কত হবে?গড় কারেন্ট $= (30 \times 144 + 0.005 \times 86256) / 86400 \approx 0.055$ mA, তাই ব্যাটারি লাইফ $\approx 220 / 0.055 / 24 \approx 167$ দিন — কারেন্ট দ্বিগুণ হলেও BLE এখনও WiFi-র (~১১ দিন) চেয়ে অনেক বেশি ব্যাটারি লাইফ দেয়, কারণ অ্যাক্টিভ সময় এখনও অনেক কম।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- কোর্সের সম্পূর্ণ সিলেবাস দেখুন ৫৭টি পাঠ মাইক্রোপ্রসেসর আর্কিটেকচার, এমবেডেড C, GPIO, টাইমার/PWM/ADC, সিরিয়াল প্রোটোকল, RTOS, সেন্সর/অ্যাকচুয়েটর, IoT আর্কিটেকচার, ওয়্যারলেস প্রোটোকল, MQTT/CoAP ও IoT সিকিউরিটি — বাকি পাঠগুলো শীঘ্রই যুক্ত হবে।
- Computer Networks কোর্স সহোদর কোর্স 802.11 (WiFi)-সহ সাধারণ নেটওয়ার্কিং স্তরের ভিত্তি সেই কোর্সেই তৈরি হয়েছে — এই কোর্স IoT ডিভাইসের পাওয়ার/কানেক্টিভিটি ট্রেড-অফে ফোকাস করে।
- সব Courses দেখুন ABCL TECH C, C++, Python, Java, JavaScript, DSA, DBMS, Discrete Mathematics, System Design, Cybersecurity, Cloud Computing & DevOps, Computer Networks, Operating Systems, Computer Architecture, Design and Analysis of Algorithms ও আরও অনেক কোর্স — সব এক জায়গায়।