در این پروژه شما از یک گیرنده مادون قرمز (IR) و یک آردوینو برای کنترل 3 LED با یک کنترل از راه دور که میتواند یک کنترل تلویزیون باشد استفاده میشود. این پروژه برای استفاده مجدد از کنترل های از راه دور دستگاه ها و تلویزیون های قدیمی یا تعریف عملکرد برای برخی از دکمه های کنترل از راه دور مفید است.

این پروژه به دو بخش تقسیم می شود:
- شما سیگنال های IR ارسال شده توسط کنترل از راه دور خود را رمزگشایی و مقدار عددی آنها را پیدا خواهید کرد
- شما از این اطلاعات برای انجام یک کار با آردوینو مثلا کنترل 3 LED استفاده خواهید کرد
لوازم مورد نیاز
برای انجام این پروژه لوازم زیر را نیاز داریم:

- برد اردوینو یونو
- یک عدد بردبورد
- یک ریموت کنترل
- گیرنده مادون قرمز (در این پروژه از TSOP4838 استفاده شده)
- سه عدد ال ای دی
- سه عدد مقاومت 220 اهم
- سیم های اتصال
معرفی گیرنده مادون قرمز (IR)
گیرنده مادون قرمز که در شکل زیر نشان داده شده مدل TSOP4838 است.

هنگامی که دکمه کنترل از راه دور خود را فشار می دهید، سیگنال های مدوله شده توسط مادون قرمز ارسال می شوند. این سیگنال ها حاوی اطلاعاتی هستند که گیرنده شما انها را دریافت می کند.

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

برای کنترل گیرنده IR، باید کتابخانه IRremote را در Arduino IDE نصب کنید.
نصب کتابخانه IRremote
- برای دانلود کتابخانه IRremote اینجا را کلیک کنید. حالا شما باید یک پوشه .zip در دانلودهای خود داشته باشید
- پوشه .zip را از حالت فشرده خارج کنید و حالا باید پوشه IRremote-master را داسته باشید
- نام پوشه خود را از IRremote-master به IRremote تغییر دهید
- پوشه IRremote را به پوشه کتابخانه های نصب Arduino IDE خود منتقل کنید
- در نهایت، Arduino IDE خود را ریستارت کنید
کد زیر را در آردوینو IDE خود کپی کرده و در برد آردوینو خود آپلود کنید. مطمئن شوید که برد و پورت COM درست را انتخاب کرده اید.
/* * IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv * An IR detector/demodulator must be connected to the input RECV_PIN. * Version 0.1 July, 2009 * Copyright 2009 Ken Shirriff * http://arcfn.com */ #include int RECV_PIN = 11; IRrecv irrecv(RECV_PIN); decode_results results; void setup() { Serial.begin(9600); irrecv.enableIRIn(); // Start the receiver } void loop() { if (irrecv.decode(&results)) { Serial.println(results.value, HEX); irrecv.resume(); // Receive the next value } delay(100);
}
مانیتور سریال را با نرخ باود 9600 باز کنید.

در این پروژه شما می خواهیم 3 ال ای دی را کنترل کنیم. 6 دکمه را برای کارهای زیر انتخاب کنید:
- LED1 – روشن
- LED1 – خاموش
- LED2 – روشن
- LED2 – خاموش
- LED3 – روشن
- LED3 – خاموش
به عنوان مثال، دکمه شماره 1 کنترل از راه دور خود را فشار دهید. شما باید یک کد در مانیتور سریال ببینید. همین دکمه را چندین بار فشار دهید تا مطمئن شوید که کد مناسب آن دکمه را دریافت کرده اید. اگر چیزی شبیه FFFFFFFF دیدید، آن را نادیده بگیرید.
همین کار را برای دکمه های دیگر انجام دهید.
کد مربوط به هر دکمه را یادداشت کنید، زیرا بعداً به آن اطلاعات نیاز خواهید داشت.

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

کد
اکنون، کدهایی را که در مرحله قبل بدست آورده اید را از هگز به دسیمال تبدیل کنید.
برای اینکار، می توانید از این وب سایت استفاده کنید
در اینجا یک مثال تبدیل برای یکی از کدهای من اورده شده:

این فرآیند را با تمام مقادیر هگز خود تکرار کنید و مقادیر دسیمال را ذخیره کنید. اینها مواردی هستند که باید در کد زیر جایگزین کنید.
کد زیر را در آردوینو IDE خود کپی کنید. مقادیر دسیمال خود را در کد ارائه شده در خطوط case بنویسید و آن را در برد آردوینو آپلود کنید. مطمئن شوید که برد و پورت COM مناسب را انتخاب کرده اید.
/*
* Modified by Rui Santos, http://randomnerdtutorialscom
* based on IRremote Library - Ken Shirriff
*/
#include <IRremote.h>
int IR_Recv = 11; //IR Receiver Pin 3
int bluePin = 10;
int greenPin = 9;
int yellowPin = 8;
IRrecv irrecv(IR_Recv);
decode_results results;
void setup(){
Serial.begin(9600); //starts serial communication
irrecv.enableIRIn(); // Starts the receiver
pinMode(bluePin, OUTPUT); // sets the digital pin as output
pinMode(greenPin, OUTPUT); // sets the digital pin as output
pinMode(yellowPin, OUTPUT); // sets the digital pin as output
}
void loop(){
//decodes the infrared input
if (irrecv.decode(&results)){
long int decCode = results.value;
Serial.println(results.value);
//switch case to use the selected remote control button
switch (results.value){
case 551520375: //when you press the 1 button
digitalWrite(bluePin, HIGH);
break;
case 551495895: //when you press the 4 button
digitalWrite(bluePin, LOW);
break;
case 551504055: //when you press the 2 button
digitalWrite(greenPin, HIGH);
break;
case 551528535: //when you press the 5 button
digitalWrite(greenPin, LOW);
break;
case 551536695: //when you press the 3 button
digitalWrite(yellowPin, HIGH);
break;
case 551512215: //when you press the 6 button
digitalWrite(yellowPin, LOW);
break;
}
irrecv.resume(); // Receives the next value from the button you press
}
delay(10);
}
نتیجه
در نهایت می توانید هر LED را به صورت جداگانه با استفاده از دکمه های کنترل از راه دور کنترل کنید.

جمع بندی
این یک پروژه عالی برای یادگیری در مورد نحوه کار گیرنده IR است. امکانات زیادی برای کارهایی که می توانید با این پروژه انجام دهید وجود دارد.
به عنوان مثال، می توانید LED ها را با یک رله برای کنترل لوازم خانه خود جایگزین کنید.
راهنمای کامل راه اندازی ماژول فرستنده/گیرنده RF 433MHz با آردوینو
راه اندازی ترموکوپل نوع K با ماژول MAX6675 (بررسی نحوه کار و کد)