38 KHz'lik 1838B kızılötesi alıcı göz hakkında

Başlatan transistor, 17 Haziran 2018, 02:30:16

transistor

Herkese hayırlı bayramlar, robotistan'dan aşağıda ki ürünü aldım. Tabi ki gelen ürün 21 tuşlu idi. Tuş kodlarını okumak için ufak bir kod yazmaya çalıştım ve okunan decimal sayıyı lcd ekranda göstermeye çalıştım. Ki, ancak butonlardan sürekli değişken sayılar okuyorum. Bazen farklı butonlardan aynı sayıyı okuduğum oluyor.

Mesela 1 tuşuna,
1. basışımda 91941 okurken
2. basışımda 91441 okurken
3. basışımda 92141 okuduğum olabiliyor...
Bazende farklı butonlardan aynı rakamları okuduğumda olabiliyor.

Sürekli bastığım zaman da rakamlar sürekli değişiyor. Mantığını da çok anlamış değilim. Ben zannediyordum ki her tuş sabit bir değer gönderecek. Bilmece gibi bişey sabit değer olsa okusan da okuduğun değeri kullansan. Arduino'da hazır kütüphaneler olduğundan çok kolay kullanılabilinen ürünleri pic ile kullanmak neden daha zor anlamıyorum.

Bu ürünü kullanan var mı? Mantığını anlatan birisi var ise bir kod daha yazmaya çalışayım. Yoksa bu iş bizi aşacak kaldırıp rafa koyacağım.

Kodlar:



SAYI VAR WORD : SAYI=0

BASLA:
PULSIN PORTD.7,0,SAYI
LCDOUT $FE,$80,"DECIMAL:",#SAYI
PAUSE 250
GOTO BASLA



https://www.robotistan.com/ir-alici-verici-kumanda-seti-ir-receiver-module-wireless-remote-control-k

[IMG]https://resmim.net/f/qbCIKA.jpg[/img]

İlyas KAYA

Bu şekilde bu kumandayı okuyamazsın. Pulsin komutu birim zamanda gelen darbeleri sayar. Siz darbeleri saydırmışsınız ancak başka bir işlem yapmamışsınız.
Ana sayfaya dönün ve aktif konular lisesinden 4 ncu sıradaki konuyu inceleyin.

Sizin ihtiyacınız olan; infrared  RC5 veya NEC protokolü dur
Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

mg1980

#2
@transistor,
Siz Pic için demişsiniz sonradan farkettim...
Vereceğim koddaki Arduino kütüphanelerini temin edin. Kumandadaki her tuşa kısa süreli basıp tuş şifrelerini belirleyin.Ortam ışığından etkilenmemesi için alıcı göze filtre elemanı ekleyin.Basit bir şema vardı yükleyemedim.
#include <boarddefs.h>
#include <IRremote.h>
#include <IRremoteInt.h>
#include <ir_Lego_PF_BitStreamEncoder.h>

const byte IRpin=8;
IRrecv sinyal(IRpin);
decode_results veri;   //
volatile double sifre;
#define LED 2
#define LEDX 13






void setup()
{
  Serial.begin(9600);
  sinyal.enableIRIn();
  pinMode(LED,OUTPUT);
  pinMode(LEDX,OUTPUT);
 
}

void loop()
{
  if(sinyal.decode(&veri)){
    sifre=veri.value;                         
    sinyal.resume();
                             
  }
  delay(100);
  Serial.println(veri.value,DEC);
  if(sifre==16580863 || sifre==551547150 || sifre==16738455 || sifre==551460959 ) {    //ÇİN..*
        digitalWrite(LED,HIGH);
   }
     
  if(sifre==16584943 || sifre==551514510 || sifre==16756815 || sifre==551456879 ) {    //ÇİN..#
        digitalWrite(LED,LOW);
   }
 
  delay(200);

   
}



mg1980

Şemayı anlatmaya çalışayım:
Alıcı göz besleme uçları arasına 4,7 mf. elk.kondansatör.. Besleme kaynağı 5v.+ ucundan 330 ohm direnç alıcı gözün artı ucuna...Alıcı göz  +  ucundan 10k data çıkış ucuna bağlantı ve buradan işlemci pinine.

ete

Transistor,
IR alıcı vericiler konusunda bilgi eksikliğin olduğu kesin. Senin düşündüğün gibi IR-Kod okuması yapılsa idi bütün kumandalar bir birine karışırdı. Karışmasın diye bu işi geliştirenler bir protokol geliştirmişler. Geliştirilmiş protokoller SONY- NEC - PHILLIPS(RC5)-NOKIA gibi firmalar tarafından geliştirilmiştir. Öncelikle tavsiyem protokol nedir bu protokollerin bir birlerinden farkı nedir önce onu araştırıp öğren.
Ardından b,ir protokole ait kod nasıl çözülür onuda ayrıca öğren.
Bu resimde görülen kumanda bildiğim kadarı ile NEC protokolü ile çalışıyor. Bu protokolü daha önce incelemiş ve bazı kodlarda yazmıştım. Hatta senin kumandana benzer bir kaç kumandayı da bu kodlarla çalıştırmış idim. Aşağıdaki linkleri incele bilgin artsın.
http://etepic.com/index.php/topic,2553.msg31682.html#msg31682
http://etepic.com/index.php/topic,3613.msg34306.html#msg34306
http://etepic.com/index.php/topic,3349.msg31776.html#msg31776
http://etepic.com/index.php/topic,1514.msg19158.html#msg19158
http://etepic.com/index.php/topic,1976.msg19639.html#msg19639

İşin temeli bütün protokoller için aynıdır. En başta Header denilen ve Türkçesi sinyal başı diyebileceğimiz özel bir kod verilip ardından cihaz kodu ve tuş kodları verilir. Bütün protokollerde bu aynıdır. IR kod bir tren'e benzetilebilir. En başta bir Header (Lokomotif) ve ardından cihaz ve tuş kodları (vagonlar) bulunur. Cihaz ve tuş kodlarını okuyabilmen için öncelikle sinyal başını yani lokomotifi bulman gerekir. Onu bulunca ardından sırasına göre diğer kodları alman çok kolaydır artık. Yeterki kod şekli ve sırası nasıldır (her protokole göre farklıdır) bil ve ona görede okumayı yap.

Belkide bütün bunlardan önce modülasyon nedir onuda bilmen gerekir. Bütün bu kodlar genelde 36-38-40-42 Kh lik bir kare dalga sinyalin üzerine bindirilir. Buna modulasyon denir. Amaç sinyalin parazit veya gün ışığı pulsleri ile karışmasını engellemektir. IR-Göz dediğimiz alet bu sinyalleri alır ve modülasyon sinyalini ana sinyalden ayıklayıp sana net kod sinyalini çıkıştan verir. Modülasyonun tam olarak kafana oturmasını sağlamak için şöyle bir örnek vereyim.
38 Khz lik modülasyon kullandığımızı farz edelim. Bu sinyalin peryodu 1000/38= 26 us dir.
Ana Kod sinyalinde diyelimki tuş kodu 2 ms lik HIGH ve 1 ms lik LOW sinyalinden oluşuyor (en azından bir parçası.) Bu sinyal 38 Khz üzerine bindirildiği zaman 2 ms lik HIGH sinyali nde 2 ms lik yada 2000 us lik HIGH peryodu 38khz lik kare dalga ile doldurulur. Yani 2 ms lik HIGH yerine 2000 us lik bir 38 Khz lik kare dalga görürsün skop ile bakarsan.  LOW sinyalinde bir değişiklik olmaz 1000us lik LOW aynen verilir. IR göz bu sinyali çevirirken 2000us lik kare dalgayı kaldırıp oryı sana yeniden HIGH olarak verir. Olayın temeli budur.
Gerisi artık protokolle alakalıdır. Bu nednele protokolleri ve genel özelliklerini iyi öğrenmen gerekir.
Birde şunu unutma. Asıl sinyal IR göz tarafından tersine çevrilerek verilir. Çünki içinde bir NPN transistör vardır ve bu sinyali ters çevirip OUT ucundan çıkartır. Kısaca göz çıkışına bakacak isen aslında 2000 us lik HIGH verilmiş ise sen onu çıkışta 2000us lik LOW olarakbeklemelisin.
Hepsi bu kadar.
Son olarak ilişikte verdiğim nec protokolü okuma kodlarınıda incelemeni tavsiye ederim. Ayrıca RAR dosyası içinde protokole ait sinyal şeklinde header sinyalinin nasıl olduğunu görebilirsin. Unutma bütün protokollerde en önemli faktör sinyalin yada sinyallerin peryodudur. Bu nedenle kod çözme büyük ölçüde sinyal genişliği ölçümüne dayanır.

Ete

Powered by EzPortal