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

فهرست مطالب

مقدمه

در این آموزش با پروتکل IR آشنا می‌شویم و چگونگی کار با ماژول گیرنده‌ی IR را می‌آموزیم. در ابتدا به معرفی این سامانه و نحوه عملکرد آن می‌پردازیم. سپس نحوه راه اندازی و کار با ماژول آن را خواهیم دید. در نهایت نیز چند مثال کاربری را ارائه خواهیم داد.

آنچه در این آموزش یاد می گیرید

آشنایی با پروتکل IR

  • ارتباط IR (InfraRed) یا مادون قرمز، به دلیل استفاده آسان و قیمت مناسب، یکی از روش های متداول ارتباط بی‌سیم است. نور مادون قرمز با طول موجی بیشتر از نور مرئی، در محدوده بینایی انسان قرار ندارد. به همین دلیل گزینه مناسبی برای  ارتباطات بی‌سیم است. وقتی شما دکمه‌ای را روی کنترل نمایشگر خود می‌فشارید یک LED روی کنترل شما به صورت متوالی خاموش و روشن می‌شود. با این کار یک سیگنال مادون قرمز مدوله شده از کنترل به تلویزیون شما می‌رود. پس از دمدوله کردن این سیگنال دستور مورد نظر شما اجرا میشود.ماژول‌های گیرنده‌ی IR به منظور دریافت سیگنال IR مورد استفاده قرار می‌گیرند. این ماژول‌ها در محدوده فرکانسی 38Khz کار می‌کند. زمانی که به سنسور نور مادون قرمز با فرکانس کاری آن نتابد خروجی VOUT مقداری برابر VS (منبع تغذیه) دارد. با تابیدن نور مادون قرمز 38 کیلو هرتز این خروجی صفر می‌شود.
  • این ماژول‌ها دارای 3 پین هستند که به ترتیب مربوط به VOUT ، VDD و Ground می‌باشند. به همین دلیل استفاده از آن‌ها در مدار بسیار ساده است.

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

    قطعات مورد نیاز

    برد آردوینو Arduino UNO R3 × 1
    برد آردوینو لئوناردو × 1
    RGB LED × 1
    کیت گیرنده و فرستنده IR × 1
    سیم جامپر نری به نری × 1

    نرم افزارهای مورد نیاز

    Arduino IDE

    کد مربوط به هر دکمه ریموت را پیدا کنید

    در این قسمت می‌خواهیم با استفاده از آردوینو و یک فرستنده و گیرنده‌ی IR ارتباط بین آن‌ها را راه‌اندازی کنیم. برای اینکار ابتدا نیاز داریم تا کد مربوط به هر دکمه‌ی کنترل را بدانیم. با فشرده شدن هر دکمه سیگنال مشخصی به گیرنده ارسال می‌شود و گیرنده آن دریافت کرده و در پنجره Serial Monitor نمایش می‌دهد.

    سیم بندی

    کد

    برای راه اندازی مااژول IR نیاز دارید که کتابخانه‌ مربوط به IR آردینو را نصب کنید. این کتابخانه را از لینک زیر دانلود کرده و در پنجره‌ی Sketch گزینه Include library را باز کرده و IR Remote.h را انتخاب کنید.

    کتابخانه IR Remote.h

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

    /*
    
    * IR read codes
    
    * by Hanie kiani
    
    * https://electropeak.com/learn/
    
    */
    
    #include <IRremote.h> //including infrared remote header file
    
    int RECV_PIN = 7; // the pin where you connect the output pin of IR sensor
    
    IRrecv irrecv(RECV_PIN);
    
    decode_results results;
    
    void setup()
    {
    Serial.begin(9600);
    irrecv.enableIRIn();
    }
    
    void loop()
    {
    if (irrecv.decode(&results))// Returns 0 if no data ready, 1 if data ready.
    {
    int result = results.value;// Results of decoding are stored in result.value
    Serial.println(" ");
    Serial.print("Code: ");
    Serial.println(results.value); //prints the value a a button press
    Serial.println(" ");
    irrecv.resume(); // Restart the ISR state machine and Receive the next value
    }
    }
    

    بیایید با توابع مهم IR در کد آشنا شویم:

    int RECV_PIN = 7;
    
    IRrecv irrecv(RECV_PIN);
    

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

     irrecv.enableIRIn();
    

    شروع به دریافت سیگنال IR

     if (irrecv.decode(&results))
    

    سیگنال IR دریافت شده را دیکد میکند و آن را در متغیر results ذخیره میکند. در صورتی که سیگنالی دریافت نشود صفر برمیگرداند.

    irrecv.resume();
    

    مقادیر results قبلی را صفر کرده و دوباره منتظر دریافت سیگنال جدید میشود.

    مثال 1: با استفاده از ریموت کنترل IR اشیاء را کنترل کنید

    پس از اینکه کد هر دکمه را پیدا کردیم، می‌توانیم از آن برای کنترل دستورات استفاده کنیم. در این مثال یک ال ای دی RGB را به آردوینو متصل کرده و با کمک ریموت کنترل رنگ آن را تغیر می‌دهیم. برای اینکار چند دکمه‌ی مشخص روی کنترل را در نظر گرفته و کد آن‌ها را ذخیره می‌کنیم. در این مثال از دکمه‌های 1 تا 3 کنترل استفاده شده است. سپس به هر دکمه رنگ مشخصی را نسبت می‌دهیم. در نهایت با فشردن هر کدام از کلید‌های 1 تا 3، ال ای دی تغییر رنگ می‌دهد .

    برای استفاده از رنگ های بیشتر می‌توانید عدد مربوط به هر رنگ را اینجا پیدا کنید.

    سیم بندی

    Code

    #include <IRremote.h>
    
    const int RECV_PIN = 6;
    
     int bluePin = 12;
    
     int redPin = 9;  
    
    int greenPin = 10;  
    
    IRrecv irrecv(RECV_PIN);
    
    decode_results results;
    
    
    
    
    void setup(){
    
      Serial.begin(9600);
    
      irrecv.enableIRIn();
    
    
    
    
      pinMode(redPin, OUTPUT);
    
      pinMode(bluePin, OUTPUT);
    
    pinMode(greenPin, OUTPUT);
    
    }
    
    
    
    
    void loop(){
    
    
    
    
        if (irrecv.decode(&results)){
    
    int value = results.value;
    
    Serial.println(value);
    
            switch(value){
    
              case 12495: //Keypad button "1"
    
              //set color yellow
    
              analogWrite(redPin, 0x8B);
    
              analogWrite(greenPin, 0x8B);
    
              analogWrite(bluePin, 0x8B);
    
              break;
    
    
    
    
              case 6375: //Keypad button "2"
    
              //set color yellow
    
              analogWrite(redPin, 0xFF);
    
              analogWrite(greenPin, 0x00);
    
              analogWrite(bluePin, 0x00);
    
            break;
    
              case 539: //Keypad button "3"
    
               //set color red
    
              analogWrite(redPin, 0x00);
    
              analogWrite(greenPin, 0x00);
    
              analogWrite(bluePin, 0xFF);
    
              break;
    
              case 25979: //Keypad button "4"
    
              //set color light green
    
              analogWrite(redPin, 0x50);
    
              analogWrite(greenPin, 0x00);
    
              analogWrite(bluePin, 0xAE);
    
              break;
    
              }
    
    
    
    
            irrecv.resume();
    
        }
    
    }
    

    مثال 2: با ریموت کنترل IR سوپرماریو بازی کنید!

    در این قسمت می‌خواهیم با استفاده از ریموت کنترل IR به جای کیبورد رایانه، بازی محبوب Super Mario را انجام دهیم! برای این کار از آردینو  Micro یا Leonardo  استفاده می‌کنیم. آردینو را به وسیله USB به کامپیوتر متصل کرده و کد زیر را روی آن اجرا می‌کنیم.

    سیم بندی

    کد

    در این قسمت برای کنترل کیبرد به کتابخانه‌ی Keyboard.h نیاز دارید که میتوانید آن را از لینک زیر دریافت کنید:

    کتابخانه Keyboard.h

    /* 
    
     *  IR REMOTE CONTROL
    
     *  by Hanie kiani
    
     *  https://electropeak.com/learn/   
    
     */
    
    
    
    
    #include <IRremote.h>
    
    #include <Keyboard.h>
    
    
    
    
    
    
    
    int RECV_PIN = 6;
    
    IRrecv irrecv(RECV_PIN);
    
    decode_results results;
    
    
    
    
    void setup()
    
    {
    
      Serial.begin(9600);
    
      irrecv.enableIRIn(); // Start the receiver
    
      Keyboard.begin();
    
    }
    
    
    
    
    void loop() {
    
      if (irrecv.decode(&results)) 
    
      {  int value = results.value;
    
    Serial.println(value);         
    
          switch(value)
    
          {
    
            
    
            //Backward key is used for left key operation                 
    
            case 8925:  Keyboard.press(KEY_LEFT_ARROW); //left key
    
                             delay(100);
    
                             Keyboard.releaseAll();
    
                             break;
    
            //Forward Key is used for right key operation
    
            case 765:  Keyboard.press(KEY_RIGHT_ARROW); //right  key
    
                             delay(100);
    
                             Keyboard.releaseAll();
    
           //Forward Key is used for right key operation
    
            case -15811:  Keyboard.press(KEY_UP_ARROW); //up  key
    
                             delay(100);
    
                             Keyboard.releaseAll();
    
                             break;                        
    
          }  
    
        irrecv.resume(); // Receive the next value
    
      }
    
    }
    
    نکته
    دقت داشته باشید که کتابخانه‌ی مربوط به کیبورد آردوینو فقط بر روی برد‌های سریLeonardo, Esp Lora, Zero, Due d MKR Family و 32u4  قابلیت اجرا دارند.

    یک گام جلوتر

    • سعی کنید با استفاده از IR ریموت کنترل یک ربات را کنترل کنید.

    از این مطلب خوشتان آمد؟

    آخرین مطالت و آموزش ها را در ایمیلتان دریافت کنید:

    مطالب بیشتر

    Comments (16)

    • امیر Reply

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

      اکتبر 9, 2020 at 9:54 ق.ظ
      • مهران ملکی Reply

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

        دسامبر 1, 2020 at 4:06 ب.ظ
    • محمد حسین سعیدیان Reply

      سلام ممنون بابت مطالب خوبتون ولی یه سوال چهجور میشه یک امواج مادون قرمز رو باار دوینو ارسال کرد؟ یعنی از آردوینو به گیرنده

      اکتبر 17, 2020 at 11:25 ق.ظ
      • محمدرضا اکبری Reply

        باسلام. امیدوارم آموزش براتون مفید بوده باشه. بله، می توانید یک فرستنده ی مادون قرمز را به برد آردینو خود وصل کرده و از آن به عنوان فرستده ی امواج استفاده کنید. برای راهنمایی بیشتر به لینک زیر مراجعه کنید.
        https://learn.adafruit.com/using-an-infrared-library/sending-ir-codes

        اکتبر 21, 2020 at 11:46 ق.ظ
    • احسان Reply

      تشکر فراوان جناب مهندس
      عالی بود من دنبال ی دستور بودم ک شما اینجا بکار بردید .قشنگ و واضح بود
      عالی بود.????

      دسامبر 21, 2020 at 11:55 ق.ظ
      • مهران ملکی Reply

        نظر لطفتان است. خوشحالیم که کمک کننده بوده.

        دسامبر 27, 2020 at 9:45 ق.ظ
    • Mehdi Reply

      سلام
      Infrared/IR Remote Control Extender/IR Repeater Kit/Cable
      يه چنين چيزي رو ميتونم ايران پيدا كنم
      مرسي

      ژوئن 22, 2021 at 9:07 ق.ظ
      • مهران ملکی Reply

        سلام
        میتونید به لینک‌ زیر سر بزنید. خودتون هم همین عبارتی که فرمودید رو با کلمه خرید جست و جو کنید موارد مشابهی رو میتونید ببینید.
        “https://malltina.com/product/mlt-177175”

        ژوئن 22, 2021 at 9:36 ق.ظ
    • Ali Reply

      سلام این کد اشتباه نوشته شده و کار نمیکنه و تو خود سایت آردوینو کلی کامنت منفی خورده لطفا کد رو اصلاح کنید
      ممنون

      نوامبر 12, 2021 at 9:03 ب.ظ
      • مهران ملکی Reply

        سلام. ممنون از نظرتون.
        کدهای مختلفی تو این آموزش گذاشته شده، منظور شما کدوم کده؟
        کدهایی هم که در سایت قرار میگیره همگی از نظر کارکرد تست شدن.

        نوامبر 13, 2021 at 9:42 ق.ظ
    • جواد Reply

      سلام خسته نباشید
      من این ماژول رو با nodemcu راه اندازی کردم تا فاصله نیم متری همه چی درست کار میکنه اما وقتی فاصله از نیم متر بیشتر میشه کدهای مربوط به هر کلید تغییر میکنند.

      مارس 9, 2022 at 8:01 ب.ظ
      • مهران ملکی Reply

        سلام.
        برد ماژول فرستنده گیرنده IR حدود 4 تا 8 متر هست، اگر در فاصله کوتاه مشکلی نداره و کار میکنه اما از یه فاصله‌ای ارسال اطلاعات با مشکل روبه‌رو میشه احتمالش هست که ماژول گیرندتون دچار اشکال باشه.

        مارس 12, 2022 at 10:19 ق.ظ
    • کسرا Reply

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

      سپتامبر 29, 2024 at 5:12 ب.ظ
      • محمد دمیرچی Reply

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

        سپتامبر 30, 2024 at 9:03 ق.ظ
    • عباس خانی Reply

      سلام . از مهندسین کسسسییی رو میخوام که برامون چشمی بالای درب اتوماتیک شیشه ای کشویی که هست اونو بسازه .در طول دو الی سه متر رو و به شعاع یک و نیم رو سنس کنه
      تا جایی که اطلاع دارم ایی ار هست و با فرستنده گیرنده معمولی ویا فرستنده گیرنده تلوزیون درست میشه
      بیزحمت با ایمیل اطلاع دهید abbaskhani1360@gmail.com

      نوامبر 4, 2024 at 11:14 ب.ظ
    • عباس خانی Reply

      درمورد چشمی درب اتوماتیک اگر میخواهید برامون درست کنید ۰۹۱۴۴۱۳۱۷۳۰اطلاع بدین

      نوامبر 4, 2024 at 11:16 ب.ظ

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

    نشانی ایمیل شما منتشر نخواهد شد.