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

مدیریت وسایل با ریموت مادون قرمز و گیرنده ۳۸KHz پکیج ۳۷ سنسور آردوینو

Arduino-Sensor-Kit-ir-remote-Module-digispark
نوشته شده توسط پریسا پوربلورچیان

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

 

 

ماژول گیرنده مادون قرمز Infrared

ماژول گیرنده مادون قرمز Infrared دارای فرکانس ۳۷٫۹ کیلوهرتز یا ۳۸ کیلوهرتز می‌باشد. گیرنده مادون قرمز دارای سنسور TL1838 اینفرارد گیرنده مادون قرمز است. ابعاد سنسور ۱۸۳۸، ۷٫۳ میلی متر است. محدوده پاسخگویی سنسور با توجه به اطلاعات گفته شده در دیتاشیت ۱۸ متر است. ولی با توجه به تستی که در طول پروژه انجام شد، بیشتر از ۷ متر سنسور پاسخگو نیست. ولتاژ کاری ماژول گیرنده مادون قرمز بین ۲٫۷ تا ۵٫۵ ولت است. همچنین زاویه دید ماژول گیرنده مادون قرمز ۹۰ درجه است. سنسوری بسیار سبک و تا حدود ۳ گرم می‌باشد. ماژول گیرنده مادون قرمز به تربیت دارای سه پایه Signal, VCC, GND می‌باشد. ابعاد ماژول گیرنده مادون قرمز ۲٫۵ * ۱٫۵ * ۱٫۵ سانتی متر است. در ادامه به بررسی و نحوه ی عملکرد سنسور گیرنده اینفرارد میپردازیم.

 

اینفرارد Infrared

اشعه مادون قرمز یا به عبارتی (Infrared Radiation (IR یک نوع اشعه الکترومغناطیسی می‌باشد. اشعه هایی مانند امواج رادیویی، اشعه ماورابنفش، اشعه ایکس و مایکروویو ها از این دسته می‌باشند. اشعه مادون قرمز قابل رویت برای چشم انسان نیست و تنها از طریق گرما حس می‌شود. اشعه مادون قرمز به صورت متمرکز، منعکس کننده و پلاریزه است. طول موج طیف مادون قرمز بین ۷۵۰ نانومتر تا ۱ میلی متر است. شاید این سوال در ذهن شما به وجود بیاید که طیف چیست و چگونه ایجاد میشود. طیف در واقع یک سیگنال سینوسی با فرکانس و دامنه مشخص است. در یک طیف یا به عبارتی اسپکتروم فرکانس های مختلف روی محور قرار گرفته اند و تغییرات دامنه و فاز و سیگنال در آن قابل دیدن و بررسی دیتاهای ارسالی می‌باشد. تغییرات دامنه و فاز در یک محور سینوسی و یا محور X نمایش داده می‌شود. به طور کلی طیف از شکل موج تولید می‌شود و  هر موج یک فرکانس را تولید می‌کند. مادون قرمز اینفرارد Infrared در ریموت های IR مانند ریموت تلویزیون، ریموت تهویه و یا ریموت درب استفاده شده است که با روشن و خاموش کردن هریک از کلید های ریموت پالس به گیرنده ارسال شده و ماژول گیرنده پس از پردازش فرکانس و دامنه پالس، فرمان را اجرا خواهد کرد.

 

هدف آموزش مدیریت وسایل با ریموت

در این آموزش با استفاده از ماژول گیرنده مادون قرمز و ریموت IR یک کنترل کننده نور اینفرارد طراحی می‌کنیم. با استفاده از یک ریموت IR و دو کلید ON و OFF خروجی را کنترل خواهیم کرد. در این آموزش از یک ال ای دی ۷ رنگ در خروجی ماژول استفاده می‌کنیم. در ادامه آموزش به بررسی وسایل مورد نیاز و کد برنامه خواهیم پرداخت.

 

اتصالات مدار:

  • پایه سیگنال (S) ماژول گیرنده مادون قرمز Infrared را به پایه ۱۱ آردوینو اتصال دهید.
  • پایه VCC ماژول گیرنده مادون قرمز Infrared را به پایه ۵ ولت آردوینو اتصال دهید.
  • پایه GND ماژول گیرنده مادون قرمز  Infrared را به پایه GND آردوینو اتصال دهید.
  • پایه سیگنال ( پایه بلند ) ال ای دی – LED را به پایه ۱۰ آردوینو اتصال دهید.
  • پایه کوتاه ال ای دی – LED را به پایه GND آردوینو اتصال دهید.

آموزش کار با ماژول گیرنده مادون قرمز 38khz و ریموت فرستنده با آردوینو از پکیج 37 سنسور

فراخوانی کتابخانه ماژول مادون قرمز

در آموزش مدیریت وسایل با ریموت مادون قرمز برای راه اندازی ریموت IR نیاز به کتابخانه IRRemote خواهیم داشت. لینک دانلود کتابخانه IRRemote در صفحه محصول ماژول ریموت IR با کنترل و رله در قسمت دانلود قرار دارد. با کلیک بر روی آن و دانلود کتابخانه IRRemote، آن در محل نصب آردوینو Arduino / Library ذخیره کنید. همچنین نحوه نصب کتابخانه در نرم افزار آردوینو در پست نصب کتابخانه در نرم افزار آردوینو کامل آموزش داده شده است، در صورت نیاز ابتدا مطالعه و سپس کتابخانه را فراخوانی کنید.

 

کد برنامه گیرنده مادون قرمز

 

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

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

شیلد آردوینو Arduino Shield UNO 

ماژول گیرنده مادون قرمز infrared Receiver sensor 

ماژول گیرنده مادون قرمز از پکیج ۳۷ سنسور آردوینو

ریموت کنترل IR

ال ای دی ۷ رنگ

 

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

 

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

پس از کامپایل برنامه سریال مانیتور SerialMonitor را باز کنید. سپس روی باد ریت ۹۶۰۰ تنظیم کنید. کلید های هر ریموت دارای کد منحصر به فرد است. ریموت استفاده شده در این آموزش تنها دو کلید ON و OFF دارد. بنابراین برای هر کلید، یک کد اختصاصی تعریف شده است. حال با فشردن کلید ON در سریال مانیتور، ماژول گیرنده سیگنال را دریافت و کد کلید ON بر روی سریال مانیتور نمایش داده می‌شود. همچنین با فشردن کلید OFF، کد اختصاصی آن هم در سریال مانیتور نمایش داده می‌شود. سپس باید کد ریموت استفاده شده را در کد آردوینو جایگزین کنید.

به عنوان مثال برای حالت اول کد کلید ON ریموت مورد استفاده من به صورت زیر است:

همانطور که در کد برنامه در خط ۱۹ مشاهده می‌کنید، کد کلید ON تعریف شده است. به این معنی که پس از دریافت کد و مطابقت کد دریافت شده، خروجی فعال گردد. حال باید کد منحصر به فرد کلید ریموت خود را جایگزین کنید. برای کلید دوم نیز به همین ترتیب می‌باشد.

کد کلید OFF ریموت مورد استفاده من به صورت زیر است:

که باید کد منحصر به فرد کلید دوم خود را جایگزین این کد در خط ۲۴ برنامه کنید. به این ترتیب هر دو کد کلید را در کد برنامه آردوینو تعریف کرده اید.

مدیریت وسایل برقی با ریموت فرستنده مادون قرمز و ماژول IR38Khz پکیج 37 سنسور آردوینو - دیجی اسپارک

تحلیل کد برنامه ماژول گیرنده مادون قرمز

پس از دریافت کد منحصر به فرد کلید های مورد استفاده از طریق سریال مانیتور Serial Monitor، طبق کد آردوینو با فشردن کلید اول (ON)، گیرنده مادون قرمز سیگنال را دریافت می‌کند. در خروجی ماژول گیرنده مادون قرمز Infrared از یک ال ای دی ۷ رنگ استفاده کرده ایم. حال پس از فشردن کلید اول (ON)، کد کلید در سریال مانیتور نمایش داده شده و ال ای دی ۷ رنگ روشن خواهد شد. حال با فشردن کلید دوم (OFF)، کد کلید در سریال مانتیور نمایش داده شده و ال ای دی ۷ رنگ خاموش خواهد شد. بدین ترتیب یک مدار فرمان با ریموت IR و گیرنده مادون قرمز اینفرارد طراحی می‌کنیم.

 

 

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

 

پروژه

اخیرا تصمیم گرفته‌ایم برای تعامل بیشتر با شما کاربران و ایجاد موقعیتی در راستای رقابت دانش کاربران، در انتهای هر آموزش یک پروژه تعریف می‌کنیم. به اولین کاربری که به پروژه تعریف شده پاسخ صحیح بدهد، بن خرید به ارزش ۳۰ هزار تومان از فروشگاه دانشجو کیت ارایه خواهد شد. پروژه: با استفاده از یک ریموت کنترل معمولی که در تمامی منازل موجود است. مانند ریموت کنترل تلویزیون یا پنکه و… به ۴ عدد رله فرمان ارسال کنید.

 

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

 

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

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

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

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

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

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

۴۴ دیدگاه

    • سلام
      همانطور که در متن آموزش گفته شده است، از هر ریموت کنترلی که استفاده می‌کنید باید کد هر کلید را دریافت و به کد برنامه Arduino انتقال دهید. در این آموزش از ریموت کنترلی با دو کلید ON , OFF استفاده شده است که با فشردن هر یک از آن ها در خروجی تغییراتی ایجاد خواهد شد.

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

    • من از کنترل گیرنده دیجیتال استفاده کردم و با زدن دکمه کانال شماره ۱ رله اول فعال و کانال ۲ رله اول خاموش و با زدن کانال ۳ رله دوم فعال و کانال ۴ رله دوم خاموش همینطور تا کانال ۷ و ۸ که به ترتیب رله چهارم رو فعال و غیر فعال میکنه.
      نمیدونم جای دیگه این کدها کارمیکنه یا نه ولی با کنترلی که من داشتم این کد ها کار کرد
      کد های هر کانال رو هم از سریال مانیتور دریافت کردم و سپس در برنامه وارد کردم

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

      • سلام. ابتدا رله ها را برای پایه های ۴و۵و۶و۷ آردوینو و به عنوان خروجی تعریف کردم و پایه ۱۱ به سیگنال گیرنده مادون قرمز ، سپس گفتم کد دریافتی از مادون قرمز را ابتدا در سریال مانیتور نشان بده سپس با تابع if شرط گذاشتم که اگه مثلا کانال ۱ از روی کنترل فشرده شد رله اول روشن شود و همینطور تا کانال ۸ رله ۴ خاموش شود.
        من در دانشجوکیت با همین ایمیل حساب دارم. تشکر از شما

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

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

  • با سلام این از پروژه
    #include
    int RECV_PIN = 11;
    int ledPin = 10;
    decode_results results;
    int r1=2;
    int r2=3;
    int r3=4;
    int r4=5;

    void setup(){
    Serial.begin(9600);
    irrecv.enableIRIn();
    }

    void loop() {
    if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    //رله شماره ۱
    if(results.value == 0xD7E84B1B){
    digitalWrite(r1,HIGH);
    }

    if(results.value == 0x97483BFB){
    digitalWrite(r1,LOW);
    }
    //رله شماره ۲
    if(results.value == 0x2F874B1B){
    digitalWrite(r1,HIGH);
    }

    if(results.value == 0x52643BFB){
    digitalWrite(r1,LOW);
    }
    //رله شماره ۳
    if(results.value == 0xDFF8781B){
    digitalWrite(r1,HIGH);
    }

    if(results.value == 0x56483BFB){
    digitalWrite(r1,LOW);
    }
    //رله شماره ۴
    if(results.value == 0xE8E54B1B){
    digitalWrite(r1,HIGH);
    }

    if(results.value == 0x16463BFB){
    digitalWrite(r1,LOW);
    }

    irrecv.resume();
    }
    }

    • ببخشید فکر کنم این درست باشه توی انتقال دادن اشتباه شد
      #include
      int RECV_PIN = 11;
      int ledPin = 10;
      decode_results results;
      int r1=2;
      int r2=3;
      int r3=4;
      int r4=5;

      void setup(){
      Serial.begin(9600);
      irrecv.enableIRIn();
      }

      void loop() {
      if (irrecv.decode(&results)) {
      Serial.println(results.value, HEX);
      //رله شماره ۱
      if(results.value == 0xD7E84B1B){
      digitalWrite(r1,HIGH);
      }

      if(results.value == 0x97483BFB){
      digitalWrite(r1,LOW);
      }
      //رله شماره ۲
      if(results.value == 0x2F874B1B){
      digitalWrite(r1,HIGH);
      }

      if(results.value == 0x52643BFB){
      digitalWrite(r1,LOW);
      }
      //رله شماره ۳
      if(results.value == 0xDFF8781B){
      digitalWrite(r1,HIGH);
      }

      if(results.value == 0x56483BFB){
      digitalWrite(r1,LOW);
      }
      //رله شماره ۴
      if(results.value == 0xE8E54B1B){
      digitalWrite(r1,HIGH);
      }

      if(results.value == 0x16463BFB){
      digitalWrite(r1,LOW);
      }

      irrecv.resume();
      }
      }

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

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

  • سلام
    من یک مبتدی هستم یک سوال داشتم.
    ببخشید ولتاژ خروجی آردوینو که لامپ LED را روشن می کند چند ولت است؟
    آیا می توان با استفاده از رله در مدار ، LED های بیشتری را روشن کرد؟

    • سلام
      ولتاژ موزد نیاز آردوینو ۵ ولت DC است و ولتاژ وزودی آن هم بین ۷ تا ۱۲ ولت DC است. برای روشن شدن یک ال ای دی ساده هم تنها با اتصال برد از طریق کابل شیلد مخصوص آن به سیستم، ولتاز مورد نیاز برای روشن شدن ال ای دی تامین خواهد شد. همچنین از آداپتور هم برای تامین ولتاژ مورد نیاز می‌توانید استفاده کنید. آموزش های متعددی برای راه اندازی یک ال ای دی از طریق آردوینو منتشر شده است که می‌توانید از طریق لینک زیر مطالعه کنید.
      آموزش راه اندازی LED RGB

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

  • کدهای ریموت من به این صورت خونده میشه FF6897
    کتابخانه روهم نصب کردمولی وقی انو جایگزین کد شما میکنم خطایwas not declered in this scope
    رو میده

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

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

  • سلام ی سوال در مورد فرستنده مادون قرمز اشتم!
    اینکه فرستنده استفاده شده در کنترل های تلوزیون از چه مدلی هست؟
    من ی فرستنده با برد بالا میخاستم ممنون میشم راهنمایی کنید همچنید تغزیش کمتر باشه تو برد تاثیر داره؟

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

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

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