Description
دانشکدهی مهندسی برق و کامپیوتر
سیستمهای نهفتهی بیدرنگ
تمرین اول
آشنایی با پروتکل های ارتباطی انتقال داده، سنسورها، و
موتور
آشنایی با پروتکل های ارتباطی انتقال داده و سنسورها و موتورهای الکتریکی
هدف از انجام این تمرین یادگیری کار با رابطهای Arduino ، آشنایی با پروتکلهای انتقال داده به روش سریال(232RS و I2C) و آشنایی با برخی از انواع سنسورها و نحوه استفاده از آنها است. برای انجام این تمرین از بورد Arduino ، شبیهساز Proteus و ابزار توسعه کد Arduino Studio استفاده می شود.
در این تمرین باید با استفاده از دو بورد Arduino، یک شبکه شامل یک گره مرکزی و یک گره سنسور که به یک سنسور و موتور متصل است و دادههای دریافتی از سنسور خود را به گره مرکزی ارسال میکند را ایجاد و شبیه سازی کنید. وظیفهی گره مرکزی پردازش اطلاعات دریافتی، ارسال دستور به موتور، و نمایش تصمیم اتخاذ شده روی یک LCD است.
مفاهیم مقدماتی
ابزارهای توسعه کد و شبیه سازی
برای برنامهنویسی برای آردوینو نیاز به نصب برنامهی Arduino IDE دارید که از این لینک قابل دریافت است. پس از توسعه کد، سیستم مورد نظر در نرم افزار proteus با قرار دادن اجزای مورد نیاز تولید شده و برنامه نوشته شده بر روی این سیستم قرا رگرفته و اجرای آن شبیه سازی میشود.
نرم افزار proteus یک شبیه ساز بسیار قدرتنمد برای مدارهای دیجیتال می باشد .این نرم افزار مدل بسیاری از میکروکنترلرهای موجود در بازار از جمله بردهای Arduino را دارد .در این نرم افزار یک محیط کاملا یک پارچه وجود دارد که می توان از مرحله کدنویسی میکروکنترلر تا طراحی PCB را به خوبی انجام داد. محیط شماتیک این نرم افزار امکان کار کردن با طیف وسیعی از بردها، تراشه ها ،و قطعات الکترونیکی را برای شما فراهم می کند. هم چنین ابزارهای خوبی برای اندازه گیری ولتاژ و جریان و سیگنال های موجود در مدار در این نرم افزار فراهم شده
برای استفاده از شبیهساز Arduino در Proteus نیاز به نصب کتابخانهی مربوط به آن را دارید. دانلود این کتابخانهو مراحل نصب آن را میتوانید در این لینک پیگیری کنید. بعد از نصب این کتابخانه، میتوانید همانند عکس زیر، بلاک مربوط را به proteus اضافه کنید.
.
شرح تمرین
به طور کلی شما در این تمرین باید با استفاده از دو بورد Arduino Uno ، یک سیستم هوشمند آبیاری گلدان را پیاده سازی کنید. شبکه شامل یک گره مرکزی و یک گره سنسور که به یک سنسور متصل است را ایجاد و شبیه سازی کنید .این گره غیر مرکزی با گره مرکزی در ارتباط است و دادههایی که از سنسورهای خود دریافت میکند را به آن ارسال میکند. وظیفهی گره مرکزی پردازش اطلاعات دریافتی و نمایش تصمیم اتخاذشده روی یک LCD است. همچنین گره سنسور به یک موتور الکتریکی مجهز است که میتواند شیر آب را باز و بسته و شدت جریان آب را کنترل نماید.
شرح هرکدام از گرهها که با استفاده از یک بورد آردوینو ایجاد می شوند به صورت زیر است:
● گره غیر مرکزی (TH-Board) – این گره در داخل یک گلدان قرار دارد و اطلاعات رطوبت خاک و دما را تولید میکند. برای این کار، بورد مربوطه از طریق ارتباط I2C به یک سنسور اندازهگیری دما و رطوبت )25SHT( متصل میشود و اطلاعات سنسور را بعد از پردازش از طریق ارتباط سریال UART به ماژول بلوتوث (05-HC) ارسال میکند. این ماژول بلوتوث در ادامه اطلاعات را به ماژول بلوتوث گره مرکزی ارسال خواهد کرد. ارسال داده هر 5 ثانیه یکبار انجام میشود .این گره دارای یک موتور الکتریکی از نوع stepper motor است که به شیر آب متصل است و با رسیدن دستورات از سوی گره مرکزی، قطع و وصل شدن و شدت جریان آب را کنترلمیکند.
● گره مرکزی (Main-Board) – این گره که گره کنترل کننده مرکزی در این پروژه است ،تصمیم میگیرد که بر اساس شرایط، آبیاری قطرهای صورت بگیرد یا خیر و اگر جواب مثبت است، این کار را با چه نرخی انجام دهد .این گره به یک LCD مجهز است و اطلاعات سنسور را دریافت میکند و بسته به شرایط، پیام مناسب را روی LCD چاپ میکند .دقت کنید که این گره نیاز به یک ماژول بلوتوث هم دارد که دادهها را از گره دیگر دریافت کند.
برنامهی شما باید دما و رطوبت دریافتی را روی LCDنمایش داده و تحت شرایط زیر ،دستورات متناسب را جهت ارسال به گره غیرمرکزی تولید کند:
○ اگر رطوبت بالای 5۰ درصد بود، آبیاری صورت نگیرد.
○ اگر رطوبت کمتر از 2۰ درصد بود، آبیاری با نرخ2۰ سیسی بر دقیقه انجام گیرد. برای اینکار باید پالس هایی با duty cycle %25 به موتور ارسال گردد .
○ اگر رطوبت بین 2۰ تا 5۰ درصد بود نیز دو حالت رخ میدهد. اگر دما کمتر از 25 درجهی سلسیوس بود ،آبیاری لازم نیست. اگر دما بیشتر از 25 درجهی سلسیوس بود، آبیاری با نرخ 1۰ سی سی بر دقیقه صورت گیرد )duty cycle پالس ارسالی به موتور: 1۰%(.
نکته های پیاده سازی
• قبل از شروع پیاده سازی پروژه حتما نحوه کارکرد پروتکل های I2C وUART را به صورت دقیق مطالعه کنید. )تسلط شما بر این دو پروتکل در زمان تحویل پروژه سنجیده میشود.(
• برای شبیهسازی از Proteus و برای توسعه کد از برنامهی Arduino IDE استفاده نمایید.
• در ادامه، جزئیات مربوط به هر یک از دو بورد بیان شده است:
o TH-Board: این گره با استفاده از پروتکل I2C به سنسور 25SHT متصل است، برای اینکار تنها کافی است دو پورت SCL و SDA را به پورتهای متناظر سنسور متصل کنید. در بورد Arduino Uno پورتهای SCL و SDA با پورتهای ورودی آنالوگ مشترک است. برای آشنایی با نحوهی کار با پروتکل I2C در آردوینو که توسط کتابخانه Wire انجام میگیرد می توانید به لینک مراجعه کنید.
همچنین میتوانید با اتصال یک Virtual Terminal به پورت debug سنسور از درست بودن کدهای خود اطمینان حاصل کنید. پورت دیباگ در واقع دادهی سنسور را به صورت سریال به خروجی میدهد.
این بورد باید دو نوع داده دما و رطوبت را برای گره مرکزی ارسال کند .همچنین، این بورد دستورات مربوط به حرکت موتوری که به شیر آب متصل است را از بورد گره مرکزی دریافت میکند .
برای اینکار پروتکل مشخصی وجود ندارد. میتوانید با استفاده از خلاقیت خود راهکاری برای اینکار پیشنهاددهید. برای مثال یک ایده میتواند استفاده از delimiter برای جداسازی انواع داده باشد.
دقت کنید که برای آبیاری باید از شیرهای) valve( قابل کنترل با ولتاژ استفاده شود، ولی برای راحت تر شدن تمرین ،فرض کرده ایم که PWM ساخته شده به یک stepper motor ارسال میشود.
o Main-Board: گره اصلی وظیفهی گرفتن دادههای ارسال شده از گره و پردازش و تصمیمگیری بر اساس آنها و نمایش اطلاعات و تصمیم مرتبط با آنها روی یک LCD را دارد. برای شروع ماژول LM041L با اندازهی 2۰x4 را از لیست کتابخانههای Proteus به پروژه اضافه کنید. با استفاده از مستندات موجود در اینترنت ،LCD را به Arduino متصل کنید )پایهی En را به GND متصل کنید(.
کتابخانهی LiquidCrystal را مانند قسمت قبلی نصب کنید. با استفاده از تکهکدی از درستی اتصال خود مطمئن شوید. حال با اتصال یک ماژول بلوتوث به ورودی سریال آردوینو، دیتای خروجی TH-Board را دریافت و در LCD نمایش دهید. زمانی که مقدار سریال را میخوانید امکان دارد در میانهی ارسال داده بوده باشد. مثلا فرض کنید گره اول برای شما عدد 1234 را ارسال کند ولی زمانی که شما داده را میخوانید داده به صورت کامل خوانده نشده باشد و تنها مقدار 12 را دریافت کنید! این مشکل را در نظر بگیرید و آنرا رفع کنید .
• ارتباط بلوتوث تفاوتی با ارتباط سریال توسط سیم ندارد. در واقع ارسال بیسیم دادهها در لایههای پایینتر مدیریت شده و شما تفاوتی بین این دو انتقال حس نخواهید کرد. )برای ارسال دادهها بین دو آردوینو از طریق بلوتوث میتوانید از این لینک استفاده کنید(.
• ارتباط دو ماژول بلوتوث داده شده در محیط شبیهسازی Proteus به صورت مجازی برقرار میشود. برای اینکار روی این ماژولها دوبار کلیک کنید و physical port یکی از ماژولها را برابر COM3 و دیگری را برابر COM4 قرار دهید. سپس با استفاده از یکی از برنامههای ساخت ارتباط مجازی مثلا com0com این دو پورت را به هم متصل کنید.
پرسش ها
1. در مورد بلوتوث، از چه فرکانسی برای ارتباط بی سیم استفاده میشود؟ در صورت وجود چند دستگاه بلوتوث در اطراف هم، چگونه از تداخل داده های ارسالی دستگاه ها جلوگیری میشود؟ نیازی به ارایه جزییات پروتوکل ارتباطی بلوتوث نیست. بیان مفاهیم کلی کافی است .
2. اگر نیاز به اتصال چند سنسور مختلف که از پروتکل I2C استفاده میکنند باشد آیا می توان همه را به تنها پرت موجود I2C در AVR متصل کرد؟ در این صورت، چگونه تضمین میشود که داده های ارسال آنها با هم تداخل نمیکند؟
3. نحوهی ساخت PWM را شرح دهید.
4. طراحی مفهومی این تمرین را رسم کنید و تنها اتصالات و اجزای اصلی را نمایش دهید.
نکته های تحویل تمرین
• این تمرین تحویل حضوری دارد و باید در قالب گروههای چهار نفره انجام شود. موعد تحویل تمرین در صفحه درس اعلام شده است .
• در کنار یادگیری مفاهیم بیان شده ، نحوه کدنویسی خوانا )ماژولار بودن کد ،استفاده از نامگذاری مناسب، استفاده درست از توابع و …( در این تمرین اهمیت بالایی دارد .
• گزارش کار کاملی از مراحل انجام تمرین ، نتایج شبیه سازی ،تصاویر و نکات هر بخش و پاسخ به سوالات تهیه شود.
• پیشنهاد میشود هر چه زودتر پیاده سازی ها را شروع کنید و قسمتهای مختلف این تمرین بین افراد گروه تقسیم شود. البته همهی افراد باید تسلط کافی به مباحث تمامی بخشهای پروژه داشته باشند.
• اگر پروژه تان موفقیت آمیز بود، میتوانید روی تجاری سازی آن فکر کنید!! )لیست گلدانهای هوشمند دیجی کالا(
موفق باشید 🙁




Reviews
There are no reviews yet.