آردوینو شیلد Multifunction پروژه های آردوینو

آموزش کار با شیلد مولتی فانکشن آردوینو کنترل سرو موتور و خروجی رله Relay

Multifunction-Arduino-servo-and-relay--digispark
نوشته شده توسط پریسا پوربلورچیان

استفاده از شیلد باعث کاهش سیم کشی و سادگی در نصب می‌باشد. همچنین وجود یک شیلد با سنسورهای پرکاربرد و خروجی آنالوگ و دیجیتال از اهمیت ویژه‌ای برخوردار است. شیلد مولتی فانکشن آردوینو Multifunction با در اختیار داشتن سنسورها و رابط کاربری یکی از پرطرفدارترین شیلدهای آردوینو به شمار می‌آید. شیلد مولتی فانکشن از سنسور دما DS18B20، ال ای دی، پتانسیومتر ۱۰K، رابط گیرنده مادون قرمز، رابط سریال برای اتصال ماژول‌های دارای خروجی سریال، ۴ کلید فشاری،بیزر و نمایشگر سون سگمنت، سنسور LM35، ماژول تشخیص کلام Voice Rwcognition، mpu6050 تشکیل شده است. به صورت کلی شیلد مولتی فانکشن را به سه قسمت تقسیم و تحلیل خواهیم کرد. بخش اول ورودی و خروجی اصلی، بخش دوم خواندن سنسورها و بخش سوم اجرای پروژه و کنترل از طریق اپلیکیشن است. در ادامه با مرجع آردوینو به زبان فارسی ، دیجی اسپارک همراه باشید.

 

یک: ورودی خروجی Input / Output

بخش اول به بررسی سنسورها و رابط‌های قرار گرفته بر روی ماژول می‌پردازیم. بر روی شیلد ۱۲ پایه پرکاربرد GND, 5V, 5, 6, 9, A5 جداگانه قرار گرفته است. می‌توانید با لحیم کاری پین هدر نری و یا مادگی بر روی شیلد دیگر پایه های دیجیتال و آنالوگ را در اختیار داشته باشید. ۴ میکروسوییچ S1, S2, S3, RESET  بر روی شیلد قرار گرفته است. توسط سه کلید S می‌توانید کنترل سنسورها را به راحتی در اختیار داشته باشید. با فشردن هر یک از سه کلیدها و تعریف در کد برنامه وضعیت عملکرد سنسورها تغییر خواهد کرد. همچنین می‌توانید توسط آن منو Menu تعریف کنید. با فشردن کلید RESET برنامه ریست خواهد شد.

 

دو: ارتباط با سنسور Reading Sensor

برای اجرا و عملکرد هر یک از سنسورها و رابط‌های قرار گرفته شده بر روی شیلد Shield نیاز به فراخوانی کتابخانه داریم. با فراخوانی کتابخانه هر یک از سنسورها همانند LM35، DS18B20، SRF05 و … دیتای سنسورها دریافت و خوانده خواهد شد. این بخش بسیار مهم خواهد بود. فراخوانی کتابخانه و نحوه‌ی اتصال سنسورها به شیلد از اهمیت ویژه‌ای برخوردار است. در ادامه آموزش‌های شیلد مولتی فانکشن آردوینو به بررسی تمامی سنسورهای به کار رفته و راه اندازی آن‌ها خواهیم پرداخت.

 

سه: اجرا و کنترل پروژه

پس از انتخاب سنسورهای مورد نظر و فراخوانی کتابخانه‌های آن، برنامه مورد نظر را اجرا خواهیم کرد. شیلد مولتی فانکشن آردوینو Multifunction قابلیت اتصال همزمان چند ماژول و استفاده از رابط‌های آن را در طول اجرای یک پروژه دارد. به عنوان مثال با اتصال سنسور SRF به شیلد مولتی فانکشن، پس از تشخیص فاصله، عدد فاصله توسط سون سگمنت قرار گرفته شده بر روی ماژول نمایش داده می‌شود. با نزدیک شدن شی مورد نظر به سنسور SRF، توسط ماژول بیزر آلارم ارسال خواهد شد. از این رو با فراخوانی هر یک از سنسورها و کتابخانه‌های آن‌ها پروژه‌های متفاوتی همانند کنترل سرو، نمایش دما و طراحی ترموستات، فاصله سنج و … اجرا خواهد شد. در ادامه با یک آموزش کاربردی و استفاده همزمان از چند سنسور و رابط شروع خواهیم کرد.

Arduino Multifunction shield tutorial 2-digispark

معرفی پروژه شیلد مولتی فانکشن

همانطور که توضیح داده شد، پروژه‌های متنوعی در خصوص این شیلد در دست تولید است. در این پست توسط شیلد مولتی فانکشن آردوینو Multifunction کنترل یک سرو موتور و چرخش در زوایای متفاوت را در اختیار خواهیم داشت. در ادامه به بررسی ورودی و خروجی، فراخوانی کتابخانه‌های مورد نیاز، اتصالات و در نهایت کد برنامه خواهیم پرداخت.

 

وسایل مورد نیاز

شیلد آردوینو مولتی فانکشن Arduino Multifunction Shield

برد آردوینو Arduino UNO 

سرو موتور SG90

ماژول رله Relay

کابل فلت نری به مادگی

کابل فلت مادگی به مادگی

 

سرو موتور SG90

سرو موتور SG90، ماژولی با ابعاد کوچک و کم وزن با توان خروجی بالایی است. شافت خروجی سرو موتور Servo motor SG90 توانایی چرخش با زاویه ۱۸۰ درجه در هر مسیر ۹۰ درجه را دارند.خروجی سرو موتورها به صورت پالس بوده و در حالت “۰”  با پالس ۱٫۵ میلی ثانیه در حالت وسط ، در “۹۰” با پالس ۲ میلی ثانیه تنها در جهت راست، در “۹۰-” با پالس ۱ میلی ثانیه تنها در حالت چپ خواهد چرخید. ولتاژ کاری سرو موتور Servo motor SG90 بین ۴٫۸ تا ۵ ولت DC است. سرو موتور SG90 دارای سه پایه به ترتیب GND , VCC , Signal می‌باشد. سیم قهوه ای پایه GND ، سیم قرمز پایه VCC و سیم نارنجی پایه سیگنال (S) می‌باشد.

 

رله Relay

ماژول رله Relay دارای ولتاژ ۵ ولت و ولتاژ خروجی ۲۲۰ ولت می‌باشد. رله Relay دارای توان ۱۰ آمپر است و برای پروژه‌های DIY مناسب می‌باشد.  رله Relay در الکترونیک همانند کلید عمل می‌کند. در واقع رله‌ها سوییچ‌هایی هستند که مدارهای الکترونیکی را باز و بسته می‌کنند. رله در خروجی دارای ۳ پایه می‌باشد. پایه وسط مشترک و دو پایه کناری یکی NO به مفهوم Normally Open یعنی به صورت پیش فرض در حالت باز قرار دارد. پایه دیگر NC به مفهوم Normally Close یعنی به صورت پیش فرض در حالت بسته قرار دارد. برای اطلاعات بیشتر به پست شیوه اتصالات رله در کنترل وسایل برقی مراجعه کنید. به طور کلی رله برای انتقال جریان در مدار های الکتریکی کاربرد دارد. در این آموزش نیاز به دو رله خواهیم داشت. از این رو می‌توانید از رله ۲ تا ۴ کانال استفاده کنید. در این آموزش از رله چهار کانال استفاده شده است، که انتخاب رله دلخواه است.

 

اتصالات پروژه مولتی فانکشن

همانطور که در تصویر زیر مشخص شده است، شیلد مولتی فانکشن با در اختیار داشتن پایه‌های پرکاربرد روی شیلد تا حدودی عدم نیاز به پورت‌های دیگر را کاهش داده است. شیلد را در جهت صحیح مقابل خود قرار دهید. پایین شیلد سمت راست ۱۲ پایه در سه ردیف چهارتایی در کنار یکدیگر قرار گرفته‌اند. این پایه‌ها به ترتیب GND، تغذیه ۵ ولت، پایه‌های دیجیتال ۵،۶،۹ و پایه آنالوگ A5 می‌باشد. جهت سهولت اتصالات در کدهای برنامه از این ۴ پایه دیجیتال و آردوینو استفاده خواهیم کرد. دقت کنید هیچ تفاوتی در انتخاب پایه‌ها وجود ندارد و تنها با لحیم کاری پایه‌های اصلی بر روی شیلد، تمامی پایه‌های دیجیتال و آنالوگ را در اختیار خواهید داشت.

  • پایه سیگنال S سرو موتور SG90 را به پایه ۹ شیلد مولتی فانکشن اتصال دهید.
  • پایه VCC سرو موتور SG90 را به پایه ۵ ولت شیلد مولتی فانکشن اتصال دهید.
  • پایه GND سرو موتور SG90 را به پایه GND شیلد مولتی فانکشن اتصال دهید.
  • پایه VCC ماژول رله Relay را به پایه GND شیلد مولتی فانکشن اتصال دهید.
  • پایه GND ماژول رله Relay را به پایه ۵ ولت شیلد مولتی فانکشن اتصال دهید.
  • پایه ورودی یک IN1 ماژول رله Relay را به پایه ۵ شیلد مولتی فانکشن اتصال دهید.
  • پایه ووردی دو IN2 ماژول رله Relay را به پایه ۶ شیلد مولتی فانکشن اتصال دهید.

Arduino Multifunction shield tutorial-digispark

 

فراخوانی کتابخانه شیلد مولتی فانکشن

همانطور که در مقدمه آموزش گفته شد، برای خواندن اطلاعات ماژول‌ها نیاز به فراخوانی کتابخانه ماژول مورد استفاده خواهیم داشت. در این آموزش از سرو موتور SG90 به عنوان خروجی اصلی شیلد مولتی فانکشن آردوینو Multifunction استفاده می‌کنیم. برای راه اندازی سرو موتور SG90 نیاز به فراخوانی کتابخانه سرو خواهیم داشت. کتابخانه Servo به صورت پیش فرض در لیست کتابخانه های آردوینو Arduino قرار گرفته شده است. آن را انتخاب و فراخوانی کنید. همچنین لینک دانلود کتابخانه سرو Servo به صورت مجزا در صفحه محصول سرو موتور SG90 در قسمت دانلود قرار گرفته است. با کلیک بر روی آن کتابخانه را دانلود و در مسیر Arduino/Libraries کپی کنید. اگر شیوه فراخوانی کتابخانه در آردوینو را نمیدانید، به پست آموزش نصب کتابخانه در آردوینو مراجعه کنید.

 

 

کد آردوینو شیلد مولتی فانکشن و سرو

 

محدودیت در دسترسی کامل به این مجموعه آموزش

 

دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندس‌های دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید.

 

 

تحلیل کد مولتی فانکشن

در ابتدا کد را از طریق کلید میانبری که برای انتقال کدها در نظر گرفته شده است، در نرم افزار آردوینو جایگذاری کنید. کدهای برنامه در هر خط تعریف شده است. پس از اتصال سرو موتور و رله به شیلد مولتی فانکشن برنامه را اجرا خواهیم کرد. همانطور که بر روی شیلد نمایان است، سه کلید S1-A1، S2-A2, S3-A3 بر روی شیلد مولتی فانکشن آردوینو Multifunction قرار گرفته شده است. با فشردن هر یک از سه کلید سرو در زوایای تعریف شده به چرخش در می‌آید. ابتدا در برنامه کتابخانه سرو موتور را فراخوانی می‌کنیم. سپس پایه‌های رله و نمایشگر سون سگمنت را تعریف خواهیم کرد. در این پروژه دو رله برای خروجی در نظر گرفته شده است. با انتخاب دو حالت LOW و HIGH وضعیت هر یک از رله‌ها را در طول برنامه تعریف خواهیم کرد. سپس پایه سیگنال سرو موتور را در کد برنامه تعریف می‌کنیم. سه کلید در برنامه به عنوان ورودی اصلی تعریف خواهند شد. با هر بار فشردن کلیدها آلارم توسط بیزر قرار گرفته شده بر روی ماژول به صدا در خواهد آمد. همچنین کلید RESET برای ریست کردن پروژه تنظیم شده است. با هر بار ریست کردن مولتی فانکشن، رله‌ها به وضعیت ثابت تبدیل گشته و سرو موتور به حالت اولیه باز خواهد گشت. حال به بررسی کلیدها و تغییرات ماژول رله و سرو موتور خواهیم پرداخت.

 

کلید S1 – A1

با فشردن کلید S1-A1  هر دو رله فعال شده و روشن خواهد شد. با روشن شدن رله فرمان به سرو موتور ارسال شده و سرو با زاویه ۹۰ درجه به چرخش در خواهد آمد.

کلید S2 – A2

با فشردن کلید S2-A2 رله اول فعال و رله دوم غیر فعال خواهد شد. سپس سرو با زاویه ۱۸۰ درجه به چرخش در خواهد آمد.

کلید S3 – A3

با فشردن کلید S3-A3 رله دوم فعال و سپس رله اول غیر فعال خواهد شد. سپس سرو با زاویه ۹۰ درجه به چرخش در خواهد آمد. مجددا با فشردن کلید S1 – A1 سرو به چرخش در آمده و به جهت اولیه یاز خواهد گشت.

 

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

 

پروژه

اخیرا تصمیم گرفته‌ایم برای تعامل بیشتر با شما کاربران و ایجاد موقعیتی در راستای رقابت دانش کاربران، در انتهای هر آموزش یک پروژه تعریف می‌کنیم. به اولین کاربری که به پروژه تعریف شده پاسخ صحیح بدهد، بن خرید به ارزش ۳۰ هزار تومان از فروشگاه دانشجو کیت ارایه خواهد شد. پروژه: کدهای این آموزش را جوری تغییر دهید که با فشردن کلید A1 سرو ۳۰ درجه حرکت کند و روی سگمنت عدد ۳۰ را نمایش دهد. سپس با فشردن کلید A2 سرو ۶۰ درجه حرکت کند و روی سگمنت عدد ۶۰ را نمایش دهد. در نهایت با فشردن کلید A3 سرو ۹۰ درجه به عقب برگشت کند و روی سگمنت عبارت ۹۰- را نمایش دهد.

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

 

درباره نویسنده

پریسا پوربلورچیان

تولید کننده محتوا / کارشناس IOT

زندگی یعنی پژوهش و فهمیدن چیزی جدید

تلاشم بر این است تجربیاتم در زمینه IOT‌ را به بهترین شکل با شما در میان بگذارم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۴۴ دیدگاه

    • سلام
      در خط هایی که دستورات WriteNumberToSegment تعریف شده است، باید تغییرات اعمال کنید.

  • سلام خانم مهندس یه سوال -۹۰ با کد شما نمیشه نوشت . میشه برای نوشتن روی سگمنت از کدی که خودم بلدم استفاده کنم؟؟ که منفی هم میتونه بنویسه

    • سلام مجدد
      پروژه بررسی شد. در سون سگمنت اعداد نمایش داده نمی‌شود. فیلمی از نحوه ی عملکرد پروژه ضمیمه کنید تا بررسی شود.
      ممنونم.

      • سلام خانم پوربلورچیان بنده فایل فیلم را ضمیمه کردم همانظور که مشاهده میکنید رله و سروو به درستی کار میکند و سگمنت هم عدد ۰ را واضح نشان میدهد اما عدد ۳ یا ۶ یا ۹ را به صورت کمرنگ و لحظه ای نشان میدهد . اصول کار درست است اما نمیدانم چرا دو عدد با هم نشان نمیدهد . خیلی روش کار کردم ولی به نتیجه نرسیدم . حتی از دستور MFS.write نیز استفاده کردم اما بازم نشد . لطفا راهنمایی کنید که چطور اعداد صحیح نشان دهیم تشکر
        http://s8.picofile.com/file/8321778584/VID_20180315_153233_1_.mp4.html

        • سلام مجدد
          پروژه شما مجددا بررسی شد و با توجه به ارسال فیلم و نحوه ی صحیح اجرای آن، کد پذیرفته است. بن تخفیف ۳۰ هزار تومانی از طریق ایمیل برای شما ارسال خواهد شد. لطفا پس از دریافت کد و استفاده از آن از همین طریق اعلام نمایید. در خصوص نمایش عدد صحیح در آموزش های بعدی حتما به آن خواهیم پرداخت.
          موفق باشید.

            • ببخشید من میخوام قبل عید خرید انجام بدم لطفا سریعتر ارسال کنید تا چند روز دیگه من احتمالا مسافر هستم سپاس

              • سلام
                به هنگام فروش ویژه و تخفیفات، کلبه بن های سایت غیر فعال میشوند. از این رو چنانچه بن هم برای شما ارسال شود، امکان استفاده در جشنواره خلاقیت نوروزی وجود ندارد. انشالله در پروژه های بعدی و بعد از اتمام فروش ویژه فرصت خوبی برای استفاده از این تخفیفات خواهید داشت.

  • سلام، یه سوالی در مورد کامپایلر آردوینو داشتم. چون با توجه به پست های شما احساس کردم پروژه های زیادی باهاش انجام دادین و تجربه خوبی دارین. من خودم مهندس الکترونیک هستم و حدود ۱۰ سالی میشه که به طور حرفه ای الکترونیک کار میکنم. برای AVR یه دو سالی با BASCOM کار کردم ولی دیدم به درد کار حرفه ای نمیخوره و رفتم سراغ WinAVR و حسابی ازش راضی ام. از روی کنجکاوی و اینکه خیلی جاها در مورد بردهای آردوینو مطلب دیدم، کامپایلر را نصب کردم و یه برنامه چشمک زن ساده را کامپایل کردم. وقتی سرعت کامپایل و پروگرام را دیدم واقعا شوکه شدم که چطور دیگران با این سرعت داغون میتونن با این کامپایلر کار کنن؟ سوال اصلی من از شما اینه که آیا با این کامپایلر کار حرفه ای و تولیدی انجام دادین و اینکه چی بوده؟

    • با سلام و تشکر از شما
      چنین مواردی را که می‌فرمایید بنده تا به حال با آن مواجه نشده ام. البته این سرعت بسته به نوع برد و … قابل تغییر است. موضوعی که هست، کامپایلر آردوینو بسیار ساده و هوشمند است. یکی از مهم‌ترین مواردی است که باعث شده طرفداران زیادی پیدا کند.

  • سلام، میخواستم ببینم یعنی سوال من اینقدر سخت بوده که هنوز جواب ندادین یا اینکه …

    • سلام مجدد
      ضمن عذرخواهی تاخیر در پاسخگویی، با توجه به اینکه سوال شما بی ارتباط با آموزش بود، اولویت در پاسخگویی برای کامنت های مرتبط و رفع عیب دیگر کابران می‌باشد.

  • سلام.
    من شیلد مولتی فانکشن رو خریدم. بیزر و فقط صدای تیک تیک میده.
    تماس گرفتم با فروشنده میگه راه اندازی این دیجیتال HIGH-LOW نیست PWM هست.
    ولی شما هم الان با HIGH-LOW فعال کردید. ممکنه نوع برد فرق داشته باشه؟

    • درود
      در مورد بردی که خریداری کرده اید، اطلاعاتی ندارم.
      موفق باشید.

  • سلام . وقت بخیر .
    من برای گروه تلگرامی پول واریز کردم ولی هنوز عضو نشدم . ۰۹۱۷۹۵۲۴۶۷۹ حامد کریمی

    • درود
      کاربر گرامی پس از پرداخت هزینه یک فایل جهت ورود به گروه برای شما نمایش داده می‌شود. با کلیک کردن بر روی آن وارد گروه خواهید شد.

  • سلام خانم پوربلورچیان من پزشک هیتم رزیدنت داخلی اشنایی با الکترونبک دارم مدتی قبل به غکر چگالی سمجی مایع اسیت افتادم یک سنیور غلطت خریداری کذدم و یک MULTIFUNCTION SHIELD حاالا راهنمایی بفرمایید چه جوری میتونم سنیور به دسنگاه وصل و خروجی سنسور ذو به صورت یک عدد ببینم ممنون

    • با سلام
      دستورات کدنویسی آردوینو یکسان است. برای شیلد مولتی فانکشن علاوه بر استفاده از دستورات و توابع از کتابخانه ها هم میتوانید استفاده کنید.
      int Buzz = 3;

      void setup() {
      pinMode(Buzz, OUTPUT);
      }

      void loop() {
      tone(Buzz,val,2000);
      // یا از دستور زیر استفاده کنید.
      digitalWrite(Buzz,HIGH/LOW);
      }

  • سلام . متاسفانه من نتونستم بیزر روی مولتی فاکشن راه اندازی کنم . بعد high و low برد چگونه میشه تعریف کرد چون در حالتhigh در برنامهLED روی برد خاموش و برعکسش روشن میشه . لطفا راهنمایبم کنید

    • با سلام
      دستورات کدنویسی آردوینو یکسان است. برای شیلد مولتی فانکشن علاوه بر استفاده از دستورات و توابع از کتابخانه ها هم میتوانید استفاده کنید.
      int Buzz = 3;

      void setup() {
      pinMode(Buzz, OUTPUT);
      }

      void loop() {
      tone(Buzz,val,2000);
      // یا از دستور زیر استفاده کنید.
      digitalWrite(Buzz,HIGH/LOW);
      }