آموزش آردوینو پروژه های آردوینو

مدیریت سروو موتور با ریموت کنترل IR و برد آردوینو Arduino

نوشته شده توسط پریسا پوربلورچیان

تا چند سال پیش مدیریت انواع دستگاه های الکترونیکی با یک ریموت کنترل فقط در حد ایده بود. ولی امروزه به لطف حضور بردهای ماژولار و به خصوص برد آردوینو Arduino این موضوع عملی میشود. یک کنترل تلویزیون را در نظر بگیرید. در ساده‌ترین حالت بین ۱۵ تا ۴۰ دکمه برای حالت‌های مختلف دارد. تصور کنید با همین ریموت علاوه بر تلویزیون دیگر وسایل برقی در منزل و محیط کار را بتوانید مدیریت کنید.

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

درضمن توجه داشته باشید، که از هر ریموت مادون قرمزی میتوانید استفاده کنید. حتی کنترل تلویزیون یا کنترل کولر گازی و … پس از ریموت‌های موجود در منزل، هوشمندانه استفاده کنید.

دراین پست با ماژول ریموت کنترل و برد آردوینو Arduino به صورت بسیار ساده یک سروو موتور را از راه دور مدیریت می‌کنیم. به صورت عملی یک سروو موتور کاربرد گسترده‌ای دارد. در ادامه این آموزش جذاب با مرجع تخصصی آردوینو ، دیجی اسپارک همراه باشید.

 

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

ماژول فرستنده گیرنده IR با ریموت کنترل

سروو موتور SG90

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

چند رشته سیم

بردبورد (دلخواه)

 

سروو موتور SG90 دارای شافت خروجی ۱۸۰ درجه با قابلیت چرخش است. این سروو دارای سه پایه می‌باشد. سیم نارنجی PWM ، سیم قرمز VCC  و سیم قهوه ای Ground است.

سنسور IR همانند ال ای دی عمل میکند. در دسته دیود ها دسته بندی می شود. با این تفاوت که دامنه موج نورانی آن برای چشم انسان قابل دیدن نمی باشد. به طور معمول سنسور های IR که در پروژه های ساده و آزمایش ها استفاده میشود دارای باند فرکانسی ۳۸ کیلوهرتز می باشند. سنسور گیرنده استفاده شده در این آزمایش از نوع ۳ پایه می باشد.

 

اتصال به آردوینو

servo-ir-arduino-pin-digispark

پایه‌ی نارنجی سروو موتور را به پایه‌ی ۹ آردوینو که PWM است وصل میکنیم.

پایه‌ی قرمز سروو موتور را به پایه ی ۵ ولت آردوینو  که VCC است وصل میکنیم.

پایه‌ی قهوه ای سروو موتور را به پایه‌ی ground آردوینو وصل میکنیم.

پایه‌ی سیگنال (S) سنسور IR را به پایه‌ی ۱۱ آردوینو وصل میکنیم.

پایه‌ی VCC سنسور IR را به پایه‌ی ۵ ولت آردوینو وصل میکنیم.

پایه‌ی GND سنسور IR را به پایه‌ی GND آردوینو وصل میکنیم.

 

فراخوانی کتابخانه

در این آموزش از دو کتابخانه استفاده شده است. یکی Servo و دیگری IR. کتابخانه سروو به صورت پیشفرض در نرم افزار آردوینو موجود می‌باشد. جهت دریافت کتابخانه IR به صفحه محصول ماژول فرستنده گیرنده IRبا ریموت کنترل مراجعه کنید. لینک دانلود در انتهای صفحه قرار دارد.

چنانچه درفراخوانی کتابخانه به مشکل برخوردید به آموزش نصب کتابخانه در نرم افزار آردوینو که توسط همکارم نوشته شده است مراجعه کنید.

مدیریت وسایل منزل با ریموت مادون قرمز - دیجی اسپارک

 

کدهای برنامه:

کدهای زیر را پس از نصب کتابخانه‌ها در نرم افزار آردوینو کپی کنید.

سروو با ریموت کنترل کار نمیکند

خب معلومه کار نمیکنه! برای این منظور باید کدهای هر دکمه از ریموت را در برنامه تعریف کنیم. در این حالت با فشار دادن هر کدام از دکمه‌های ریموت، چراغ قرمز رنگ گیرنده متصل به برد آردوینو چشمک می‌زند. به این معنی که سیگنال ریموت IR را دریافت می‌کند. حال با استفاده از تابع زیر، یکی یکی مقادیر دکمه‌های ریموت را میخوانیم. این تابع نمایش متن روی سریال مانیتور نرم افزار آردوینو است. ما به ورودی این تابع مقدار فرکانس ir را پاس داده‌ایم.

ابتدا کدهای زیر را در محیط آردوینو کپی کرده و کامپایل کنید. سپس سریال مانیتور نرم افزار آردوینو را از بالا سمت راست باز کنید. حالا یکی یکی دکمه‌های ریموت را فشار میدهیم و مقداری که در سریال مانیتور نرم افزار آردوینو نمایش داده می‌شود، مربوط به همان دکمه است. کافیست مقادیر دریافتی را با مقادیر فعلی Defineها جایگذاری کنید. در این کدها که ریموت من با عدد ۱۶۷ شروع میشود.
 

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

 

در ادامه به ویدیو این آموزش توجه کنید.

 

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

 

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

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

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

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

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

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

۵۴ دیدگاه

    • سلام
      لطفا جهت راهنمایی دقیق تر موارد زیر را اعلام کنید:
      ۱- فایل را از حالت زیپ خارج کردید؟
      ۲- پس از دانلود آیا فایل را به فولدر آردوینو انتقال داده اید ؟

  • سلام مرسی از آموزشهای خوبی که میزارید
    فقط یک سوال داشتم دقیقا متوجه نشدم چطوری میتونم با این آموزش وسایل خونه رو کنترل کنم ؟ مثلاً لامپ خونه رو روشن خاموش کنم یا هر چیزه دیگه ای . میشه یکم بیشتر در مورد این مسائل توضیح بدید که چطوری میتونیم این کنترل ها رو رو وسایل منزل داشته باشیم
    مرسی

    • یا اینکه خودتون نوشتید کلیه کنترل های خونه رو حذف کنید و فقط از یه کنترل استفاده کنیم . دقیقا این کار به چه شکلی انجام میشه ؟

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

    • سلام
      ممنونم از توجه شما
      بله ، فقط دقت داشته باشید که ریموت شما IR باشد و با خواندن کد و فرکانس هر یک از دکمه های ریموت میتوانید از آن استفاده کنید.

  • سلام میشه از این برای خاموش روشن کردن لامپ و ال ای دی هم استفاده کرد؟لطفا هر کی میدونه جواب بده و این ریموتو از کجا بفهمیم irهست

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

    • سلام
      بله امکان پذیر می باشد. فقط دقت کنید باید از ماژول رله تک کانال استفاده کنید. با این تفاوت که به جای پایه pwm باید از یکی از پایه های دیجیتال استفاده نمایید و در کد بالا تغییرات را اعمال نمایید.

  • سلام خسته نباشید میخواستم بدونم باید چجوری به Syntax های یه کتابخونه دسترسی پیدا کنم منظورم اینه دستوراتشو باید از کجا پیدا کنم. و اینکه ممنون میشم اگهدکتابخونه Irlib رو اموزش بدین

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

  • با عرض سلام و خسته نباشید
    بعد ریختن بوت لودر روی میکرو کنترلر ، از این پس پروگرم کردن این میکرو به چه صورتی انجام میشه؟
    یعنی چند راه وجود داره
    مثلا میشه با مبدل usb به سریال پروگرمش کرد؟

    • سلام
      از توجه شما ممنونم
      دقت کنید که این آموزش با میکرو نیست و آموزش با بردهاى امبدد می باشد که بردهای امبدد مانند آردوینو در ساختارش مبدل usb به سریال دارند.

  • با عرض سلام و خسته نباشید.
    بنده تازه میخوام با رسیور مادون قرمز کار کنم.میخواستم بدونم که عددهایی که تعریف میکنین مثلا:
    #define BUTTON_5 16718055
    برای دکمه ۵ همیشه ثابت هستند.اگر نه چطوری پیداشون کنیم. ممنون از مطالب خوبتون.

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

  • سلام ممنونم بابت آموزش هاتون.
    من میخواستم با کمک آردوینو یک سری کد مشخص ir ارسال کنم. آموزشی هست بتونم ازش استفاده کنم؟

    • سلام
      از توجه شما ممنونم.
      برای ارسال یک کد خاص در متن آموزش کامل اشاره شده است، اگر منظورتان غیر از این کد است، شفاف توضیح دهید تا راهنمایی کنم.

      • این کد های ir که قرار دادید با توجه به خط چهارم برنامه مربوط به پروتکل nec هست. من از پروتکل کد های ir که دارم اطلاعی ندارم. خواستم بدونم الان که پروتکل مربوط به کد هام رو در اختیار ندارم میتونم بازم ارسالشون کنم؟

        • با سلام
          از دقت شما تشکر میکنم. بله همینطور است و در این آموزش از پروتکل NEC که یکی از پر مصرف ترین پروتکل ها در زمینه ارتباط IR میباشد، استفاده شده است. به طور کلی ۴ پروتکل معتبر برای ارتباط IR داریم.

  • با عرض سلام و خسته نباشید
    بعد از پروگرام کردن کد دوم، وقتی دکمه های ریموت را فشار میدهم چراغ چشمک زن برد آردوینو چشمک نمیزند و هیچ عددی هم در سریال مانیتور نرم افزاز نشان نمی دهد.
    آیا امکان دارد سنسور گیرنده IR سوخته یا معیوب باشد ؟
    اگر پایه های VCC و GND جا به جا به سنسور گیرنده وصل شده باشد سنسور می سوزد ؟
    لطفا راهنمایی کنید

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

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

  • با سلام خانم پوربلورچیان.میدونید این پیغام برای چی هست.در زمان کامپایل این پیغام رو میده.
    C:\Users\saber\Desktop\RotaryStewartPlatform-master\src_arduino_code\platform\platform.ino: In function ‘void loop()’:

    C:\Users\saber\Desktop\RotaryStewartPlatform-master\src_arduino_code\platform\platform.ino:332:38: warning: left shift count >= width of type

    kk=kk+(Serial.read()<= width of type

    kk=kk+(Serial.read()<<24);
    با سپاس از شما

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

      • فقط خانم مهندس من از ماژول برای ریموت استفاده نکردم خود چشمی رو که ۳ پایه داره وصل کردم.درست هم وصل کردم.چون با یه کد دیگه کار میکنه ولی با کد شما نه.
        ممنون از وقتی که گذاشتین برای پاسخ.سپاسگزارم

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

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

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

  • سلام وقت بخیر
    من برنامه دومی رو روی آردوینو ریختم ولی وقتی هر دکمه ای از ریموت کنترل رو میزنم توی سریال مانیتور عدد صفر رو نشون میده
    مشکل چیه؟

  • با سلام خانم پوربلورچیان.ببخشید کد های IRemot 16761405 با کد های ۰x80bca تفاوتی دارند؟من که کد رو آپلود میکنم با همین ۰x80bca کد ریموت ولی اصلا کار نمیکنه.میشه بفرمایید مشکل کجاست.ایا نوع کنترل فرقی داره؟چون اول برنامه نوشته بود پروتکل سونی ولی پروتکل شما NEC بود.ممنون از شما

    • سلام
      کاربر گرامی کدهایی که شما می‌فرمایید مربوط به پروتکل دیگری است. همچنین دقت داشته باشید که شما می‌بایست ابتدا کدهای هر کلید از ریموت را شناسایی کرده و سپس در کدهای آردوینو تعریف کنید. در غیر این صورت موارد جواب نمیدهد. در این آموزش هم از پروتکل nec استفاده شده است.

  • سلام
    واقعا از اموزش هاتون خوشم نمیاد
    ساخت همچین چیزی کلا سخت افزاری که کاری نداره ۱ ماژول و یه موتور
    برنامه نویسیش مهمه که شما فقط یه کد اماده میدین که عموم که میاد از دانشجو کیت کالارو میخرن بتونن استفادش کنن
    نه توابع کتابخونه اش توضیح میدین نه چگونگی کار سخت افزار رو میگید
    الان سایت دیجی اسپارک فقط یه سایت تبلیغاتی هست -_- 😐
    :[

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

  • سلام ممنون که آموزش ها به این خوبی میزارین.
    ببخشید من وقتی آپلودش میکنم این خطا رو میده
    Arduino: 1.8.5 (Windows 7), Board: “Arduino/Genuino Uno”

    C:\Users\Bilgisayar\Desktop\arman\Arduino\examples\measurment\measurment.ino:1:20: fatal error: BMP280.h: No such file or directory

    #include “BMP280.h”

    ^

    compilation terminated.

    exit status 1
    Error compiling for board Arduino/Genuino Uno.

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.

    • سلام
      از توجه شما ممنونم.
      این ارور مربوط به کتابخانه bmp280 است که در این کد و آموزش از آن استفاده نشده است! به نظر می‌رسد کدها ترکیب شده است.
      پبشنهاد میکنم در ابتدا یک Tab جدید در نرم افزار باز کرده و سپس از طریق کلیدهای میانبر ctrl+c و ctrl+v کد را به نرم افزار آردوینو انتقال دهید.
      نتیجه را اعلام کنید.