( λ Halit Alptekin )

Arduino Ve Kızılötesi Alıcı

Bundan tam 1 hafta once bugun Arduino ile nasıl bilgisayarınızı kontrol edebileceğiniz konusunda basit birşey yapmıştım.Onun mantığı seri porttan gelen verileri python ile algılayıp xdotool aracını kullanarak bilgisayara erişmekti.Gorunuş olarak bir hayli amatordu.Boyle birşey yapmıştım ama aklımda hep kumanda ile kontrol vardı.Nasıl bunu yaparım diye duşunuyordum.Tam bu duşunceden vazgeçmişken evden atılacak bir parçanın içinde kızıl otesi alıcı(IR Detector) gordum.Hemen dikkatlice sokup internette biraz araştırma yaptım.

Bu alıcı ile istediğim şeyi yapabilirdim.Aynı geçenlerde yazdığım kodun birazcık daha gelişmişi ile daha kaliteli birşey yapabileceğimi duşundum.Hemen bu IR alıcı için birkaç kutuphane arayışlarına girdim.Eğer çalışsalardı hepsi işime yarardı ama maalesef hiçbiri çalışmadı.Bende kolları sıvayıp bir tanesini çalışır duruma getirdim.Aslında çok da fazla birşey yapmadım.Sadece şu anda kullandığım surum ile uygun bir hale gelmesini sağladım.Bu kutuphane dosyasını buradan indirebilirsiniz.

İşlerimize geçmeden hemen once IR Detectorumuzu Arduino ile bağlayalım.Devre aşağıda gorduğunuz gibi gayet basit.

Arduino IR Detector

Devremizi kurduktan sonra az once indirdiğiniz kutuphane dosyasını açıp içindeki klasoru /usr/share/arduino/libraries dizinine atıyoruz.IDE'yi yeniden başlattığınızda File->Examples içinde IRremote klasorunu goreceksiniz.Bu klasorun içindeki IRrecvDemo dosyası bizim birazdan kullanacağımız için gerekli olan ornek.Siz diğer ornekleride inceleyebilirsiniz.Bunların arasında IR Led ile veri gondermede var.

IRrecvDemo orneğini Arduinomuza yukledikten sonra seri porttan kızılotesi ile algılanan tum değerleri goreceksiniz.Evinizdeki her kumanda da her tuşa bastığınızda farklı bir değer çıktığını gorebilirsiniz.Benim kullandığım bizim evin televizyonunda aşağıdaki değerler çıkıyor.Örneğin aşağı tuşunda F38,yukarı tuşunda B38,sağ tuşunda 738,sol tuşunda 338 vb.Sizde kullanacağınız kumandanın buton değerlerini bir yerlere not etmenizde fayda var.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#!/usr/bin/env python
import os
import serial

sensetive = "10" ## Mouse Hassasiyet Degeri - Mouse Sensetive ##

SERIAL_PORT     = '/dev/ttyACM0'
SERI_BAUDRATE   = 9600
SERI_BYTESIZE   = 8
SERI_PARITY     = 'N'
SERI_STOPBITS   = 1
SERI_TIMEOUT    = 0.2
SERI_BUFFER_SIZE= 1024

def seriBaglan():
    bag             = serial.Serial()
    bag.port        = SERIAL_PORT
    bag.baudrate    = SERI_BAUDRATE
    bag.bytesize    = SERI_BYTESIZE
    bag.parity      = SERI_PARITY
    bag.stopbits    = SERI_STOPBITS
    bag.timeout     = SERI_TIMEOUT
    bag.open()
    return bag
bag = seriBaglan()
while 1:

    gelen  = bag.readline()
    for gl in gelen:
        gl = str(gl)

        ## Buton - Button ##
    asagi        = gelen.find("F38")        
    yukari       = gelen.find("B38")
    sag          = gelen.find("738")
    sol          = gelen.find("338")
    sagclick     = gelen.find("5E25")
    solclick     = gelen.find("70")
    asagitik     = gelen.find("C90")
    yukgitik     = gelen.find("490")

    if asagi == 0:
        print "asagi"
        os.system("xdotool mousemove_relative 0 %s" %sensetive)
    if yukari == 0:
        print "yukari"
        os.system("xdotool mousemove_relative -- 0 -%s" %sensetive)
    if sag == 0:
        os.system("xdotool mousemove_relative %s 0" %sensetive)
    if sol == 0:
        os.system("xdotool mousemove_relative -- -%s 0" %sensetive)
    if solclick == 0:
        os.system("xdotool click 3")
    if sagclick == 0:
        os.system("xdotool click 1")
    if asagitik == 0:
        os.system("xdotool click 5")
    if yukgitik == 0:
        os.system("xdotool click 4")

Sizin bu kodda değiştireceğiniz yerler en baştaki sensetive diye tanımladığım mouse'un hassasiyet değeri ve buton diye belirttiğim yerdeki kumandanızdan gelen buton değerleri.Bu iki yeri kendinize gore değiştirip programı çalıştırabilirsiniz.(Programın çalışması için bilgisayarınızda xdotool kurulu olması lazım. sudo apt-get install xdotool diyerek kurabilirsiniz.)

Yukarıdaki Python programı arkaplanda çalışırken siz kumandanız ile sitelerde rahatça gezebilirsiniz.Şimdilik bu kodda mouse'u ileri,geri,aşağı ve yukarı oynatma,mouse sağ,sol ve ortadaki tekerlek var.Siz bu kodlardan sonra xdotool'un yapabileceklerine iyice bakıp kumandanızın istediğinize tuşuna işlevsellik atayabilirsiniz.Tamamen size kalan birşey.

Tabiki de bu olayı sadece kumanda dan gelen verileri okumak için kullanmanıza gerek yok.Kurduğunuz kutuphane içindeki orneklere bakarak IR Led ile veri gonderimi de yapabilirsiniz.İki devreyi birbiri ile haberleştirebilirsiniz.Veya IR Led ve IR Detector kullanarak kendinize cisim algılayan bir sensor yapabilirsiniz.

Benim kullandığım kumanda aşağıdaki şekilde.

Arduino Tv Kumandası

Ve kendi çekimim olan video.(Evet hesap makinesi ile çektim)

Comments