1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...
Nis
20th

Sony SIRC Protokolü ve CCS Sürücü Programı

sony-remote.jpg
Burada dünya çapında kızılötesi kumandalarda yaygın olarak kullanılan Sony firmasının geliştirdiği protokolden bahsedilecektir. Sony Infrared Control (SIRC) protokolüde zamanla çeşitli alt prosedürlere ayrılmıştır. 12 bit, 15 bit ve 20 bit uygulamaları sıkça kullanılan tipleridir. Bu dökümanda 12 bit sirc protokolü baz alınmıştır.

Özellikler:

  • 5 bit adres bilgisi, 7 bit komut bilgisi
  • Pulse width modulation (pwm) ? Darbe geniÅŸlik modulasyonu
  • 40 kHz taşıyıcı sinyal
  • 1.2ms ve 0.6 ms peryodlar

Modulasyon:

Sirc protokolü darbe genişliği modulasyonu ile lojik bilgiyi oluşturur. Lojik 1 demek 1.2ms boyunca 40kHz lik sinyalin gönderilmesi ve ardından 0.6ms boyunca da taşıyıcı sinyalin gönderilmemesinden oluşur. Yani bilgi alıcı tarafına algılayabileceği bir bilgi göndermek için 1.2ms boyunca H (lojik var ? projemizde +5v) sinyali 40kHz lik bir taşıyıcı sinyal ile çarpmalı ve 0.6ms hiçbir bilgi göndermemeliyiz. Benzer olarak alıcı tarafın anlayabileceği bir logic 0 üretmek için; 0.6ms boyunca High sinyali 40kHz taşıyıcı frekans ile çarpmalı ve ardından 0.6ms boyunca herhangi bir sinyal gödermemeliyiz.

Protokol örneği:

Yukarıdaki şekil tipik bir Sirc protokol sinyalini örneklemektedir. Sirc protokolünde göderilecek binary bilginin önce düşük tarafı göderilmektedir. Philips rc5 kodu gibi bazı protokollerde ise önce binary sayının yüksek tarafı gönderilebilmektedir.

  • BaÅŸlangıç biti olarak 2.4ms H ve 0.6ms L sinyali gönderiliyor.
  • Ardından 7 bit komut bilgisi göderiliyor.
  • Daha sonra, göderilen bu komutun hangi cihaz tarafından (TV mi, müzik seti vs ) algılanması gerektiÄŸini ifade edecek olan adres bilgisi göderiliyor.

Eğer adres bilgisi gönderilmeseydi aynı odada bulunan aynı firmaya ait birden fazla cihaz sağlıklı şekilde kontrol edilemezdi.

Yukarıdaki örnekte alıcı tarafına 19 komutu ve 1 kod numaralı cihaz bilgisi göderilmiştir. Kumandalarımızda bulunan her tuşun bir komut karşılığı bulunmaktadır. Yine her cihazın kendine has bir adres bilgisi bulunmaktadır. Aşağıdaki resimde cihaz adres ve kumanda tuş bilgileri verilmiştir.

sirc.JPG

AÅŸağıdaki programda kumandadan gelen bilgiler lcd’de komut ve adres olarak gözükür.

İletişim sağlanamazsa HATA yazısı ekranda çıkar.

İnfrared sensörün data bacağını kullanacağınız Pic’in B0 bacağına baÄŸlayınız.

//  Author:       Aurelian Nichita     nicksubzero@yahoo.com
//  Based on:     http://www.xs4all.nl/~sbp/knowledge/ir/sirc.htm
#include <18F452.h>

#fuses XT,NOWDT,PUT,NOPROTECT,BROWNOUT,NOLVP

#use delay(clock=4000000)

#include “flex_lcd.c”#define TIMER0_CONFIG   RTCC_INTERNAL | RTCC_DIV_1

#define ONE_MIN  1675

#define ONE_MAX  1925

#define ZERO_MIN 1075

#define ZERO_MAX 1325

int16 irframes[13];

int8 ircount = 0;

int1 irdone = FALSE;

#int_ext

void ext_isr() {

  if (irdone) return;

 irframes[ircount] = get_timer0();

if (ircount >= 13)

irdone = TRUE;

ircount++;

set_timer0(0);

}

int1 decode_ir(int8 &addr, int8 &cmd) {

int8 i;

int8 mask;

int8 bits[13];

addr = 0;

cmd = 0;

for (i=1; i<=12; i++) {

if ((ONE_MIN <= irframes[i]) && (irframes[i] <= ONE_MAX))

bits[i] = 0x01;

else

if ((ZERO_MIN <= irframes[i]) && (irframes[i] <= ZERO_MAX))

bits[i] = 0x00;

else        // Error

return FALSE;

}

mask = 0x01;

for (i=1; i<=7; i++) {

if (bits[i])

cmd = cmd | mask;

mask <<= 1;

}

mask = 0x01;

for (i=8; i<=12; i++) {

if (bits[i])

addr = addr | mask;

mask <<= 1;

}

return TRUE;

}

void start_ir() {

  //bütün irframesler 0 la doldurulur

  memset(irframes, 0×00, sizeof(irframes));

ircount = 0;

irdone = FALSE;

set_timer0(0);

}

void main() {

int8 addr, cmd;

int1 ok;

addr=0;cmd=0;

setup_timer_0(TIMER0_CONFIG);

ext_int_edge(L_TO_H);

enable_interrupts(INT_EXT);

enable_interrupts(GLOBAL);

lcd_init();

delay_ms(133);

start_ir();

while(1){

if (irdone) {

ok = decode_ir(addr, cmd);

printf(lcd_putc, “\fKomut  %3u\nAdres %3u”, cmd, addr);

if (!ok)

lcd_putc(”\Hata”);

else

start_ir();

}

}

}


Share and Enjoy:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google

Benzer Yazılar


7 Responses to “Sony SIRC Protokolü ve CCS Sürücü Programı”

  1. By Erhan on Haz 23, 2008 | Reply

    Projeyi paylaştığını için teşekkür ederim.

    Burdaki 18 serisi PIC in bir kullanılma sebebi var mı . Ben bunun yerine 16F877 kullanabilirmiyim. Kullanırsan nasıl değişiklik yapmak gerekiyor.

    Teşekkürler

  2. By admin on Haz 23, 2008 | Reply

    Özellikle 18f serisi kullanmana gerek yok hafızası yetecek herhangi bir pic entegresi kullanabilirsin. Yapman gereken tek şey infrared alıcı sensörden gelen pini pic entegresinin B0 ucuna bağlamak.
    Kolay gelsin iyi çalışmalar

  3. By Erhan on Haz 25, 2008 | Reply

    Merhaba
    cevabınız için teşekkür ederim. Ben kodun header dosyasını 16F877.C yaparak derledim. LCD içinde D portunu kullandım. LCD normal şekilde çalışıyor.

    Programı bağlattımda bekliyor. Sonra kumandadan herhangi bir tuşa basar basmaz LCD de yazılar görünüyor KOMUT: 0
    ADRES:0

    şeklinde ve yanında aynı zamanda HATA yazıyor.

    TSOP1138 in OUT

  4. By Erhan on Haz 25, 2008 | Reply

    Pardon tam yazamadan enter a basıvermişim.

    neyse TSOP1138 in OUT pinini kontrol ettiğimde ise normalde +5V görünüyor ben kumandadan bir tuşa bastığımda o değer değişiyor.

    Sizce problem nerede olabilir…

  5. By admin on Haz 25, 2008 | Reply

    sirc protokülünde lojik1 ve lojik 0 durumları için
    belli mili saniye zamanlarda kumandadan “1″ gönderiliyor. Fakat bu “1″ gönderme süreleri hepsi sony kmandası olsa da bazen farklılık gösterebilmekte. ÖrneÄŸin benim bit pazarından aldığım eski ama orijinal sony müzik seti kumadası ile elektronikçiden aldığım taklit sony kumandasının zamanları biraz farklı
    sizde sizdeki kumandanın 1 ve 0 zamanlarını osilaskop ile ölçerek
    #define ONE_MIN 1675
    #define ONE_MAX 1925
    #define ZERO_MIN 1075
    #define ZERO_MAX 1325
    satırlarını kendinize göre uyarlamalısınız.
    Bu verilen süre aralıklarında sanırım alıcı devre sinyali yakalayamamakta ve hata vermekte

  6. By Erhan on Haz 26, 2008 | Reply

    Teşekkür ederim cevabınız için.

    Bende düşünüyordum acaba alıcı sensörün 38Khz olması mı problem yaratıyor diye. Çünkü bazı uygulamalarda 40Khz lik alıcı kullanmışlar.

    Bir de alıcının TSOP1138 olması bir fark yaratır mı acaba. Çünkü bazı uygulamalrda TK19 bazılarında Sharp GP1U52X kullanmışlar.

    Şu an konyada olduğum için sanırım osiloskop bulamayacağım :(

    Bu arada kumandam da orjinal Sony idi. Kameranın içinden çıktı.

    Bakalım osiloskop bulursam dediklerinize bakarım.

  7. By admin on Haz 27, 2008 | Reply

    Ben sharp ‘da kullandım piyasadaki ucuz alıcılardan da kullandım farketmiyor bence problem yaratacak tek ÅŸey bahsettiÄŸim zaman aralıkları

Post a Comment