Ücretli Pic Projesi

Başlatan By-Coders, 16 Şubat 2019, 12:40:37

ete

Hani derler ya "Bir Arpa Boyu İlerleme" sağlanamadı diye bu iş için geçerli bir terim.
Sebebi basit. Konu, kısmende olsa ticari bir konu ve kimse kendi bilgisi ve becerisi ile başkalarının para kazanmasını istemez. İşte bu nedenle bu konu fazla açık edilemiyor.

Bunu üzülerek söylüyorum. Çünki bu gibi konularda ikilem yaşıyorum. Burada bir yandan bilgi aktarmaya ve bilmeyenlere bir şeyler öğretmeye çalışırken bir yandan da aptal konumuna düşmemeye ve aç kurtlara bilgi kaptırmamaya çalışıyorum. Geçmiş dönemde bir çok projemin ticari olarak üretilip piyasada satıldığını gördüm. Hatta da enteresanını söyleyeyim. Utanmazın birisi yaptığım projeye para harcayıp satılacak ürün haline getirdiğini ve benden projemi siteden kaldırmamı bile istedi.

Daha çok şey yazabilirdim ancak konuyu daha fazla uzatmak istemiyorum.
Bu konu hakkında hazır proje vermek gibi bir niyetim yok. Ama bilgi almak isteyenlere bilgi veririm. Nasıl veririm onuda söyleyeyim. Genelde yaptığım gibi işin prensibini anlatırım . Dikkat edilecek husuları belirtirim hatta işin programa dönüştürülmesi aşamasınıda az çok anlatırım. Gerisi artık kişinin anlama ve yapma becerisine kalır.

Bu konuyu daha önce anlattığımı hatırlıyorum. Nerede hangi mekanda onu hatırlamıyorum ama yeniden bazı bilgiler vereyim.
Her bir RF (hatta IR) haberleşme sistemi bir protokol çerçevesinde yapılır. Protokoller bir birlerine benzeselerde pazı farklı parametreler kullanarak birbirlerinden ayrılırlar.
Temel prensipler şöyle;
- Her bir protokolde bir başlık (HEADER) sinyali bulunur. Bu yollanan ve alınması gereken bilginin başlığıdır. Hep Tren katar dizisine benzetirim bu işi. Başta lokomotif (HEADER) yer alır arkasından vagonlar (bilgi bitleri) gelir. Bütün bilgiyi tam olarak almak için öncelikle bilginin baş tarafını yakalamanız gerekir. Düşününki bilgi sürekli akan bir nehir gibi akıyor ve siz arada bir yerden okumaya başlıyorsunuz. Bilginin başını yakalamadığınız sürece okuduklarınızın bir anlamı olmayacaktır. Bu nedenle gerek RF olsun gerekse IR sistemlerinde olsun bilgi tekrarlanan bir mantıkla sürdürülür. Yani butona bastıkça aynı bilgi kısa aralıklarla tekrarlanır ki okuyan bilgininbaşını bir yerde yakalasın.

Başlık denilen bilgi kullanılan protokole göre farklılık göstermektedir. Genelde uzunca bir HIGH ve peşinden kısa bir LOW veya tersi şeklinde de olabilir. İşte bu HIGH - LOW bitlerinin standart uzunlukları protokolün belirtecidir.
Ardından gelen bilgi bitleri ise genelde HIGH-LOW şeklinde iki bitten oluşur ve bunlarında sabit süreleri vardır. Kod çözme işinde genelde yanlızca bir bit'in peşine düşülür. Buda farklı olandır daima. Örnek vereyim,
Header sinyal 9ms HIGH ve 4ms LOW şeklinde olursa ben LOW sinyalini yakalamaya çalışırım. Ama unutmayın şayet header deki 4ms lik LOW ise bilgi bitlerindeki LOW lar genelde bu süreden daha kısa olur. Bu nedenle headeri yakalamak kolay olur.
Farzedinki aynı sistemde HIGH biti 500us HIGH ve ardından 1000ms LOW şeklinde gelsin. LOW biti de tersi şeklinde 1000us HIGH ve 500us LOW şeklinde gelsin. Bu örnekte hem HIGH hede LOW bit değerine bağlı olarak değişiyor. Ama biz LOW kısmını kullanabiliriz. Çünki iki bit arasında bir HIGH kısım olacak illaki ve sizin komut gecikmeniz esnasında o HIGH kısım geçtikten sonra size düşen LOW kısmını yakalamak olacaktır.
Bu örnekte öncelikle PULS sürelerini okuyarak (ölçerek) sürenin 4ms (4000us) ye ye uyup uymadığını test edersiniz. Uyduğu anda ardından gelen kaç adet kod biti varsa onlarında yanlızca LOW bit sürelerini değişkenlere kayıt edersiniz. Çözmeye kalmayın bitleri kaçırırsınız. Bütün bitleri bir dizi değişkenine kayıt ettikten sonra artık onları çözmeye gelir sıra. Sürelere bakarak 500us ise HIGH, 1000us ise LOW şeklinde karar verir ve bu bilgilerle 16 bitlik bir değişkeni bit bit oluşturursunuz ki buda size şifreyi verecektir. Şayet şifre bitleri 16 bitden fazla ise ikinci bir byte değişkeni (toplamda 24 bit eder) yada 16 bit değişken (toplamda 32 bit eder) kullanarak tüm şifreyi çözersiniz.

Burada bir ip ucu daha vereyim. Okunan süreler sonuçta timer kullanılarak okunur. Bu iş için PULSIN gibi bir komut kullansanız da aynı süreye sahip iki bitin okuma değerleri ufak tefek farklılıklar arz eder. Birinde 1000 diye okuduğunuz raka diğerine 998 çıkabilir. İşte bu gibi durumlardan kurtulmak için daima okunan değerin en yüksek bitine tekabül eden sayıyı kullanın.
BU ne anlama geliyor açıklayayım. 8 bit üzerinden anlatırsam daha kolay anlarsınız.
1.okunan değer=%11100011 olarak okundu diyelim bu desimal olarak 227 dir. İkinci okumanın 230 yani  %1110 0110 olduğunu varsayarsak bu ki okuma eşit olmamakla birlikte aynı süre için okunan iki değerdir. Şimdi her iki okuma değerinin en yüksek değerlikli bitlerine bakalım nedir 8. bitleri 1 dir. o halde he riki okunan değer benim için 8 dir. yada %100000000=128 dir.
O halde bu iki okumayı 128 gibi düşünmek gerekir. Bir başka okuma %01001100 ise bu %01000000=64 sayısı yada yüksek değerlikli bit açısından 7 sayısıdır. Bu durumda iki okuma bir birine eşit değildir diye kolaylıkla düşünülebilir.
Kısaca söylemek istediğim okunan sürelerin küsüratlarna bakmayın en yüksek bitine tekabül eden sayı ile okunanları karşılaştırın. Böylece sisteminiz hiç hata yapmaz okumada.
Diyelimki 16 adet bit sürelerini OKU[24] dizi değişkenine kayıt ettiniz.
Bunları nasıl çözüp de şifre sayısını oluşturacağız onada bakalım.
SIFRE=0 şeklinde en başta sayımızı sıfırlayalım.
Ardından bit sayısı kadar döngü kuralım.
FOR X=0 to 15
  IF OKU[X]=8 THEN SIFRE.0[X]=1
NEXT şeklindeki bir kod dizilimi size bunu yapacaktır.
OKU[X]=8 eşitliğinde 8 değeri en yüksek bitin sırasını söylüyor. Bunu yapan komut NCD dir basic de. Bu durumda IF NCD OKU[X]=8 şeklinde de kullanabilirsiniz şayet OKU içine direk süreleri kayıt ettiniz ise.
Diğer komut ise SIFRE.0[X]=1 sifre isimli değişkenin X nolu bitini 1 yap anlamında kullanılır. X değiştikçe bitlerin sırasıda değişir ve beöylece 0-15 arası bitleri bu şekilde tayin edersiniz.
Sonuçta SIFRE değişkeni size SIFRE değerini verir.

Bu anlattıklarımı değerlendirebilen değerlendirir. Anlamayan ise bilgisini geliştirmeye baksın.
Benden bu kadar.

Ete

Powered by EzPortal