avatar_fatih88

rf kumanda kod çözme

Başlatan fatih88, 29 Aralık 2019, 12:46:15

fatih88

sayın arkadaşlar bu aralar genelde kapı kepenk vs kumanda işleri geliyor lakin bu kartları yaparken de kumandasınıda tedarik etmek gerekiyor malum kumanda demek kalıp demek çoğunuz gibi bende yazılımla hobi olarak uğraşıyorum lakin bu hobi işini bir türlü gelire çeviremedim istek oluyor yazıyon satılmıyor veya proje iptal oluyor herneyse kalıp maliyetini ortadan kaldırmak için cuppon gibikumanda üretim firmaları var bunları kumandalarını nasıl kullanabilirim pt serilerini ete hocam sayesinde çözmüştüm ama malesef pt serisi kumanda istemiyorlar bu firmalarında standart pt gibi dalga formu kullanarakmı kod yolluyorlar yoksa rs232 ile diyecem ama skopumda rs232 kod çözme olanağı var ama saçma sapan karakterler çıkıyor (bütün baudrateleri  denedim)siz olsanız ustalar nasıl bir yol izlerdiniz cevaplarınız için şimdiden teşekkür ederim
bilgi paylaştıkça çoğalır!!

www.fayelektronik.com

alisumer

sadece 1 ve 0 ların sürelerini ve sayılarını drek kopyalamaya çalış kodu çözmeye fazla takılma bence. kızılötesi kumandalarda işe yarıyor 
Hep meraktan

fatih88

zaten kod çözme işi high ve low sinyallerin süresini olçmekle oluyor lakin bunların bir protokol dahilinde olması gerekiyor
benim burdaki sorunum kodu çözebilmek değil elcek kumanda alabileceğim bir yer ve bu elceklerin içine müdahale etmeden kodunu çözebileceğim bir kumanda ihtiyacım var pt2262 yi çözüyorum zaten onda sıkıntı yok sorun pt li kumanda istemiyor projeyi talep eden firma 
bilgi paylaştıkça çoğalır!!

www.fayelektronik.com

fatih88

çok önceleridir elimde olan birkaç model kumanda var pcbsinde cuppon yazıyor skopta dalgalara bakınca en azından bunda bir protokol var gibi
sync sinyali 4.400ms
low sinyali 280us high 280us low
high sinyali 560us high 280us low
bu kumanda pt gibi 2peryot bir bit değil 1peryot 0 veya 1 olduğunu belirliyor aynı zamanda 3 tane 8bitlik veri yolluyor benim kumandada
1. butondaki veri 00000001-10000000-01110001
2. butondaki veri 00000001-10000000-00001000
3. butondaki veri 00000001-10000000-10111001
4. butondaki veri 00000001-10000000-11110000
yukarda görüldüğü gibi iki bayte lik kısım hiç değişmiyor bu iki baytelik kısım zannımca şifre son 8 bitlik kısım ise butonlra verilen sabit değerler
sayın arkadaşlar bu kumandayla ugraşan oldu ise ve yukardaki bilgileri doğru olup olmadığının bilgisini veya nerde hatm var ise düzeltme yapabilirmi iyi çalışmalar
bilgi paylaştıkça çoğalır!!

www.fayelektronik.com

ete

Bildiğim protokol formatlarına oturtamadım. Belliki bir protokolü var ama özel bir durum olsa gerek.
Dikkatimi çeken diğer bir husus da buton bitleri genelde 3. byte'ın son 4 bitinde değişiklik gösterir. Sende ise 8 bitin tamamı değişiyor. Bir gariplik var çözemedim.


Ete

fatih88

erol abi yerli bir kumanda içerisinde 12f629 var bence son byte ye fix kodlar atıyorlar laki ilk iki byte hiç değişmiyor bence kendileri protokol oluşturmuşlar
bulduğum yerli bir kumanda daha var ondada 7 byte veri geliyor bu yerli tasarımlarda 0 ve1 ler 1 peryotta geliyor
anlaşılan hic elnize geçmedi galiba bu kumandalar genelde kepenk kumandası galiba hocam
şimdi pic12f683e kumandadan okudugum verileri yazdıgım programda gönderecem bakalım 1 peryotlamı 1ve 0 lar oluşuyor deneyip bilgi verecem
bilgi paylaştıkça çoğalır!!

www.fayelektronik.com

fatih88

#6

ete hocam dediğim gibi 1 peryotta 0 lar ve 1 ler belirleniyor kumanda da veri 7 byte geliyor gelen sinyallerin birebir aynısını 12f683 ile ureterek rf vericiye verdim ve kumanda alıcısı çalıştı lakin ben buna alıcı yapacağım 7 bytelik verinin hepsini saklamam pek mantıklı değil kumanda öğretme işine gelindiğinde bu 7 byte veri vana sıkıntı yaratacaktır sizce nasıl bir yol izlemeliyim kendi protokolumü oluşturmakmı yoksa bunlarımı kullanmak mı
hocam bide bana konuya cevap verilince email gelmiyor site güncellenenden beri böyle bende
bilgi paylaştıkça çoğalır!!

www.fayelektronik.com

İlyas KAYA

Cuppon kumandalara hiç bulaşmayın frekansları bozuk. Üretici ile direk görüştüm ancak çok ukela bir şekilde sorun sende dır deyip başlarından savıyorlar. :)
Kontal firmasına da benzer şekilde uyarı yaptım onlar düzeltti.
Kontal  in kumandaları kaliteli ancak fiyatları yüksek gelebilir.
Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

fatih88

Ilyas abi senin bu işlerde bilginin iyi olduğunu biliyorum kontalin fiyatları ne bilmiyorum elimde uzaktan Kumanda.net yazan bir kumanda vardı onun kumandasını klonlarım lakin 7byte bilgi geliyor bence çok fazla öğrenmeli kumandalarda 7byte veriyi saklamak bence amelelik bft kendi kartına tek buton kaydedersen 127 kumanda alıyor en az bizimde 150 kumanda tanıtmamız ve programın şişmemesi gerekiyor nacizane sizlerden kod blokları değilde fikir ve yol göstermeniz bu rf kod çözme işi hala ticari meselelere dokunduğu icin bilgi paylasımı kisitli gerekirse kendi protokolümü oluşturmada yardımcı olabilirsiniz şimdiden yorumlarınız için teşekkürler 
Iyi çalışmalar
bilgi paylaştıkça çoğalır!!

www.fayelektronik.com

ete

#9
Ilyas kendi açıklamasını isterse yapabilir. Bende bu konuda bir şeyler söylemek isterim.
Bu konuda önceden defalarca fikir vermiştim. Şimdi yine biraz açıklama vereceğim.
Bu işte al kopyala yapıştır kullan mantığına karşıyım. Bir şeyler yapabilmeyi başaranlar zaten yol gösterince bu işide başarabilirler eminim. Ben kimseden akıl almadan bunu başardığıma göre programlamayı bilen herkes bu işi başarabilir. Heleki biraz da yol yordam gösterilirse sonuca ulaşmak daha az zaman alacaktır.
RF yada IR olsun bütün sistemlerde benzer mantık uygulanıyor. Temel benzerlikler şunlar.
Sinyal yok iken uzunca bir LOW görmelisiniz. Ardından HEADER yani BAŞLIK denilen bir sinyal gönderilir. Bu genellikle kısa bir HIGH ve peşinden sabit sğüreli bir LOW sinyali şeklinde uygulanıyor. Ardından da adres yada data bitleri verilmeye başlanıyor. Genellikle tek bir adres yada data biti birden fazla puls biti ile ifade edilir. Mesela süresi sabit bir HIGH pulsi peşine aynı sürede bir LOW palsi bu bir LOW biti yada HIGH biti olarak kullanılıyor. Yine sabit bir HIGH biti ve peşine uzun bir LOW biti olunca buda farklı bir bit olarak kullanılıyor. İkisi arasındaki farka bakılırsa, birinci puls ikisindede aynı ama ikincisi bir kısa bir LOW diğerinde uzun bir low şeklinde yer alıyor. İşte bu farkları kullanarak ayarım yapıyoruz.
Konunun daha iyi anlaşılması için EV1527 nin kodu nasıl çözülür diye açıklama yapayım istedim.
Önce Preambl da denilen Header sinyaline bakalım. 1 clk süreli HIGH ve ardından 31 Clk süreli LOW sinyali header oluyor.
HIGH biti= 3 Clk süreli HIGH + 1 Clk süreli LOW
LOW Biti = 1 CLK süreli HIGH + 3 CLK süreli LOW
şeklinde uygulanıyor. Data bitleri tamamen bir birinin tersi şeklinde.
Şimdi bu kodun çözülmesiiçin işlem sırasını ve yapılacak işleri açıklıyorum. Ancak ona geçmeden bir şeyi daha açıklayayım. Dikkat edilirse süreleri CLK peryodu şeklinde verdim ki internete bakarsanız genelde aynı mantık uygulanıyor. Bunun sebebi Encoder yada decoder de uygulanan Osilatör frekansına bağlı olarak Clk süresi değişkenlik arzeder. Aşağıdaki link de osilatör dirençlerine bağlı olarak oluşan clk süreleri sayfanın altına doğru bir tablo halinde verilmiş.
Şimdi gelelim kodu çözme adımlarına;
1. Önce uzunca bir LOW yakalanmalı. Bunun hangi LOW süresi olduğu tartışılır. Kimisi butona basmadan önceki çok uzun LOW u yakalar ardından HEADER'i yakalar. AMa ben HEADER sinyalindeki LOW'u yakalama peşindeyim. Zira bu beni direk sonuca götürür. 31 CLK süreli bir LOW. Bu noktada hemen şunu belirteyim. Bir Lojik Analizör ile gelen sinyale bakmak yada bir SKOP ile gelen sinyale bakmak her zaman çok yardımcı olur. Zİra bu sayde gelen sinyalin süresi ölçüp ona göre işlem yaparsın. Gelen sinyal LOW olduğuna göre BAsic de PULSIN komutu ile bu sinyali alıp boyunu kontrol edebiliriz. Dİrek PULSIN 0,HAM şeklinde kullanırsak bizi yanıltabilir. Zira LOW sinyaline ortasından dalabiliriz. Halbuki önce header in başındaki HIGH sinyalini yakalayıp ardından gelecek olan LOW sinyalini ölçersek her zaman doğru sonuç alırız.
O halde WHILE GIRIS=1:WEND şeklinde bir kod parçası size HIGH sinyalini yakalayıp bittiği anı verebilir. Hemen ardından PULSIN 0,HAM şeklindeki bir komut ile süreyi (10 a bölünmüş hali ile) alırız. Bunu ölçmemiz gereken süre ile karşılaştırırız.Aynı ise peşinden gelen data bitlerini alırız.
Değilse header yakalama işine devam ederiz.
Şimdi data bitlerini nasıl alacağız ona bakalım.
Header ardından hemen gelen data bitinin ilk puls'ine bakarsak komut gecikmesi nedeni ile yanlış bilgi edinebiliriz. Bunedenle ikinci puls lere bakacağız. İkinci puls hep LOW oluyor dikkat ederseniz. Uzun ise gelen bit LOW biti kısa ise gelen HIGH biti oluyor. Burada kaç bit alacağımız çok önemli. EV1527 de 24 bit adres biti mevcut. O halde öncelikle 24 elemanlı bir dizi değişkeni ayarlarız. Bitleri alırken de FOR I=0 to 23 şeklinde 24 adımlık bir döngü kurarız.
İlk komutumuz ilk puls bitinin aşılması olmalı bunu WHILE GIRIS=1:WEND şeklinde aşarız.
Ardından PULSIN 0,HAM komutu ile gelen süreyi alıp GELEN[I]=HAM şeklinde sırası ile bit sürelerini kayıt ederiz. Şİmdilik sadece kayıt ediyoruz çözmeye çalışmıyoruz çünki çözmeye çalışırsak komut gecikmelerinden dolayı gelen kodu kayıp edebiliriz.
Gelen bitlerin sürelerini aldıktan sonra sıra çözmeye gelir.
Yine 24 lük bir döngü kurarız. SIrası ile SURE=1CLK süresine eşit ise ki burada eşitlikten ziyade belirli süreden kısa olanları 1CLK yüksek olanlarıda 3CLK kabul etmek doğru bir mantık olacaktır. Çünki sürelerde ufak tefek şaşmalar olabilir.
Ben çözme işinde Bütün bitleri önce 1 yapıp yalnızca LOW olanları bulup onlara karşılık gelenleri 1 den sıfıra dönüştürüyorum. Böylece uzun bitse 1 kısa bitse 0 yap şeklinde fazladan kod kullanmamış oluyorum. İki ihtimalli bir işde ihtimalin birini direk kabul edip ayarlayıp ikinci ihtimale uyuyorsa değiştirmek daha az kodla çok iş yapmış oluyorsunuz.
İşte işin temeli bu. Karşılaştırma işinde daha da ileri giderek yalnızca en büyük bitlerini de karşılaştırabilmek işinize kolaylık ve stabilizasyon getirir. Basiz de NCD denilen bir komut var. Bu sayının en yüksek bit numarasını verir. Şayet sayının NCD si daha büyük ise UZUN bit daha küçük ise KISA bit dir şeklinde karar vermek sayılardaki küçük küsuratları ortadan kaldırıp karşılaştırma yapmanızı sağlar ve büyük kolaylık getirir.

İşte hepsi bu. Bu kadar bilgi bir kodu çözmek için yeterlidir ve biraz koda yazmaktan anlıyorsanız kolaylıkla bunu koda dönüştürebilirsiniz.

Son olarak gelenbilgileri ben 16 bit (2 Byte) olarak bir ve ilave olarak 1 Byte daha şeklinde yani toplamda 3 byte olarak alıyorum. Genelde buton kullanılan sistemlerde ilk 2 byte hiç değişmiyor. Son byte da buton bitleri değişiyor. Bu nedenle gelen ile hafızadaki bitleri karşılaştırırken sadece 1 byte karşılaştırmak yeterli oluyor.

Ete

Not: Fatih mesajlara cevap almak için Forum Profilinizde Haberdar edilme seçeneğine girip orada yer alan kutucuğu işaretlemeniz gerekiyor. Profilinizle alakalı bir işlem. Default olarak işaretsiz açıldı bu özellik bütün üyeler için.

fatih88

değerli erol abim zaten bu anlattıklarını zamanında bana katlanarak büyük bir sabırla anlatmıştın ve ben kod çözme işini halletmiştim genelde ben c dili ile ugraşıyorum ve ccs c de pt2262 çözmüştüm ilk başlarda mantıgı kavramak zordu pbp da güzel komutlar var pulsin komutu bizde yok bende timer1 kuruyorum yakalama piniden high bekliyorum sonra uzun bir low bekliyorum şayet ortadan daldıysam başa dönüp uzun low a bakıyorum oda dediğiniz gibi timeri1 sıfırlayıp süreleri diziye kaydediyorum sonrada sonrada verileri sürelere göre 1-0 ayrıştırıyorum
erol abim zahmet edip uzun uzadıya cevap yazmışın çok teşekkür ederim ama bilginin kötüsü olmaz diğer arkadaşlar bu yazıyı okusalar kesinlikle kafalarında birşey canlanacaktır malesef bişeyleri denemeden bazı şeyler olmuyor

anladığım kadarı ile bana önerdiğiniz protokol 3 byte olsun ikl 2bytesi şifreleme son byte buton bilgileri olsun diyorsunuz burayı kafama soktum

erol abi sizden bu tür projeler isteniyordur kumanda olayını nasıl çözüyorsunuz dediğim gibi pt2262 li olmayan EV1527 adetli kumanda bulunabiliyormu birde bu kumandalar kopyalanmaması gerekiyor sonuçta kepenk açıyor

benim düşüncemde kalıp kart malıyeti oluşturmadan yerli kumandaları alayım kendi protokolümü oluşturayım içerisindeki pic yazılımını değiştireyim bir şekildede kopyalanmasını önleyeyim lakin hukiki olarak bu insanlar benim kumandamı kullanıyor değiştiriyor diye sorun çıkarmazlar herhalde değilmi

bilgi paylaştıkça çoğalır!!

www.fayelektronik.com

ete

Kepenk işi çok enteresan. Bir kaç gün önce bu işle uğraşan bir arkadaşın söylediğine bakılırsa en çok gelen şikayetlerin başında kepenklerin kendi kendilerine kapanması yada açılması imiş. Kendi ifadesine göre havadan kod alıyor bu sistemler. Sebebide şöyle açıklanabilir sanırım.
EV1527 24 bit şifreleme kullanıyor ama bakarsanız 20 bit hiç değişmiyor ve yalnızca son byte'ın son 4 biti butonlara bağlı olarak değiştiriliyor. Buda ortalıkta bir sürü benzer kod (şifre) olmasına yol açıyor.
Bu gibi şikayetlerden kurtulmanın tek yolu ya kendi protokolünü kuracaksın ki bu iş için diğer protokollerin karması bir usul kullanabilirsin. Yada 24 Bit şifrelemede tek buton için yalnızca bir bit değiştirmeyeceksin. İlk ve ikinci byte larda da bazı bitleri o butona ait şifre olarak farklı değere getirmende yarar var.
Benden istenen projelerde genelde mevcut elciklere decoder sistemi isteniyor. Bu nedenle verici ile uğraşmıyorum ama lazım olunca da PT serisi yada piyasada ne bulursam onunla hallediyorum.
EV1527 içeren elcikler var (sanırım) piyasada. Aliexpress de bolca mevcut gerekirse oralardan temin edersin.
Önerim elcikte pic kullanıp kendi protokolünü yaratman. Üzerinde pic işlemci bulunan elcik bulabilirsen hazır süper olur bulamazsan onuda tasarlaman gerekecek. O zamanda kutu işi devreye girecek. Altınkaya ya bak onlarda olabilir boş kutu ve kutuya göre tasarım yapmak gerekir bunuda unutma.

Ete


fatih88

Aradığım cevap buydu hocam teşekkürler protokolü yazarım sıkıntı yok erol abi

Kepenk kendiliğinden açması genelde az filtre den kaynaklanıyor gibi elektrik gidip geldiğinde oluyordur muhtemelen ev1527 deki şifre proxymiti kartlarındaki gibi benzersiz şifre diyor ama ne kadar dogru

Bulunduğum firmada kontal kepenk kumandaları var birkez bile sapıtmadı kendi protokolünü kullanıyor çünkü
bilgi paylaştıkça çoğalır!!

www.fayelektronik.com

ete

Yanlızca protokol değiştirmek yeterli değil. Bulursun kendine gre bir protokol ama anında çözerler ve decoderini yaparlar. Değişken şifre algoritması geliştirmek gerekir. Kolay çözülmeyecek şifrelerin neredeyse %99'u rolling kod denilen değişken şifreleme mantığı. Her seferinde sabit bir şifre yerine her butona basılışta değişen bir şifre yollanır. Ama öyle bir algoritma kurarsınki alıcıda ne geleceğini bilir. Elindekilerle (hafızadakiler) geleni karşılaştırır ve uyum varsa tamam bu bizden der değilse hiç bir şey yapmaz. İyi şifreleme bu ve kolaylıkla çözülmeyecek bir mantık olması gerek. Bu konuda sadece akıl yada fikir geliştirmek için sitede bir konu açmayı düşünüyorum. Bakalım üyelerimiz ne gibi fikirler üretecekler. Hatta bu mesajı okuyanlar buradan da devam edebilirler fikir vermeye. Parametrelerimiz şunlar. Elimde 24 bitlik bir sayı olacak. Bunu karşıya (alıcıya ) yollayacağım ama her seferinde farklı bir sayı gitmesi gerek ama alıcıda gelen sayıları test edip yada algoritmasını uygulayarak gelen sayının doğru şifre yada yanlış şifre olduğunu anlayacak bu işi nasıl yaparız.  Çözümler bekliyorum.

Ete

fatih88

ete hocam bu rolling(yuvarlanan) kodu hafızam yanıltmıyorsa güney afrikada bir matamtikçi algoritma haline getirmiş ve milyon dolar bir paraya microchip piclerin üreticisine satmıştır

olay çok sıkıntılı hocam akıl ermiyor kumandayla alıcı arasında haberleşme yok ve her seferinde farklı kodu çözüyor öğrenen kumandalara bft kumandayı öğretiyorsun kapıyı 1 kere açıyor sonra bir daha o kumanda iş görmüyor

bu kadar paralar ödendiğine göre bunu yapmak zor kendi adıma konuşuyorum
bilgi paylaştıkça çoğalır!!

www.fayelektronik.com

Powered by EzPortal