در قسمت قبلی به بررسی روش های فعالسازی LoRa پرداختیم. بر پایه تکنولوژی Chirp Spread Spectrum (CSS) کار میکنه؛ جایی که «Chirp» یا همون Symbolها نقش حامل داده رو دارن.
اینجا چیزی که خیلی مهمه، Spreading Factor (SF) هست. این فاکتور در واقع نرخ چیـرپ رو کنترل میکنه و به همین خاطر سرعت انتقال داده هم وابسته به اون میشه. هر چی Spreading Factor پایینتر باشه، چیرپها سریعترن و در نتیجه سرعت انتقال داده بیشتره. در مقابل، وقتی Spreading Factor رو بالا میبری، نرخ چیـرپ نصف میشه و در نتیجه سرعت انتقال داده هم نصف میشه.
به زبان ساده: افزایش Spreading Factor باعث میشه برد و مقاومت در برابر نویز بیشتر بشه، اما هزینهاش کاهش سرعت انتقال داده است.
وقتی Spreading Factor پایینتر باشه، سرعت انتقال داده بالاتر میره اما برد کاهش پیدا میکنه. دلیلش اینه که با کم شدن SF، Processing Gain (قدرت پردازش سیگنال و مقاومت در برابر نویز) کمتر میشه و در عوض نرخ بیت افزایش پیدا میکنه. به همین خاطر، تغییر Spreading Factor به شبکه این امکان رو میده که برای هر دستگاه بین برد بیشتر و سرعت بالاتر تعادل ایجاد کنه.
از طرف دیگه، خود شبکه هم از Spreading Factor بهعنوان یک ابزار برای کنترل ترافیک و تراکم استفاده میکنه. چون Spreading Factorها متعامد (Orthogonal) هستن، سیگنالهایی که با SFهای مختلف مدوله شدن میتونن روی یک کانال فرکانسی مشترک و در یک زمان واحد ارسال بشن بدون اینکه روی هم تداخل ایجاد کنن. این ویژگی یکی از دلایلیه که LoRa میتونه تعداد زیادی دستگاه رو همزمان پشتیبانی کنه و اینجاست که بحث جالب میشه.
مدولاسیون LoRa شش سطح مختلف از Spreading Factor داره، از SF7 تا SF12. هر کدوم از این فاکتورها تأثیر مستقیمی روی چند ویژگی مهم دارن: نرخ داده (Data Rate)، مدت زمان اشغال کانال یا Time-on-Air، عمر باتری و حساسیت گیرنده (Receiver Sensitivity).
وقتی از SF پایینتر مثل SF7 استفاده بشه، نرخ داده بالاتره، پیام سریعتر منتقل میشه و زمان اشغال کانال کمتره. این یعنی باتری کمتر مصرف میشه، اما برد و حساسیت گیرنده کمتره. در عوض وقتی میری سمت SFهای بالاتر مثل SF12، برد ارتباط بیشتر میشه و گیرنده میتونه سیگنالهای ضعیفتر رو هم دریافت کنه، ولی هزینهاش اینه که نرخ داده کاهش پیدا میکنه و مدت زمان ارسال (Time-on-Air) خیلی بیشتر میشه، پس مصرف انرژی بالاتر میره.
به زبان ساده:
این انعطاف یکی از دلایلیه که LoRaWAN میتونه در کاربردهای خیلی متنوع، از سنسورهای ساده با ارسال گاهبهگاه گرفته تا دستگاههایی که باید توی فاصلههای خیلی زیاد کار کنن، بهخوبی جواب بده.
وقتی Spreading Factor پایینتر باشه، نرخ بیت بالاتر میره (با فرض اینکه پهنای باند و کدینگریت ثابت بمونه). مثلاً SF7 نسبت به SF12 نرخ بیت بیشتری فراهم میکنه. از طرف دیگه، اگر پهنای باند (Bandwidth) رو دو برابر کنیم، نرخ بیت هم دو برابر میشه (باز هم با فرض ثابت بودن SF و Coding Rate).
برای نمونه، جدول زیر نرخ بیت محاسبهشده برای SF7 با Coding Rate = 1 رو در پهنای باندهای 125، 250 و 500 کیلوهرتز نشون میده:
هرچی Spreading Factor بزرگتر باشه، دستگاه پردازش بیشتری روی سیگنال انجام میده و در نتیجه Processing Gain بالاتر میره. این یعنی سیگنالهایی که با SF بزرگتر مدوله شدن، خطای کمتری دارن و راحتتر توسط گیرنده تشخیص داده میشن، حتی اگر خیلی ضعیف باشن.
به زبان ساده، وقتی از SF12 استفاده میکنی، سیگنال میتونه مسافت خیلی بیشتری رو طی کنه و هنوز هم قابل دریافت باشه، در حالی که همون سیگنال اگر با SF7 ارسال بشه، زودتر دچار افت کیفیت میشه و برد کمتری خواهد داشت.
پس انتخاب SF یه جور بازی بین «برد بیشتر» و «نرخ داده بالاتر» محسوب میشه؛ SF بالا برای برد بلندتر و مقاومت بیشتر در برابر نویز عالیه، اما هزینهاش سرعت پایینتر و مصرف انرژی بیشتره.
وقتی از Spreading Factor بالاتر استفاده میکنی، برای فرستادن یک حجم ثابت از داده (Payload) با پهنای باند ثابت، مدتزمان بیشتری طول میکشه تا پیام کامل ارسال بشه. به این مدتزمان میگن Time-On-Air.
به زبان ساده، مثلاً اگر همون بسته داده رو با SF7 بفرستی، خیلی سریعتر منتقل میشه. ولی اگه همون بسته رو با SF12 بفرستی، مدت زمان زیادی فرستنده رو اشغال میکنه. همین مسئله روی مصرف انرژی هم اثر داره؛ چون دستگاه باید مدت بیشتری در حالت فعال باقی بمونه.
برای محاسبه دقیق Time-On-Air میشه از ابزار رسمی LoRaWAN Airtime Calculator که توسط The Things Network ارائه شده استفاده کرد. توی این ابزار کافیه اندازه Payload (بر حسب بایت)، پهنای باند (Bandwidth) و Spreading Factor رو وارد کنی تا زمان دقیق اشغال کانال محاسبه بشه.
هرچی Spreading Factor بالاتر باشه، حساسیت گیرنده هم بیشتر میشه. به این معنی که دستگاه میتونه سیگنالهای ضعیفتر رو هم دریافت و پردازش کنه. معمولاً وقتی قدرت سیگنال پایین باشه یا فاصله زیاد بشه، LoRa به سمت استفاده از SFهای بالاتر میره تا ارتباط همچنان پایدار بمونه.
جدول زیر نشون میده که افزایش SF چه تأثیری روی حساسیت گیرنده داره (اعداد دقیق بسته به سختافزار و پهنای باند ممکنه فرق کنن، اما الگو همیشه همینه):
یکی از قابلیتهای مهم LoRaWAN چیزی به اسم Adaptive Data Rate (ADR) هست. این مکانیزم برای بهینهسازی نرخ داده (Data Rate)، زمان اشغال کانال (Airtime) و مصرف انرژی دستگاهها در شبکه استفاده میشه.
ADR سه پارامتر اصلی رو روی دستگاه کنترل میکنه:
وقتی ADR فعال باشه، سرور شبکه به دستگاه سیگنال میده که چه تغییری لازمه: مثلاً میتونه بگه توان ارسال رو کم کن یا نرخ داده رو ببر بالا. اینطوری دستگاهی که نزدیک گیتوی قرار داره لازم نیست با توان زیاد یا Spreading Factor بالا کار کنه، چون در فاصله کم هم پیامش بهراحتی میرسه. در نتیجه مصرف انرژی به حداقل میرسه.
برعکس، دستگاههایی که دورتر از گیتوی هستن یا شرایط محیطی سختتری دارن، باید از Spreading Factor بالاتر استفاده کنن تا لینک قویتری داشته باشن، حتی اگر به قیمت مصرف بیشتر باتری تموم بشه.
به زبان ساده، ADR باعث میشه هر دستگاه با بهترین تنظیمات ممکن کار کنه؛ نزدیکها سریع و کممصرف، دورترها کندتر اما پایدار. همین قابلیت کمک میکنه شبکه LoRaWAN بتونه همزمان مصرف انرژی رو پایین نگه داره و هم پوششدهی وسیع و قابل اعتمادی داشته باشه.
مکانیزم ADR زمانی بیشترین کارایی رو داره که شرایط رادیویی (RF) نسبتاً پایدار باشن. یعنی معمولاً برای دستگاههای ثابت میشه بهراحتی ADR رو فعال کرد. اما اگر همین دستگاههای ثابت تشخیص بدن شرایط RF ناپایداره، مثلاً وقتی یه ماشین روی سنسور پارکینگ پارک کرده و سیگنالها ضعیف شدن، در اون شرایط بهتره ADR موقتاً غیرفعال بشه.
برای دستگاههای متحرک هم ماجرا کمی فرق میکنه. این دستگاهها باید بتونن تشخیص بدن چه زمانی برای مدت طولانی در یک نقطه ثابت موندن؛ توی این مواقع میشه ADR رو فعال کرد تا مصرف انرژی بهینه بشه. اما وقتی دستگاه در حال حرکت باشه، چون شرایط رادیویی دائم تغییر میکنه، استفاده از ADR نتیجه خوبی نمیده. یک نکته مهم هم اینه که تصمیم نهایی برای استفاده یا عدم استفاده از ADR بر عهده خود دستگاه هست، نه اپلیکیشن یا حتی شبکه. دستگاهه که باید هوشمندانه تشخیص بده کی شرایط پایدارن و کی نه.
حالا این که ADR چطور محاسبه میشه برمیگرده به شبکه ای که دستگاه داره ازش استفاده میکنه که در این مقاله واردش نمیشم.
نویسنده شو !
سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.