استفاده از شیلد باعث کاهش سیم کشی و سادگی در نصب میباشد. همچنین وجود یک شیلد با سنسورهای پرکاربرد و خروجی آنالوگ و دیجیتال از اهمیت ویژهای برخوردار است. شیلد مولتی فانکشن آردوینو 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، توسط ماژول بیزر آلارم ارسال خواهد شد. از این رو با فراخوانی هر یک از سنسورها و کتابخانههای آنها پروژههای متفاوتی همانند کنترل سرو، نمایش دما و طراحی ترموستات، فاصله سنج و … اجرا خواهد شد. در ادامه با یک آموزش کاربردی و استفاده همزمان از چند سنسور و رابط شروع خواهیم کرد.
معرفی پروژه شیلد مولتی فانکشن
همانطور که توضیح داده شد، پروژههای متنوعی در خصوص این شیلد در دست تولید است. در این پست توسط شیلد مولتی فانکشن آردوینو Multifunction کنترل یک سرو موتور و چرخش در زوایای متفاوت را در اختیار خواهیم داشت. در ادامه به بررسی ورودی و خروجی، فراخوانی کتابخانههای مورد نیاز، اتصالات و در نهایت کد برنامه خواهیم پرداخت.
وسایل مورد نیاز
شیلد آردوینو مولتی فانکشن Arduino Multifunction Shield
سرو موتور 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 را به پایه ۶ شیلد مولتی فانکشن اتصال دهید.
فراخوانی کتابخانه شیلد مولتی فانکشن
همانطور که در مقدمه آموزش گفته شد، برای خواندن اطلاعات ماژولها نیاز به فراخوانی کتابخانه ماژول مورد استفاده خواهیم داشت. در این آموزش از سرو موتور 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 سرو ۹۰ درجه به عقب برگشت کند و روی سگمنت عبارت ۹۰- را نمایش دهد.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.
ببخشید تو کدوم خط دستور نوشتن سون سگمنت رو میده؟
سلام
در خط هایی که دستورات WriteNumberToSegment تعریف شده است، باید تغییرات اعمال کنید.
سلام خانم مهندس یه سوال -۹۰ با کد شما نمیشه نوشت . میشه برای نوشتن روی سگمنت از کدی که خودم بلدم استفاده کنم؟؟ که منفی هم میتونه بنویسه
سلام
لطفا توضیح دهید به چه دلیلی نمیتوان ۹۰ – را نمایش داد؟
چون فقط ورودی عدد دریافت میکنه و – عدد نیست
اگه کامل تر بگم چون در تابعی که تعریف کردید متغیر value را از نوع byte تعریف کردید و نمیشود غیر عدد به آن مقدار داد. لطفا یه راهنمایی برای نمایش اعداد منفی بفرمایید ممنونم
بله درست است. در آموزش های بعدی به این موضوع خواهیم پرداخت.
بله درست میفرمایید و در این مورد کد را میتوانید تعییر دهید.
یک کد میزارم میتونید با آن هردورو اجرا کنید
سپاس از همراهی شما
لینک پروژه:
http://s8.picofile.com/file/8321721842/MFS_proj.txt.html
سلام مجدد
پروژه بررسی شد. در سون سگمنت اعداد نمایش داده نمیشود. فیلمی از نحوه ی عملکرد پروژه ضمیمه کنید تا بررسی شود.
ممنونم.
سلام خانم پوربلورچیان بنده فایل فیلم را ضمیمه کردم همانظور که مشاهده میکنید رله و سروو به درستی کار میکند و سگمنت هم عدد ۰ را واضح نشان میدهد اما عدد ۳ یا ۶ یا ۹ را به صورت کمرنگ و لحظه ای نشان میدهد . اصول کار درست است اما نمیدانم چرا دو عدد با هم نشان نمیدهد . خیلی روش کار کردم ولی به نتیجه نرسیدم . حتی از دستور MFS.write نیز استفاده کردم اما بازم نشد . لطفا راهنمایی کنید که چطور اعداد صحیح نشان دهیم تشکر
http://s8.picofile.com/file/8321778584/VID_20180315_153233_1_.mp4.html
سلام مجدد
پروژه شما مجددا بررسی شد و با توجه به ارسال فیلم و نحوه ی صحیح اجرای آن، کد پذیرفته است. بن تخفیف ۳۰ هزار تومانی از طریق ایمیل برای شما ارسال خواهد شد. لطفا پس از دریافت کد و استفاده از آن از همین طریق اعلام نمایید. در خصوص نمایش عدد صحیح در آموزش های بعدی حتما به آن خواهیم پرداخت.
موفق باشید.
سلام و تشکر از شما هنوز بن ارسال نشده
ببخشید من میخوام قبل عید خرید انجام بدم لطفا سریعتر ارسال کنید تا چند روز دیگه من احتمالا مسافر هستم سپاس
سلام
به هنگام فروش ویژه و تخفیفات، کلبه بن های سایت غیر فعال میشوند. از این رو چنانچه بن هم برای شما ارسال شود، امکان استفاده در جشنواره خلاقیت نوروزی وجود ندارد. انشالله در پروژه های بعدی و بعد از اتمام فروش ویژه فرصت خوبی برای استفاده از این تخفیفات خواهید داشت.
سلام
ارسال خواهد شد. منتظر باشید.
سلام بن ارسال شد تشکر از شما
سلام
از اینکه اطلاع دادید، ممنونم.
سلام، یه سوالی در مورد کامپایلر آردوینو داشتم. چون با توجه به پست های شما احساس کردم پروژه های زیادی باهاش انجام دادین و تجربه خوبی دارین. من خودم مهندس الکترونیک هستم و حدود ۱۰ سالی میشه که به طور حرفه ای الکترونیک کار میکنم. برای AVR یه دو سالی با BASCOM کار کردم ولی دیدم به درد کار حرفه ای نمیخوره و رفتم سراغ WinAVR و حسابی ازش راضی ام. از روی کنجکاوی و اینکه خیلی جاها در مورد بردهای آردوینو مطلب دیدم، کامپایلر را نصب کردم و یه برنامه چشمک زن ساده را کامپایل کردم. وقتی سرعت کامپایل و پروگرام را دیدم واقعا شوکه شدم که چطور دیگران با این سرعت داغون میتونن با این کامپایلر کار کنن؟ سوال اصلی من از شما اینه که آیا با این کامپایلر کار حرفه ای و تولیدی انجام دادین و اینکه چی بوده؟
با سلام و تشکر از شما
چنین مواردی را که میفرمایید بنده تا به حال با آن مواجه نشده ام. البته این سرعت بسته به نوع برد و … قابل تغییر است. موضوعی که هست، کامپایلر آردوینو بسیار ساده و هوشمند است. یکی از مهمترین مواردی است که باعث شده طرفداران زیادی پیدا کند.
ببخشید این کد چیکار میکنه؟
WriteNumberToSegment(3 , 0);
تابع تعریف عدد در نمایشگر سون سگمنت است.
http://uupload.ir/view/mkxx_new_text_document.txt/
سلام
از توجه شما ممنونم.
پروژه بررسی شد و هنگام آپلود ارور میدهد. اشکالات را برطرف کنید و مجددا ارسال نمایید.
http://uupload.ir/view/enbs_new_text_document.txt/
سلام مجدد
کد بررسی شد و سون سگمنت عدد مورد نظر را نمایش نمیدهد. از نحوه ی عملکرد شیلد فیلم ضمیمه کنید تا بررسی شود.
با سلام
http://s9.picofile.com/file/8321793392/multiFunctionDigi.ino.html
کد اصلاح شده و اضافه ها حذف و کدهای لازم اضافه شده است
با تشکر
سلام
از توجه شما ممنونم.
در حال بررسی کد هستیم. منتظر باشید.
سلام، میخواستم ببینم یعنی سوال من اینقدر سخت بوده که هنوز جواب ندادین یا اینکه …
سلام مجدد
ضمن عذرخواهی تاخیر در پاسخگویی، با توجه به اینکه سوال شما بی ارتباط با آموزش بود، اولویت در پاسخگویی برای کامنت های مرتبط و رفع عیب دیگر کابران میباشد.
سلام.
من شیلد مولتی فانکشن رو خریدم. بیزر و فقط صدای تیک تیک میده.
تماس گرفتم با فروشنده میگه راه اندازی این دیجیتال 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);
}