IR Haberleşme

Başlatan zeus48, 23 Mayıs 2017, 14:55:55

zeus48

Arkadaşlar mrb.  Arkadaşım arduino  ile ilgileniyor. Bir çalışmalarına şahit oldum. Arduino ile kurulmuş bir düzenekte uydu alıcısı kumandasının kapatma tuşunun kodunu okuyorlar
okunan kod hexdesimal olarak ''20DE50AF''  bu kodu okuyorlar. Yine arduino ile kurdukları düzeneğe ır verici led takıyorlar çalıştıırıyorlar uydu alıcısı kapanıyor yada açılıyor.
Tabi bunların hazır kütüphaneleri var çokta uğraşmıyorlar.Yazdıkları komut şunlar

irsend.sendNEC(0x20DE50AF, 32); ;9600 baund hızını kullanıyorlar

sorum şu  biz bu okunan kodu  ''20DE50AF''  picle nasıl göndereceğiz . 38 khz taşıyıcı kısmını yazmamıza gerekyok zaten olacak.

askin

zeus48 böyle bir konu başlığı açtığın için teşekkür ederim.
Benzeri projemi bitireli bir ay oldu, breadboard üzerinde sorunsuz çalışıyor, bir türlü karta aktarmaya fırsat bulamadım ayrıca projeyi paylaşım aşamasında anlaşılır olabilmesi için PDF döküman hazırlamam gerekiyor ve bunun için de zamana ihtiyacım var.

Projeye ilgi duyan arkadaşlar olursa fırsat yaratmaya çalışırım aksi halde kartı basıp projeyi arşive kaldırıcam (en kritik aşamada yardıma koşan ETE hocama tekrar teşekkür ederim) önce projeyi açıklamak sonrasında senin sorunu yanıtlamaya çalışacağım.

Projemin içeriği :
Çalışma odamda Tv-uydu alıcı-Ses sistemi tam arkamda yer alıyor, genelde uydudan radyo dinlerim tv kapalıdır saat başlarında haber kanallarına geçerim önemli birşeyler olmuşsa ses sistemini kapat-Tv yi aç yada dinlediğim radyolar arasında 5sn tarama yapıp durdurmak gibi durumlarda kumanda karmaşası yaşıyordum.

- Dokunmatik kontrol panelim var Usart haberleşmesi kullanarak ilgili cihazın kodlarını 16f628a ve 433mhz verici ile RF olarak alıcı tarafa gönderiyorum.

- Alıcı tarafta 16f628a ve 433mhz modül ile gönderdiğim cihaz ve tuş  kodunu yorumlayıp 38khz pwm üreterek IR led ile ilgili cihazları kontrol edebiliyorum, bu arada cihazlarımın hepsi NEC protokolünü kullanıyormuş, şans işte.

- Verici tarafı olmadan da butonlar ile kontrol edilebilir tercih size kalmış, aslında böyle birşey yapmayı yıllardır isterdim fakat kumanda kodlarını bulmak için skop yada osiloskopa gerek duyulduğu için  bir türlü başlayamamıştım.
Başlama aşamasındaki en belirleyici sebep IR göz ve birkaç direnç ile yapılan basit bir devre sayesinde  PC nin ses kartını kullanarak IR kodlarının bulunabilmesi olmuştu, daha basit anlatmak gerekirse; Kumandaların çalışıp çalışmadığını kontrol eden kumandaya basıldığında "rıkkıdı rıkkıdı" ses çıkaran devreyi PC ses girişine verip "IR Protocol Analyzer" ile kumandadan gelen 1-0 ları kayıt ediyor.

Uzatmayalım ilgilenen arkadaşlar olursa zaten yazarlar, gelelim senin sorunun cevabına ;

- NEC protokolünü incelediğinde 9ms-high/4.5ms-low sonrasında 8bit aygıt, 8bit cihaz (herneyse) 8bit tuş kodu 8bit invert edilmiş tuş kodu gönderiliyor.


Linx  var word
linx =  %0010000001011101       '205D

say var byte
biti var byte




Gonder:

say=0
biti=15

'__________________ 38khz ayarları
PR2 = %00100000
T2CON = %00000101
CCPR1L = %00010000
CCP1CON.2=1
CCP1CON.3=1


'_________________ NEC protokol preamble_____
     IRLED = 1       
     pause 9
     IRLED = 0
     pauseus 4500   
'_________________ Aygıt kodu 16 bit
for say = 1 to 16
if aygit.0[biti]=0 then gosub sifir
if aygit.0[biti]=1 then gosub bir
biti = biti - 1
next

biti = 7

'_________________ Tuş Kodu ilk 8 bit
for say = 1 to 8
if komut.0[biti]=0 then gosub sifir
if komut.0[biti]=1 then gosub bir
biti = biti - 1
next

biti = 7
'_________________ Tuş Kodu Reverse 8 bit
for say = 1 to 8
if komut.0[biti]=1 then gosub sifir   '--- Reverse gönderiliyor
if komut.0[biti]=0 then gosub bir      '--- Reverse gönderiliyor
biti = biti - 1
next







'________Alt_Program__________
sifir:
     IRLED =1      '  |
     pauseus 560   '  |     0
     IRLED = 0     '  |
     pauseus 560   '  |
return
'_____________________________
bir:
     IRLED =1      '  |
     pauseus 560   '  |     1
     IRLED = 0     '  |
     pauseus 1690  '  |
return
'_____________________________


Kodlardanda anlaşıldığı üzere değişkene değer atıyoruz.
16. bit 1-0 durumuna göre ledin yanma-sönük kalma süresi 16.bitten 0. bite kadar IR led sürülerek istenilen kod alıcıya gönderilir.

Umarım yardımcı olmuşumdur.

COTYORA

askin  hocam  teşekkürler
gerçekten çok  aydınlatıcı  oldu

Powered by EzPortal