Arduino ve Kızıl Ötesi

Arduino ve IR Led konusuna gelmeden önce biraz kafa ütüleyecem,

Geçtiğimiz ağustos ayında internette gördüğüm bir yazı da arduino ilgimi çekti ve hemen araştırmaya başladım. Tabi elinizde olmayınca kolaylığını zorluğunu pek anlamıyorsunuz. Neyse 1 hafta geçmeden hemen bir tane Arduino siparişi verdim. İlk geldiği zamanlar bu arkadaşa pek ısınamadım. Tabi ben o zamanlar sadece php ile ilgileniyordum ve elektronikle alakalı pekte bilgim yoktu. (İlkokuldaki ödevler dışında)… Ne bilim işte anca basit elektrik devresi 😀

Anlayacağınız Arduinoyu 1 hafta geçmeden sipariş vermiş olsamda hemen kullanmaya başlamadım. Yaklaşık 1 ay önce falan bilgisayarıma linux işletim sistemi kurdum. Linux işletim sisteminde python kullanımı windows a göre daha kolay geldi. O zamanlar linux a arada bir giriyordum. Şimdi ise windowsa arada bir giriyorum. Linux a geçtikten sonra python beni aşırı sardı. Yatıyorum python kalkıyorum python, arkasından aklımda arduino geldi. Ne yalan söyleyim ben arduinodaki C tabanlı programlama dilini pek bilmiyorum. Hadi syntaxı php ye benziyor. İlk başta led ışığı belirli aralıklarla yakıp söndürme işlemi yaptım…

Neyse geçmişi daha fazla karıştırmayıp mevzuya geçelim. Kızıl ötesi sinyalleri daha önce okumayı başarmıştım bunun için IR Detector denilen bir parça kullanmıştım. Bunun ardından aklıma gelen sinyali okuyabiliyorsam bu sinyali tekrar gönderebilirim diye düşündüm. Bunu ise çok fazla uzağa gitmeden bilgisayarımla arasında sinyalin gitmesine hiç bir engel olmayan ısıtıcı üzerinde denemeye karar verdim.

Öncelikle IR Led her elektronikçide(Elektrikçide değil elektronikçide) ya da kumandalarınızda bulunur. Ben uzaktan kumandalı dandik bir rc helikopterin kumandasından çıkardım.

Ben elimde direnç olmadığı için bağlamadım ama bu arduino ya zarar verebilirdi(Bilmiyorum ama öyle diyorlar). Resimden anlamayanlar için söyleyim IR Led e baktığınızda içerde bacakların ucunun biri büyük gibi gözüküyor o bacağı arduinodaki gnd ye diğerini ise PWM(Arduino uno R3 te PWM pinler yanında ~ olanlardır) pinlerden birine bağlayacaksınız.

Bundan sonrası programlama işi ben c programlama dillerinden pek anlamadığım için internetten toparlayabildiğim kadar bir şeyler yaptım. Biraz amatör olabilir o.O

Aşağıdaki kodları çalıştırmak için buradan kütüphaneyi indirip. Windowsta arduino klasörü içindeki libraries klasörüne, linuxta/usr/share/arduino/libraries klasörüne atıyoruz.
Aşağıdaki kodu anlamak için bu siteyi bir incelemenizi öneririm
Benim arduinoya yüklediğim kodlar:

#include 
 
IRsend irsend;
 
void setup()
{
  Serial.begin(9600);
}
 
void loop() {
  if (Serial.available() > 0) {
    int ch = Serial.read();
      switch(ch){
        case 'a':
   irsend.sendNEC(16716015, 32);
        break;
        case 'b':
  irsend.sendNEC(16724175, 32);
        break;
        case 'c':
  irsend.sendNEC(16711935, 32);
        break;
        case 'd':
  irsend.sendNEC(16720095, 32);
        break;
      }     
   
  }
}

irsend.sendNEC(değer, bit)

Eğer şuan bu sayılar nerden çıktı diye düşünüyorsanız yazıyı yarıdan sonra falan okumaya başlamışsınızdır. Dediğim gibi ben daha önce kurduğum devreyle aldım bu değerleri… Belki ilerde onuda paylaşırım.

Gelelim neden switch kullandığıma. Bunun nedeni basit sadece ben istediğimde istediğim sinyali göndermesi bunun için seri porta pythonla a,b,c veya d gönderiyorum. Benim için
a = Aç / Kapat
b = Mod
c = Salınım
d = zaman
gelelim python koduna;

#!/usr/bin/python
# -*- coding: utf-8 -*-
import serial
ser = serial.Serial("/dev/ttyACM0", 9600)
while True:
    inp = raw_input("islem(ac/kapa,mod,salinim,zaman): ")
    if inp == "ac/kapa":
        ser.write("a")
        print "Aç / Kapa"
    if inp == "mod":
        ser.write("b")
        print "mod"
    if inp == "salinim":
        ser.write("c")
        print "salınım"
    if inp == "zaman":
        ser.write("d")
        print "zaman"

Gui çizmediğim için kod sadece terminalde çalışır. Ayrıca ‘/dev/ttyACM0’ bölümünüde(Arduinonun bağlı olduğu usb portu) kendinize göre düzenlemeyi unutmayın.