شبکه های حسگر در حالت کلی ماهیت داده-محور[۷] دارند و بنابراین، ساختار ارتباطی بین گرههای حسگر باید طوری طراحی شوند که با ماهیت این شبکه ها، هماهنگی داشته باشند. کاربردهای شبکه های حسگر در مواردی است که عملاً امکان اتصال گرهها به یکدیگر عملی یا مقرون به صرفه نیست، در این گونه شبکه ها عموماً از ارتباط بیسیم استفاده می شود و ساختار کلی این شبکه ها به این صورت است که تعداد زیادی گره همسان، در محیط پراکنده میشوند و پس از جمعآوری اطلاعات مورد نظر، آن را به یک گیرنده مرکزی یا چاهک[۸] ارسال می کنند. گیرنده مرکزی، گرهای با میزان انرژی بالا و تجهیزات مورد نیاز میباشد و در واقع واسط بین شبکه حسگر و محیط اطراف میباشد. در شبکه های با وسعت جغرافیایی زیاد، میتوان از چندین گیرنده مرکزی استفاده کرد تا مسیر ارسال داده ها به گیرندهها، بیش از حد طولانی نگردد.
از آنجایی که ارسال مستقیم رادیویی در فواصل زیاد، به انرژی بسیار زیادی نیاز دارد، در شبکه های حسگر، از روشهای انتقال اطلاعات به صورت گام به گام[۹] استفاده می شود. علاوه بر این مورد، در اکثر موارد بین بسیاری از گرهها و گیرندههای مرکزی، به علت مسایلی مانند فاصله زیاد یا موانع جغرافیایی، ممکن است دید مستقیمی[۱۰] بین گره و گیرنده مرکزی وجود نداشته باشد. در شکل ۱-۱ و شکل ۲-۲ شمایی از معماری ارتباطی در شبکه های حسگر، نشان داده شده است.
شکل ۱‑۱ : نحوه طبقه بندی گرهها در شبکه های حسگر بیسیم [۴]
شکل ۱‑۲ : معماری ارتباطی شبکه های حسگر بی سیم [۴]
اجزای سخت افزاری
با توجه به عملکرد متفاوت شبکه های حسگر، هر گره می تواند با توجه به وظایف تعریف شده از اجزای متنوعی تشکیل شده باشد. در حالت کلی هر گره از یکسری اجزای کلی تشکیل شده است که عبارتند از واحد پردازش مرکزی[۱۱]، فرستنده-گیرنده رادیویی، منبع تغذیه که میتواند از طریق باطری یا سلولهای خورشیدی یا ترکیب هر دو، انرژی مورد نیاز سیستم را فراهم کند، یک یا تعدادی حسگر که داده های مورد نظر را جمع آوری می کنند، انواع حافظههای جانبی در صورت نیاز، موقعیت یاب [۱۲]GPSدر صورت نیاز و سایر اجزایی که بسته به کاربردهای متفاوت میتواند در هر گره گنجانده شود. در شکل ۱-۳ معماری کلی سخت افزار یک گره حسگر نشان داده شده است.
شکل ۱‑۳ : معماری سخت افزار هر گره شبکههای حسگر[۴]
کنترلر یا واحد پردازنده مرکزی[۱۳] (CPU):
یکی از فاکتورهای مهم در انتخاب CPU برای استفاده در گرههای شبکههای حسگر، میزان توان مصرفی پردازنده و پشتیبانی آن از حالتهای متنوع کاری (از لحاظ توان مصرفی) میباشد. همچنین در گرههایی که نیاز به پردازش حجیم اطلاعات دریافتی دارند، میزان توان پردازشی CPU نیز از اهمیت بالایی برخوردار است. یکی دیگر از فاکتورهای مهم میزان تجهیزات جانبی گنجانده شده در میکرو کنترلر است. تجهیزاتی مانند رابط SPI و UART جهت ارتباط با وسایل جانبی و A/D برای بررسی توان مصرفی یا تبدیل اطلاعات حسگرهای دارای خروجی آنالوگ، تقریباً از ملزومات میکرو کنترلر مورد استفاده در گرههای شبکههای حسگر میباشند و وجود چنین تجهیزاتی از طرفی موجب کاهش توان مصرفی مدار و از طرف دیگر باعث کاهش هزینه کلی تمام شده برای هر گره میشود. نهایتاً قیمت میکرو کنترلر نیز نباید از حد قابل قبولی بالاتر باشد.
یکی از میکرو کنترلرهای مورد استفاده در شبکههای حسگر با توجه به موارد مطرح شده در بالا میکرو کنترلر ATMEL 90LS8535 میباشد که یک میکرو کنترلر AVR از خانواده ATMEGA هشت بیتی است که دارای یک A/D 10 بیتی، یک رابط SPI و UART، دارای چندین مود کاری مصرفی با فرکانسهای کاری مختلف مانند ۳۲KHz برای مود کم مصرف و ۸MHz برای مود پر مصرف میباشد. همچنین میتوان از میکرو کنترلر ATMEGA 16 نیز برای این منظور استفاده کرد که مشابه همین میکرو کنترلر است. جایگزین بهتری که برای میکرو کنترلرهای فوق مطرح شده، میکرو کنترلر MSP430F149 از شرکت TI است که یک میکرو کنترلر ۱۶ بیتی RISC بوده و دارای A/D 16 بیتی و دو عدد پورت سریال است. این میکرو کنترلر نسبت به میکرو کنترلرهای AVR دارای توان مصرفی و قیمت پایینتری میباشد.
فرستنده گیرنده-رادیویی
فرستنده-گیرنده رادیویی یکی از اجزای با اهمیت در گرههای شبکههای حسگر میباشد و بسته به کاربردهای مختلف، می تواند تنوع زیادی داشته باشد. مهمترین مشخصه در انتخاب فرستنده-گیرندهها، برد[۱۴] مورد نیاز برای ارتباط بین گرههای شبکه است. در شبکههایی با گرههای نزدیک به هم، میتوان از فرستندههای کم مصرف استفاده کرد ولی توان مصرفی در فرستنده-گیرندهها با بردهای بیشتر، به شدت افزایش پیدا میکند و باید در آنها از راهکارهای کنترل توان دقیقتری استفاده کرد.
یکی از فرستنده-گیرندههای مناسب برای بردهای زیاد (در حد چند کیلومتر)۹Xstream Radio محصول شرکت MaxStream میباشد که در فرکانس ۹۰۰MHz کار میکند. فرستنده-گیرنده دیگر که برای بردهای نسبتاً کوتاه بکار میرود TR1000 است که این فرستنده-گیرنده، دارای برد کمتری است ولی توان مصرفی آن بسیار کمتر از فرستنده-گیرنده مطرح شده در بالاست. (در حدود ۱۰/۱ کیلومتر). به طور کلی اگر فرستنده-گیرندههایی استفاده کنیم که لایه پیوند داده[۱۵] را به صورت داخلی پشتیبانی کند و عمل تصحیح خطا و سریال و موازی کردن را خودشان انجام دهد، بار پردازشی CPU و پیچیدگی نرمافزار کاهش خواهند یافت.
حافظه جانبی
در صورتی که مقدار حافظه موجود در CPU برای نگهداری اطلاعات مورد نظر کافی نباشد که معمولاً این چنین است، میتوان از حافظههای دائمی مانند حافظه Flash استفاده کرد که هم ارزان قیمت است و هم حجم کمی را در مدار اشغال میکند. فضای حافظه Flash، به یکسری صفحه با حجم کوچکتر تقسیم میشود. این صفحات باید به صورت یکجا نوشته یا پاک شوند. معمولاً نوشتن و پاک کردن در فلشها با سرعت نسبتاً پایینی صورت میگیرد. همچنین تعداد دفعات نوشتن یک حافظه فلش محدود است و باید هنگام استفاده از آنها این نکات را مد نظر قرار داد.
یک نمونه از حافظههای موجود، حافظه فلش ATMEL AT45DB041B است که ۴ Mbit ظرفیت دارد و صفحات آن ۲۵۶ بایتی است. نوشتن هر صفحه ۱۴ ms و پاک کردن آن ۸ ms زمان میبرد ولی چون هنگام پاک کردن در خانههای حافظه مقدار ۱ نوشته میشود، میتوان بجای پاک کردن حافظه بر روی قسمت های استفاده نشده آن عدد ۱ را نوشت.
انواع حسگرها
حسگرها عمل اصلی در شبکههای حسگر یعنی عمل جمع آوری اطلاعات را بر عهده دارند. انواع گوناگونی از حسگرها طراحی شدهاند که بسیاری از آنها مبدل آنالوگ به دیجیتال داخلی دارند و میتوانند از طریق رابط I2C به رابط سریال پردازنده متصل شوند.I2C یک پروتکل ارتباط سریال سنکرون[۱۶] است که از طریق آن میتوان تا ۸ وسیله جانبی را به یک درگاه[۱۷] وصل کرد و در آن هر وسیله یک شناسهی[۱۸] منحصر به فرد را داراست.
در کل با توجه به کاربرد مورد نظر و زمان نمونهبرداری حسگر از محیط و توان مصرفی آن در مقایسه با میکرو کنترلر مرکزی، میتوان دو معماری متفاوت برای عملکرد گره حسگر ارائه کرد. یکی از این روشها اینست که ما CPU را در حالت عادی به صورت آماده به کار[۱۹] درآوریم و با دریافت اطلاعات با اهمیت CPU را فعال کنیم و در روش دیگر میتوانیم تغذیه حسگر را در حالت عادی قطع کنیم و زمانی که میخواهیم از اطلاعات نمونه برداری کنیم تغذیه حسگر را فعال کنیم. این عمل خصوصاً در مواردی که حسگر توان مصرفی بالای دارد، کاملاً ضروری میباشد.
منبع تغذیه
معمولاً گرههای شبکه حسگر هنگامی که در محیط قرار میگیرند، از دسترس ما خارج میشوند به نحوی که با تمام شدن منبع انرژی آنها، عملاً گرهها بلا استفاده میگردند؛ لذا منبع تغذیه در ساخت گرههای، شبکههای حسگر از اهمیت خاصی برخوردار است. در حالت کلی، از دو نوع منبع تغذیه قابل شارژ و غیر قابل شارژ میتوان استفاده کرد. در صورتی که شرایط محیطی گرهها اجازه بدهد میتوانیم از انواع انرژیها مانند انرژی حرکتی یا انرژی خورشیدی برای تأمین توان مورد نیاز گرهها یا جهت شارژ کردن باطریها استفاده نمود. در تغذیه گرههای شبکه حسگر میتوانیم از انواع رگولاتورها و تقویت کنندههای[۲۰] ولتاژ-جریان استفاده کنیم. عامل اصلی در انتخاب رگولاتورها، باید بازده بالا و دامنه نسبتاً وسیع ولتاژ ورودی باشد تا بتوانیم از منابع انرژی حداکثر استفاده را ببریم. در حالت کلی از دو نوع رگولاتور خطی و سوییچینگ برای این منظور میتوان استفاده کرد که رگولاتورهای سوییچینگ با توجه به قابلیت افزایش ولتاژ ورودی مناسبترند؛ همچنین از انواع Buck Boost Converters میتوان برای تأمین جریانهای بالای کوتاه مدت مانند هنگام قفل کردن GPS استفاده کرد.
باطریها و سلولهای خورشیدی
در طراحی شبکههای حسگر میتوان از انواع باطریها استفاده کرد. در صورتی که نخواهیم از باطریهای قابل شارژ استفاده کنیم معمولاً باطریهای آلکالاین برای این منظور مناسب هستند. فقط ولتاژ این باطریها با گذشت زمان در طول عمر آنها به صورت خطی افت میکند و از ۳.۴ ولت به ۱.۸ ولت میرسد که این نکته را نیز باید در طراحی منبع تغذیه مناسب آنها در نظر گرفت. در صورت استفاده از باطریهای قابل شارژ میتوان از باطریهای Li-Ion استفاده کرد که در این صورت باید از سلولهای خورشیدی یا سایر منابع انرژی جهت شارژ کردن آنها استفاده کرد. مزیت اصلی باطریهای Li-Ion اینست که در طول بازه فعالیتشان دارای ولتاژ نسبتاً ثابتی هستند و مانند باطریهای آلکالاین[۲۱] دچار افت ولتاژ قابل توجهی نمیشوند.
هنگام استفاده از سلولهای خورشیدی نیز باید این نکته را مد نظر قرار داد که اگر تعدادی سلول خورشیدی را پشت سر هم به صورت سری ببندیم، ممکن است تعدادی از آنها که نور کمتری دریافت میکنند، دارای ولتاژ دو سر منفی گردند و توان تولید شده توسط سلولهای دیگر را مصرف کنند پس باید آرایش مناسبی برای استفاده از چندین سلول خورشیدی در نظر گرفته شود تا به حداکثر بازده ممکن رسید.
اجزای نرم افزاری
با پیچیدهتر شدن عملیات محول شده به هر گره به تدریج پیچیدگی سیستم افزایش پیدا می کند و نیاز به یک سیستم عامل ساده که دسترسی به منابع سختافزاری در هر گره شبکه حسگر را سهولت بخشد، بیشتر احساس می شود. یکی از سیستم عاملهایی که تا کنون طراحی شده و در انواع مختلفی از شبکه های حسگر پیاده سازی شده است، سیستم عاملTiny OS است که در مورد آن توضیح داده خواهد شد.
سیستم عامل Tiny OS
این سیستم عامل یک سیستم عامل رویداد-گرا[۲۲] است و از یک هسته چند ریسمانی بسیار کارآمد تشکیل شده است. همچنین این سیستم عامل یک ساختار برنامه ریزی دو سطحی دارد که اجازه میدهد تا مقدار پردازش محدودی بر روی رویدادهای سخت افزاری به صورت ایجاد وقفه در هنگام انجام وظایف طولانی صورت پذیرد.
در طراحی این سیستمعامل، انرژی مهمترین منبع موجود در نظر گرفته می شود و به نظر میرسد که یکی از راه حلهای بهینه برای استفاده از منابع پردازنده استفاده از روش رویداد-گرا باشد. مجموعه عملکردهایی که به یک رویداد نسبت داده شدهاند به سرعت اجرا میشوند و در حین اجرای آنها هیچ توقفی اجازه داده نخواهد شد. در حالت خواب، سیکلهای استفاده نشده در CPU جهت انتظار برای رخ دادن هر گونه رویداد قابل توجه، به کار میروند.
خلاصه
امروزه کاربردهای بسیاری برای شبکههای حسگر مطرح شده است و روز به روز هم بر تعداد آنها اضافه میشود. از جمله این کاربردها میتوان به استفاده در میدانهای جنگی، شناسایی محیطهای آلوده، نظارت کردن محیط زیست، بررسی و تحلیل وضعیت بناهای ساختمانی، در جادهها و بزرگراههای هوشمند، کاربردهای مختلف در زمینه پزشکی و دیگر عوامل اشاره کرد.
در طراحی سختافزار برای شبکههای حسگر، محدودیتهایی وجود دارد که از جمله این محدودیتها میتوان به عواملی مانند هزینه پایین، حجم کوچک، توان مصرفی پایین، نرخ بیت پایین، خودمختار بودن گرهها و نهایتاً به قابلیت تطبیق پذیری با تغییرات محیط اشاره کرد. هر شبکه حسگر از تعداد زیادی گره ارزان قیمت با اندازه کوچک، تشکیل شده است و هر گره نیز از مجموعهای از اجزای سختافزاری تشکیل شده است که در کنار یکدیگر وظایف هر گره را به انجام میرسانند. در حال حاضر هر گره حسگر از بهم پیوستن تعدادی قطعات از پیش طراحی شده حاصل میشود ولی در آینده میتوان کلیه مدارهای مورد نیاز یک حسگر را در یک مدار مجتمع فشرده و در اندازه بسیار کوچکتری پیادهسازی کرد که کاهش قابل ملاحظهای در اندازه و توان مصرفی هر گره را در بر خواهد داشت.
هر شبکه حسگر از اجزایی مانند واحد پردازنده مرکزی، فرستنده-گیرنده رادیویی، حافظه جانبی، انواع حسگرها از قبیل حسگرGPS، منبع تغذیه که میتواند به صورت باطری یا سلولهای خورشیدی باشد و سایر اجزا، بر حسب نیاز تشکیل شده است. کلیه این اجزا باید با توجه به کاربردهای مورد نظر و ابعاد شبکه، طراحی و تعبیه شوند.
فصل ۲
تعریف مسئله
در این تحقیق به بررسی خاصیت تحمل پذیری خطای الگوریتمهای مسیریابی چند مسیره[۲۳] در شبکه های حسگر بیسیم میپردازیم. در سیستمهائی که به دلیل اهمیت، به دسترس پذیری[۲۴] بالائی نیاز دارند لازم است خاصیت تحمل پذیری خطا در نظر گرفته شود. خاصیت تحمل پذیری خطا تضمین می کند که یک سیستم برای استفاده همیشه در دسترس باشد بدون اینکه وقفهای در عملکرد آن ایجاد شود. در ابتدا یکسری پارامترهای لازم را تعریف و در ادامه طرح پیشنهادی تشریح شده است.
دسترس پذیری
احتمال آنکه یک سیستم زمانی که درخواستی برای استفاده از آن وجود دارد به درستی به کار خود ادامه دهد یا به عبارتی احتمال اینکه سیستم خطا نداشته باشد یا در صورت بروز خطا به زیر درخواستها جواب مورد نظر را بدهد دسترس پذیری گویند. دسترس پذیری وابسته به دو چیز است :
قابلیت اطمینان[۲۵]
قابلیت نگهداری[۲۶]
دلایل وجود خطا در شبکه های حسگر بیسیم
دلایل وجود خطا در شبکه های حسگر بیسیم را به صورت زیر میتوان تقسیم بندی کرد [۶]:
خالی شدن باطری
تخریب بر اثر عوامل محیط
لینکها خراب شوند:
منظور از خراب شدن کم شدن کیفیت است که به عواملی مانند نرخ گم شدن بستهها[۲۷]، نرخ تحویل بستهها[۲۸] بستگی دارد که با گوش دادن به وضعیت کانال بدست می آید.
ازدحام[۲۹]
ازدحام نیز می تواند به عنوان یک خطا در نظر گرفته شود که قابل تعمیر و بازیابی است، هر چه زمان بر طرف کردن ازدحام کمتر باشد قابلیت تعمیر آن سریعتر است که این به خودی خود می تواند دسترس پذیری را بالا ببرد و قابلیت تحمل پذیری خطا را در شبکه افزایش دهد.
دلایل نیاز به یک پروتکل با قابلیت تحمل پذیری خطا در شبکه های حسگر بیسیم نسبت به شبکه های دیگر
به دلایل زیر شبکه های حسگر بیسیم نسبت به شبکه های دیگر بیشتر به یک پروتکل با قابلیت تحمل پذیری خطا نیاز دارند [۶]: