Televizyonlarımızın uzaktan kumandası üzerinde yer alan düğmelerden bazılarının işe yaramadığını farketmişsinizdir. Bu düğmelere bir kullanım alanı bulmak ister miydiniz? Gelin Arduino ile kuracağımız basit bir devre ile bu düğmeleri işe yarar hale getirelim.

Bu projemizde Arduino Dersleri 16: Kızılötesi Kumanda Kullanımı isimli dersimizde de kullanmış olduğumuz kızılötesi kumanda alıcısını Arduino’muza bağlayarak şerit LED süreceğiz.

Gerekli malzemelerimiz:

Arduino derslerimizde de bahsettiğimiz gibi kısaca kızılötesi kumandaların çalışma prensiplerinden bahsetmek gerekirse:

“Kumanda üzerinde bir kızılötesi (infrared, ir) LED bulunur. Bu LED, kumanda üzerindeki herhangi bir tuşa bastığımızda önceden belirlenmiş bir kod verecek şekilde belirli bir frekansta yanıp söner. Çoğu kumanda için bu frekans 38 kHz’tir. 38 kHz’lik taşıyıcı sinyale her bir tuş için farklı bir kod oluşturacak şekilde modülasyon uygulanır. Her marka için farklı modülasyon ve kodlama teknikleri mevcuttur. Projede kullandığımız 38 kHz kızılötesi alıcı, aldığı sinyali demodüle ederek Arduino’ya doğrudan basılan buton ile ilgili kodu göndermektedir. Bu sayede farklı marka ve model kumandaları 38 kHz taşıyıcı sinyale sahip olduğu sürece bu alıcı ile kullanabilmekteyiz.”

Öncelikle Arduino ile kızılötesi kumandayı kullanabilmemiz için bir kütüphaneye ihtiyaç duyuyoruz. Bu kütüphaneyi aşağıdaki adresten indirebiliriz:

https://github.com/z3t0/Arduino-IRremote

Kumandamızdaki tuşları kullanabilmemiz için öncelikle tuşlara ait kodları öğrenmemiz gerekli. Kütüphaneyi yükledikten sonra örnek kodlar içerisinde yer alan IRrecvDemo isimli programı Arduino’muza yüklememiz gerekiyor. Dosya -> Örnekler -> IRremote -> IRrecvDemo adımlarını takip ederek gerekli koda ulaşabiliriz. Alıcımızı aşağıdaki devre şemasına göre Arduino kartımıza bağlıyoruz:

NOT: Sizin kızılötesi alıcı kartınızdaki pin dizilimi farklı olabilir, bu durumda bağlantıyı aşağıdaki şekilde yapmanız gereklidir:

Arduino -> Alıcı:

5V -> VCC

GND -> GND

Dijital Pin 11 -> DO

Kodu yükledikten sonra bilgisayarımızdan seri monitörü açıyor, kumandamızı da devredeki alıcıya doğru tutarak kullanmak istediğimiz tuşlara sırasıyla basıyoruz. Seri monitörden aşağıdaki gibi tuşların kodlarını görebiliyor olmamız gerekli:

Bu ekranda görmüş olduğumuz 20DF4EB1 ve 20DF8E71 kumandamız üzerindeki tuşların kodlarıdır. Bu kodları not ediyoruz, çünkü bir sonraki adımda bu kodları Arduino’muzda işlev atamak için kullanacağız.

Devremizden kısaca bahsetmek gerekirse, temel olarak bir kızılötesi alıcı ve LED şeritimizin parlaklık kontrolü için gerekli bir MOSFET’ten oluşumakta.

LED şeritler, büyük çoğunlukla 12V gerilim ile kullanılmaya hazır olarak akım limitleyici dirençler ile birlikte hazırlanırlar. Böylelikle besleme gerilimini 0-12V arasında değiştirerek LED şeritimizin istediğimiz parlaklık seviyesinde yanmasını sağlayabiliriz. Bu işlem için motor sürme dersimizden de hatırlayabileceğiniz gibi transistör kullanmanız gerekiyor. Bu işlem için IRFZ44N MOSFET kullanıyoruz. MOSFET’in düzgün şekilde çalışabilmesi için, ayrıca bir NPN tipinde transistöre ihtiyaç duymaktayız. Bunun sebebi, kullanmış olduğumuz MOSFET’in, lojik seviyesi (3.3V veya 5V) sinyaller ile tetiklemeye uygun olmamasıdır. Arduino’dan alacağımız PWM çıkışı BC547 NPN transistöre 10kΩ değerinde direnç ile bağlıyoruz ve bu çıkışı güçlendirerek daha büyük yükleri anahtarlayabileceğimiz MOSFET’imizi sürüyoruz.

Devre şemamızı aşağıdaki şekilde kuruyoruz:

Kodumuzu Arduino’muza yüklüyoruz:

/*
         `://////////////////////////////-`        
       -/////////::////////////:://///////-       
       ://///-`     `://////:`     `-/////:       
       :////..:///:.  `////`.:///:.  .////:       
       :////:///////-  ////////////-  ////:       
       :///++///////: `////////////- `////:       
       ://///-.////-`.//////.-////-`-/////:       
       :////////::-:///////////::-:///////:       
       -//////////////////////////////////-       
        -////////////////////////////////-        
  `------::////////////////////////////::------`  
 :/--////////////////////////////////////////--/- 
`:/:://::::::://////////////////////::::::://::/:`
./////-     `////////////////////////`     -/////.
./////-    `//////////////////////////`    -/////.
./////-   `////////////////////////////`   -/////.
///////: `//////////////////////////////` :///////
////////`////////////////////////////////`////////
//////////////////////////////////////////////////
---.---.//////////////////////////////////.---.---
        .://////////////////////////////:.        
 `-:///////:::::::::::::..:::::::::::::///////:-` 
 ://////////////////////////////////////////////: 
 ://////////////////////////////////////////////: 
 ://////////////////////////////////////////////: 
 .//////////////////////:://////////////////////. 

Bu kod, 24/07/2017 tarihinde maker.robotistan.com için hazırlanmıştır.  
 */

#include 

int RECV_PIN = 11;
int led = 9;
IRrecv irrecv(RECV_PIN);
decode_results results;
int parlaklik = 255;

#define yukari 0x20DF4EB1
#define asagi 0x20DF8E71

void setup()
{
  pinMode(led, OUTPUT);
  Serial.begin(9600);
  irrecv.enableIRIn();
  analogWrite(led, parlaklik);
}
void loop() {

  if (irrecv.decode(&results))
  {
    if (results.value == yukari)
      parlaklik = parlaklik + 25;
    if (results.value == asagi)
      parlaklik = parlaklik - 25;
    if (parlaklik >= 250)
      parlaklik = 255;
    if (parlaklik <= 0)
      parlaklik = 0;
    analogWrite(led, parlaklik);
    Serial.println(parlaklik);
    irrecv.resume();
  }
}

Alternatif olarak kodu bu sayfadan da indirebilirsiniz: https://zerobin.net/?f675ea953e8b0309#KUH659wt2r/R2QQpUutGp3hTilFCOFnOkq93xmPETRQ=

Kodda yer alan yukari ve asagi olarak tanımlanmış kodları kendi kumandamıza ait kodlar ile değiştirmeyi unutmayalım!

Bu kodda yer alan yukari olarak tanımlanmış tuşa bastığımızda LED şeritimizin parlaklığı artacak, asagi olarak tanımlı tuşa bastığımızda ise parlaklık azalacaktır.

1 YORUM

CEVAP VER