فهرست مطالب:

شبکه سنسور بی سیم کم هزینه در باند 433 مگاهرتز: 5 مرحله (همراه با تصاویر)
شبکه سنسور بی سیم کم هزینه در باند 433 مگاهرتز: 5 مرحله (همراه با تصاویر)

تصویری: شبکه سنسور بی سیم کم هزینه در باند 433 مگاهرتز: 5 مرحله (همراه با تصاویر)

تصویری: شبکه سنسور بی سیم کم هزینه در باند 433 مگاهرتز: 5 مرحله (همراه با تصاویر)
تصویری: یک تیغ ریش را پشت موبایل خود بگذارید ببینید چه اتفاقی میوفته 2024, نوامبر
Anonim
شبکه سنسور بی سیم کم هزینه در باند 433 مگاهرتز
شبکه سنسور بی سیم کم هزینه در باند 433 مگاهرتز

از ترزا راجبا بسیار سپاسگزارم که با مهربانی مرا پذیرفت تا از داده های انتشارات آنها در این مقاله استفاده کنم

* در تصویر بالا - پنج واحد فرستنده حسگر که برای آزمایش استفاده کردم

شبکه های حسگر بی سیم چیست؟

یک تعریف ساده می تواند این باشد: شبکه های حسگر بی سیم به گروهی از دستگاه های الکترونیکی توزیع شده در منطقه خاصی برای نظارت و ثبت داده های محیطی گفته می شود که به صورت بی سیم به مکان مرکزی منتقل می شوند تا پردازش و ذخیره شوند.

امروزه از شبکه های حسگر بی سیم می توان به چند روش استفاده کرد ، در زیر فقط چند نمونه ذکر شده است:

  • مناطق نظارت زیست محیطی از جنگل ها ، رودخانه ها ، دریاچه ها ، دریاها و اقیانوس ها ؛
  • امکان هشدار در صورت حملات تروریستی ، شیمیایی ، بیولوژیکی ، همه گیر ؛
  • سیستم های نظارت برای کودکان ، افراد مسن ، بیماران یا افراد دارای نیازهای ویژه ؛
  • سیستم های نظارتی در کشاورزی و گلخانه ها ؛
  • سیستم نظارت بر وضعیت آب و هوا ؛
  • نظارت بر ترافیک شهر ، مدارس ، پارکینگ خودرو ؛

و بسیاری ، بسیاری از برنامه های کاربردی دیگر.

در این مقاله می خواهم نتایج آزمایش با شبکه های حسگر بی سیم را که برای نظارت بر داده های دما و رطوبت استفاده می شود ، با تغییرات آهسته و نسبتاً قابل پیش بینی نشان دهم. برای این آزمایش ، من از فرستنده های حسگر استفاده کردم که خودم با استفاده از ماژول های مقرون به صرفه ساخته بودم. گیرنده نیز DIY است ، ارتباط یک طرفه است (در باند رادیویی 433 مگاهرتز) ، به این معنی که سنسورها فقط داده ها را منتقل می کنند و مکان مرکزی فقط دریافت می کند. هیچ ارتباطی بین سنسورها و از گیرنده تا سنسورها وجود ندارد.

اما چرا انتخاب استفاده از چند فرستنده و تنها یک گیرنده؟ بدیهی است اولین دلیل آن "ساده سازی آن" خواهد بود. هرچه مونتاژ ساده تر باشد ، احتمال خرابی آن کمتر است و قطعاً تعمیر و تعویض قطعات واحد در صورت خرابی بسیار آسان تر است. مصرف برق نیز کمتر است ، باتری ها بیشتر عمر می کنند (سنسورها فقط هنگام نظارت و دریافت مصرف می کنند ، بقیه زمان دستگاه در حالت خواب عمیق است). ساده بودن آن باعث می شود که دستگاه نیز ارزان باشد. یکی دیگر از جنبه هایی که باید در نظر داشته باشید منطقه پوشش است. چرا؟ ساخت و استفاده از یک گیرنده حساس بسیار راحت تر از داشتن یک گیرنده حساس و یک فرستنده قدرتمند در سنسورها و ماژول مرکزی است (این امر برای ارتباط دو طرفه خوب ضروری است). با یک گیرنده حساس و با کیفیت خوب می توان داده ها را از راه دور دریافت کرد ، اما انتشار داده ها در همان فاصله نیاز به قدرت انتشار بالا دارد و این امر با هزینه های بالا ، مصرف برق و (فراموش نکنیم) امکان غلبه بر حداکثر قدرت فرستنده قانونی در باند 433 مگاهرتز با استفاده از یک گیرنده با کیفیت متوسط ، ارزان اما با آنتن با کیفیت بالا (حتی DIY) و فرستنده های ارزان قیمت با آنتن با کیفیت خوب ، می توانیم با کسری از هزینه شبکه های حسگر بی سیم موجود ، نتایج عالی را بدست آوریم.

مرحله 1: ملاحظات نظری

ایده ایجاد یک شبکه حسگر بی سیم برای نظارت بر دما و رطوبت هوا و خاک در مناطق مختلف گلخانه مدتها پیش ، تقریباً 10 سال به ذهن من رسید. من می خواستم یک شبکه 1 سیم ایجاد کنم و از سنسورهای دما و رطوبت 1 سیم استفاده کنم. متأسفانه ، 10 سال پیش سنسورهای رطوبت کمیاب و گران بودند (اگرچه سنسورهای دما گسترده بودند) و از آنجا که پخش سیم در سراسر گلخانه گزینه ای به نظر نمی رسید ، من به سرعت از این ایده صرف نظر کردم.

با این حال ، در حال حاضر وضعیت به طور اساسی تغییر کرده است. ما قادر به یافتن سنسورهای ارزان و با کیفیت خوب (دما و رطوبت) هستیم و همچنین به فرستنده ها و گیرنده های ارزان قیمت در باند 433 مگاهرتز دسترسی داریم. تنها یک مشکل وجود دارد: اگر سنسورهای بیشتری (مثلاً 20) داریم چگونه برخوردها را حل می کنیم (لطفاً به خاطر داشته باشید که این ارتباط یک طرفه است) ، یعنی همپوشانی انتشار 2 یا چند سنسور؟ در جستجوی راه حل احتمالی به این مقاله های بسیار جالب برخورد کردم:

سنسور بی سیم بر اساس روش عملیات تصادفی همگرا می شود - توسط RAJBA ، T. و RAJBA ، S.

و

احتمال برخورد در شبکه حسگر بی سیم با ارسال تصادفی - توسط RAJBA S. و RAJBA. تی

اساساً ، نویسندگان به ما نشان می دهند که احتمال برخورد در یک شبکه حسگر بی سیم را می توان محاسبه کرد اگر بسته ها در نقاط زمانی خاصی با توجه به توزیع سمی (نمایی) منتشر شوند.

عصاره ای از مقاله فوق ویژگی های شبکه مورد مطالعه را فهرست می کند.

  • تعداد زیادی واحد حسگر فرستنده N ؛
  • واحدهای فرستنده حسگر کاملاً مستقل هستند و روشن یا خاموش کردن آنها هیچ تاثیری بر عملکرد شبکه ندارد.
  • همه واحدهای فرستنده حسگر (یا بخشی از آنها) ممکن است متحرک باشند به شرطی که در محدوده رادیویی ایستگاه دریافت کننده قرار داشته باشند.
  • پارامترهای فیزیکی که به آرامی در حال تغییر هستند تحت اندازه گیری قرار می گیرند ، به این معنی که نیازی به انتقال مکرر داده ها نیست (به عنوان مثال هر چند دقیقه یا چند ده دقیقه).
  • انتقال از نوع یک طرفه است ، یعنی از واحد فرستنده حسگر تا نقطه دریافت در فواصل زمانی متوسط T. اطلاعات در پروتکل در t منتقل می شودپ مدت زمان؛
  • هر سنسور انتخاب شده به طور تصادفی در زمان پواسون شروع به انتقال می کند. برای توجیه ارسال کاوشگرها در دوران پواسون از PASTA (ورودهای پواسون به میانگین زمانها استفاده می شود) استفاده می شود.
  • همه واحدهای فرستنده حسگر به طور تصادفی مستقل باقی می مانند و اطلاعات را در یک لحظه به طور تصادفی از زمان t منتقل می کنندپ مدت زمان و T متوسط زمان تکرار ؛
  • اگر یک یا چند سنسور شروع به انتقال کنند در حالی که پروتکل tپ مدت زمان از سنسور دیگری منتقل می شود ، چنین وضعیتی برخورد نامیده می شود. برخورد باعث می شود که ایستگاه پایه مرکزی اطلاعات را به روش صحیح دریافت نکند.

تقریباً با شبکه حسگرهایی که می خواهم آزمایش کنم کاملاً مناسب است…

تقریبا.

من نمی گویم که من ریاضیات را در مقاله کاملاً درک کرده ام ، اما بر اساس داده های ارائه شده و بر اساس نتایج می توانم کمی درک کنم که موضوع چیست. تنها چیزی که وجود دارد این است که مقداری که در مقاله استفاده شده است کمی مرا نگران کرد:). متغیر t استپ - مدت زمان انتقال داده که 3.2x10 فرض می شود-5 s بنابراین زمان انتقال داده های جمع آوری شده 3.2 ما خواهد بود! این را نمی توان در باند 433 مگاهرتز انجام داد. من می خواهم از rcswitch یا radiohead برای برنامه ریزی سنسورهای فرستنده استفاده کنم. با مطالعه کدهای دو کتابخانه ، به این نتیجه رسیدم که کوچکترین زمان انتقال 20 میلی ثانیه است ، بسیار بالاتر از مقدار 3.2 ما. با فرستنده های 2.4 گیگاهرتز امکان t وجود داردپ زمان خیلی کوچک است … اما این یک داستان دیگر است.

اگر از فرمول پیشنهادی نویسندگان این مقاله استفاده کنیم ، نتیجه زیر خواهد بود:

داده های اولیه (مثال):

  • تعداد سنسورها N = 20؛
  • مدت زمان انتقال داده tپ= 20 در 10-3 ثانیه (0.020 ثانیه)
  • میانگین فاصله انتقال T = 180 ثانیه

فرمول:

احتمال برخورد در فاصله T است

تصویر
تصویر

اگر داده های اولیه را در نظر بگیریم احتمال برخورد در فاصله T 0.043519 خواهد بود

به نظر من این مقدار ، که نشان دهنده احتمال برخورد 4.35 در هر 100 اندازه گیری است ، بسیار خوب است. اگر میانگین زمان انتقال را افزایش دهیم ، احتمال افزایش می یابد ، بنابراین در مقدار 300 ثانیه احتمال 0.026332 را داریم ، یعنی 2.6 برخورد در هر 100 اندازه گیری. اگر در نظر بگیریم که به هر حال می توان انتظار از بین رفتن بسته های داده را در حین کارکرد سیستم (بسته به شرایط آب و هوایی به عنوان مثال) داشت ، این عدد واقعاً عالی است.

من می خواستم شبیه سازی این نوع شبکه را انجام دهم ، اما یک نوع کمک طراحی نیز دارم ، بنابراین یک برنامه کوچک در C تهیه کردم ، می توانید کد منبع را در github (همچنین یک فایل باینری کامپایل شده که در خط فرمان ویندوز اجرا می شود) بیابید. رهایی).

داده های ورودی:

  • sensor_number - تعداد سنسورهای موجود در شبکه ؛
  • اندازه گیری_تعداد - تعداد اندازه گیری ها برای شبیه سازی ؛
  • میانگین_انتقال_مدت زمان متوسط میان انتقال داده های پی در پی ؛
  • زمان انتقال - مدت زمان م effectiveثر انتقال داده ها.

خروجی:

  • حداکثر زمان اندازه گیری محاسبه شده ؛
  • لیست برخورد بین دو سنسور ؛
  • تعداد برخورد ؛
  • احتمال نظری برخوردها

نتایج بسیار جالبی است:)

از نظر تئوری کافی نیست ، من نمی خواهم روی قسمت نظری اصرار بیشتری داشته باشم ، مقالات و کد منبع کاملاً گویا هستند ، بنابراین بهتر است به اجرای عملی و موثر شبکه حسگر بی سیم و نتایج آزمایش بپردازم.

مرحله 2: پیاده سازی عملی - سخت افزار

برای سنسورهای فرستنده به اجزای زیر نیاز داریم:

  • میکروکنترلر ATtiny85 1.11 $؛
  • سوکت مدار مجتمع 8DIP 0.046 $؛
  • سنسور دما/رطوبت DHT11 0.74 $؛
  • ماژول فرستنده 433 مگاهرتز H34A 0.73 $ ؛
  • نگهدارنده باتری 4xAA با سوئیچ 1 $ ؛

مجموع 3.63 $ ؛

گیرنده مورد استفاده برای آزمایشات یک Arduino UNO (فقط برای آزمایش) و یک ماژول دریافت H3V4F (0.66 دلار) با آنتن قوس ارزان قیمت (0.32 دلار) است.

طرحواره های سنسور فرستنده

تصویر
تصویر

واحدهای سنسور فرستنده از باتری 3xAA ، 1.5 ولت تغذیه می کنند (در قسمت چهارم نگهدارنده باتری مجموعه الکترونیکی وجود دارد). همانطور که مشاهده می کنید منبع تغذیه فرستنده و سنسور دما و رطوبت به پین PB0 میکروکنترلر متصل است (فرستنده و سنسور هنگامی که پین روی HIGH تنظیم می شود) تغذیه می شوند. بنابراین هنگامی که میکروکنترلر در حالت خواب عمیق قرار دارد ، می تواند به مصرف فعلی 4.7uA برسد. با توجه به اینکه زمان بیدار شدن سنسور فرستنده حدود 3 ثانیه (اندازه گیری ، انتقال و غیره) و زمان متوسط بین گیربکس های 180 ثانیه ای است (مانند مثال در فصل قبل) ، باتری ها باید مقاومت زیادی داشته باشند. با برخی از باتری های قلیایی با کیفیت خوب (یعنی 2000 میلی آمپر ساعت) ، خودمختاری می تواند بیش از 10 ماه باشد همانطور که در omnicalculator.com محاسبه شده است (جایی که کل مصرف فعلی: سنسور - 1.5mA ، ماژول فرستنده - 3.5mA و میکروکنترلر ATtiny85 - 5mA ، مجموع 10mA)

در عکس زیر می توانید مونتاژ سنسور فرستنده تقریبا تمام شده را مشاهده کنید.

تصویر
تصویر

در زیر عکس واحد گیرنده تست را مشاهده می کنید.

تصویر
تصویر

مرحله 3: پیاده سازی عملی - نرم افزار

نرم افزار بارگذاری شده بر روی میکروکنترلر attiny85 ، جزء اصلی واحدهای فرستنده حسگر ، دارای هدف خواندن داده های ارائه شده توسط سنسور ، تبدیل آنها به انتقال از طریق رادیو و انتقال آنها در بازه های زمانی Poisson (توزیع نمایی یا PASTA - ورود به پواسون به طور میانگین زمان). همچنین ، با استفاده از یک عملکرد ساده ، وضعیت باتری ها را کنترل می کند و در صورت عدم ولتاژ مورد نیاز سنسور ، هشدار می دهد. کد منبع در github موجود است. کد گیرنده تست بسیار ساده است ، من آن را در زیر ارسال می کنم.

// کتابخانه rcswitch اصلاح شده از https://github.com/Martin-Laclaustra/rc-switch/tree/protocollessreceiver// کد نسخه ای اصلاح شده از نمونه های کتابخانه اصلی rcswitch است #شامل RCSwitch mySwitch = RCSwitch () ؛ داده های طولانی بدون علامت = 0 ؛ void setup () {Serial.begin (9600)؛ mySwitch.enableReceive (0) ؛ // گیرنده در وقفه 0 => که پین #2} حلقه void () {if (mySwitch.available ()) {unsigned long data = mySwitch.getReceivedValue ()؛ // خروجی (mySwitch.getReceivedValue () ، mySwitch.getReceivedBitlength () ، mySwitch.getReceivedDelay () ، mySwitch.getReceivedRawdata () ، mySwitch.getReceivedProtocol ()) ؛ رطوبت int = bitExtracted (داده ها ، 7 ، 1) ؛ // کمتر معنی دار 7 بیت از موقعیت 1 - راست ترین اولین بیت دمای int = bitExtracted (داده ها ، 7 ، 8) ؛ // 7 بیت بعدی از موقعیت 8 به راست و غیره int v_min = bitExtracted (داده ها ، 1 ، 15) ؛ int packet_id = bitExtracted (داده ها ، 3 ، 16) ؛ // 3bits - 8 شناسه بسته از 0 تا 7 int sensor_id = bitExtracted (داده ها ، 6 ، 19) ؛ // 6bit برای 64 شناسه حسگر - مجموع 24 بیت Serial.print (sensor_id) ؛ Serial.print ("،") ؛ Serial.print (packet_id) ؛ Serial.print ("،") ؛ Serial.print (دما) ؛ Serial.print ("،") ؛ Serial.print (رطوبت) ؛ Serial.println ()؛ mySwitch.resetAvailable ()؛ }} // کد از https://www.geeksforgeeks.org/extract-k-bits-given-position-number/ int bit استخراج شده (شماره طولانی بدون علامت ، int k ، int p) {return (((1 (p- 1)))؛}

من سعی کردم تا آنجا که ممکن است نظرات بیشتری را وارد کنم تا درک مطلب آسان تر شود.

برای اشکال زدایی از کتابخانه نرم افزار و تابلوی توسعه attiny85 با برنامه نویس USBasp استفاده کردم (همچنین در این مورد به دستورالعمل های من مراجعه کنید). پیوند سریال با مبدل Serial به TTL (با تراشه PL2303) متصل به پین های خم شده (3 و 4) برد توسعه ایجاد شده است (تصویر زیر را ببینید). همه اینها برای تکمیل کد کمک ارزشمندی بوده است.

تصویر
تصویر

مرحله 4: نتایج آزمایش

نتایج آزمون
نتایج آزمون
نتایج آزمون
نتایج آزمون

من 5 واحد فرستنده حسگر ایجاد کرده ام که مقادیر اندازه گیری شده توسط سنسورهای DHT11 را جمع آوری و ارسال می کند. اندازه گیری ها را با کمک گیرنده آزمایش و برنامه شبیه سازی پایانی (foxterm) طی سه روز ثبت و ذخیره کردم. من یک فاصله 48 ساعته برای مطالعه انتخاب کردم. من لزوماً به مقادیر اندازه گیری شده (به عنوان مثال سنسور 2 ، مقادیر غلط را به من نشان می دهد) علاقه ای نداشتم ، بلکه به تعداد برخورد ها علاقه مند بودم. علاوه بر این ، سنسورها توسط گیرنده بسیار نزدیک (در فاصله 4-5 متری) قرار گرفتند تا سایر علل از دست دادن بسته ها از بین بروند. نتایج آزمایش در یک فایل cvs ذخیره شده و بارگذاری شده است (به فایل زیر نگاه کنید). من همچنین یک فایل اکسل بر اساس این فایل csv بارگذاری کردم. من تعدادی اسکرین شات گرفتم تا به شما نشان دهم که برخورد چگونه به نظر می رسد (البته در آزمایشاتم) ، نظراتی را نیز به هر عکس از صفحه اضافه کردم.

شاید تعجب کنید که چرا من از سرویس بارگیری داده برای مثال ThingSpeak استفاده نکردم. واقعیت این است که من سوابق زیادی دارم ، بسیاری از حسگرها و داده ها اغلب در فواصل نامنظم می آیند ، و خدمات آنلاین اینترنت اشیا فقط داده ها را در تعداد مشخصی از سنسورها و فقط در فواصل نسبتاً زیاد امکان پذیر می کند. در آینده به فکر نصب و پیکربندی سرور IoT خودم هستم.

در پایان ، 4598 اندازه گیری روی 5 واحد فرستنده حسگر (تقریبا 920/سنسور) منجر به مجموع 5 برخورد به مدت 48 ساعت (0.5435 برخورد/100 اندازه گیری) شد. انجام برخی ریاضیات (با استفاده از برنامه wsn_test با داده های اولیه: 5 سنسور ، زمان متوسط 180 ثانیه ، زمان انتقال 110 میلی ثانیه) احتمال برخورد 0.015185 (1.52 برخورد/100 اندازه گیری) خواهد بود. نتایج عملی حتی بهتر از نتایج نظری است ، اینطور نیست؟:)

تصویر
تصویر

به هر حال در این مدت 18 بسته نیز گم شده اند ، بنابراین برخوردها از این نظر اهمیت چندانی ندارند. البته این آزمون باید در مدت زمان طولانی تری انجام شود تا به نتیجه قطعی برسد ، اما به نظر من حتی در این شرایط موفقیت آمیز است و مفروضات نظری را کاملاً تأیید می کند.

مرحله 5: اندیشه های نهایی

برنامه فوری

در یک گلخانه بزرگ چندین محصول کشت می شود. اگر آبیاری به صورت دستی و بدون نظارت بر آب و هوا ، بدون هیچ گونه اتوماسیون ، بدون ثبت داده ها ، خطر بیش از حد یا زیر آبیاری و همچنین مصرف آب زیاد باشد ، شواهدی برای بهینه سازی مصرف آب وجود ندارد ، خطراتی برای محصولات زراعی در عمومی. برای جلوگیری از این امر ، می توانیم از یک شبکه حسگر بی سیم استفاده کنیم:)

سنسورهای دما ، سنسورهای رطوبت هوا ، سنسورهای رطوبت خاک را می توان در اطراف گلخانه قرار داد و با استفاده از داده های منتقل شده می توان اقدامات متعددی را انجام داد: سوپاپ های برقی راه اندازی-توقف برای خروج آب در جاهایی که مورد نیاز است ، شروع-توقف فن های برقی برای کاهش دما در مناطق مختلف ، در صورت لزوم بخاری ها را روشن کنید و تمام داده ها را برای تجزیه و تحلیل آینده بایگانی کنید. همچنین ، سیستم می تواند یک رابط وب ارائه دهد که در همه جا قابل دسترسی است و در صورت وضعیت غیرعادی هشدارهای ایمیل یا پیامک را ارائه می دهد.

بعدش چی؟

  • آزمایش با تعداد بیشتری سنسور ؛
  • آزمایش در زمان واقعی با حسگرهای از راه دور در منطقه پوشش ؛
  • نصب و پیکربندی سرور IoT محلی (به عنوان مثال در Raspberry Pi) ؛
  • همچنین با فرستنده (گیرنده گیرنده) سنسورها روی 2.4 گیگاهرتز آزمایش می شود.

بنابراین … ادامه دارد …:)

سلب مسئولیت: استفاده از باند فرکانسی 433 مگاهرتز در منطقه شما ممکن است مشمول مقررات فرکانس رادیویی باشد. لطفاً قبل از امتحان این پروژه ، قانونی بودن خود را بررسی کنید

مسابقه حسگرها
مسابقه حسگرها
مسابقه حسگرها
مسابقه حسگرها

نفر دوم در مسابقه سنسورها

توصیه شده: