fatiherdem.net üstresimdir
RF Alıcı-Verici Modüllerinizi Test Edin! / 25 Ağustos 2008

Çok yaygın olarak kullanılan en basit RF alıcı-verici modüller ilk çalıştırılması sırasında sorun çıkarabilmektedir. Ben bu zamana kadar UDEA’nın atx-arx ve Keymark’ın modüllerini kullandım. Bu modülleri farklı amaçlar için çalıştırmıştım aradan zaman geçtikten sonra farklı uygulamar için bu modülleri kullanmak istediğimde ilk yazdığım koda dönüp bakmak durumunda kaldım. Çünkü her kod bu modülleri çalıştırmıyor. Yaygın bir görüşe göre bu basit modüllerin en büyük sıkıntısı uyku, veri göndermediğimiz zaman alıcı modül gelecek ilk veri için hazırlıksız durumda oluyor, tabiri caizse uyuyor. Verimizi kendisine sağlıklı bir şekilde ulaştırmak için önce alıcıyı uyandırmak (demodülasyon için clock işaretinin düzgün geldiğine emin olmak-eğer senkron demodülasyon yapılıyorsa-) gerekiyor. Bunun için de verimizden önce bir takım işaretler(uyandırma işareti) gönderiyoruz. UDEA nın uygulama notlarında hem bu işlem yapılmış hem de senkronizasyon için bazı düzenlemeler yapılmış. Keymark’tan ise ses yok, katalog bilgisini bile zor bulabiliyoruz ya da ben bulamadım.


Solda udea, sağda keymark çifti.
Geçtiğimiz günlerde bu iki modül için de minimum test devresi ve minimum test yazılımı oluşturmaya karar verdim ve iki modül için de denedim, denemeler başarılı. Modülleri test etme aşamasına gelmeden önce donanım ile alakalı problemleri aşmış olmamız gerekiyor, devrenizi kurup son haline getirdiğinize kanaat getirdikten sonra tüm gerilimleri voltmetrenizle kontrol ettiniz mi? Keymark modüller için verici besleme geriliminin 3V olduğuna emin misiniz? Her iki(alıcı-verici) devre için de besleme gerilimlerinin iyi regüle edilmiş olduğuna emin misiniz? Nitekim ben deneme yaparken kullandığım şarjlı pilin pic i çalıştırdığını ama çok kararlı olmadığını fark edip pili şarj ettikten sonra kullandım.

Bir de bu modülleri kullanmak isteyen arkadaşların ilk aklına gelen test devresi verici tarafın data girişine DC uygulayıp alıcı tarafın data çıkışında led yakmak oluyor. Bu benim zamanında hiç düşünmediğim bir olaydı. Belki de DC bir işaretin modüle edildiğine hiç rastlamadığımdandır. Bahsettiğim test devresinde(çalıştığını görüp emin olduğum) bu olayı denedim, verici girişine DC(5V) verdim ve alıcı çıkışına bir led bağladım, led yanıyordu ama girişi toprağa çektiğimde de yanıyordu. Yanma dediğim de kararlı bir yanma değil, seğirme şeklinde(her iki durumda da). UDEA teknik döküman sayfasında modüller için UHF bandında ASK(amplitude shift keying) kullanıldığı söylenmiş. Şimdi bu(ASK) ON-OFF keying şeklinde de olabilir yani modüllerimiz lojik 1 için 433 MHz lik bir işaret gönderirken lojik 0 için hiç bir şey göndermiyor veya farklı genlik seviyeleri kullanılmış olup lojik 1 için A genliğinde 433 MHz lik bir işaret gönderirken lojik 0 için B genliğinde 433 MHz lik bir işaret gönderiyor olabilir. Eğer ilki gibiyse verici girişini toprağa çektiğimizde hiçbir şey göndermiyoruz demektir, alıcımız ortamdan ne gürültü alıyorsa ona göre ledi yakacak demektir. Alıcı modülün data pininin led sürme kabiliyeti ise ayrı mesele… Yani bana sorulursa bu modüllerle DC gönderme işi uygun değil. Eğer uzaktan kontrol etmek istediğiniz elemanlar led, röle gibi bir bitle kontrol edilecek elemanlar ise PIC kullanmaksızın PT2262-PT2272 çiftini kullanarak rf modüller üzerinden güvenli bir şekilde veri gönderebilirsiniz.

Gelelim kendi test devremize, öncelikle biz test verisi olarak kullandığımız mikro(PIC)lar tarafından desteklenen RS232 protokolüne göre ‘A’ veya ‘B’ verilerini göndereceğiz ve alacağız(DC değil). Dolayısıyla her iki tarafta da PIC olacak, kutumda 16F628(verici) ve 16F628A(alıcı) vardı ben onları kullandım. Kodları diğer pic lere uyarlayabilirsiniz.

Testimiz şöyle:
alici.hex ve verici.hex dosyaları uygun PIC lere yüklendiyse şemadan da takip edebileceğiniz gibi:
Alıcı tarafta A0 ve A1 pinlerine bağlı iki ledimiz var, bu ledler şuna göre yanıyor: Eğer son gelen veri ‘A’ ise A1 pinine bağlı led yanacak, eğer son gelen veri ‘B’ ise A0 pinine bağlı led yanacak. Verici tarafta ise B4 ve B5 pinlerinden en fazla bir tanesini toprağa çekeceğiz. Eğer B4 pini toprakta B5 pini VDDde ise ‘A’ gönderiyoruz, B4 pini VDDde B5 pini toprakta ise ‘B’ gönderiyoruz. Bu işlem için “buton” kullanmayalım, boşta bıraktığımız kablolarla istediğimiz pini toprağa çekme işlemi yapalım. Yapılacak nihai işlem bir pini toprakta diğer pini VDDde bırakmak ve test için toprak-VDD sırasını değiştirmek. Böylece herhangi bir durumda (‘A’ gönderirken veya ‘B’ gönderirken) verimizi kısa bir sürelik değil sürekli gönderiyor olacağız, tabiri caizse alıcımızı veri yağmuruna tutacağız. Bu durumda alıcı modülün uyanmama, geç kalma gibi bir sorunu olmuyor. Alıcı için verimizi alabileceği en kesin durumu sağlıyoruz.
Her testin bir geçme-kalma şartı vardır, bizim testimizin şartı ledlerin yanıyor olması değildir, gönderdiğiniz veriyi değiştirdiğinizde alıcıda yanan ledin değişmesidir. Yani devrenizin doğru değişikliğe doğru cevabı vermesidir. Nitekim alıcıdaki ledlerin yanması çok olası bir durum, şöyle ki: verici kısmı çalıştırmadan önce alıcı kısmı çalıştırın, ne görüyorsunuz? Bir süre sonra ‘A’ verisine ait led yandı veya ‘B’ verisine ait led yandı… Bu verileri bizim göndermediğimiz kesin(verici devrenin beslemesi bağlanmadı) peki kim gönderiyor? Nasıl olur da biz veri göndermeden alıcımız sanki doğru verileri almış gibi ledleri yakıyor!
Bu bir şekilde oluyor arkadaşlar, çevreden gelen bazı etkiler modülleri yanlış yorumlatabiliyor. Bu gözlem modüllerin ne gibi yanlış anlaşılmalara yol açabileceği açısından faydalı bir gözlem(verici devreyi çalıştırmadan alıcı devreyi çalıştırıp olup biteni gözleme).
Bu yüzden modülleri test ederken doğru değişikliğe doğru tepkiyi vermelerinin gerektiğini söyledim.
Öncü veri kullanarak bu yanlış anlaşılma durumunun çok büyük ölçüde önüne geçebiliyoruz, dileyen arkadaşlar ekteki dosyalarda pre_alici.c ve pre_verici.c ye bakabilirler. Ancak bizim şu anki konumuz modülleri en basit şekilde çalıştırmak, doğru değişikliğe doğru tepki verdiğini görmek. Devreyi proteusta çizip simüle ettim(kablolu haliyle), kurduğum devre simülasyon ortamındakinden farksız sadece kablo yerine modülleri bağladım:

Bu arada bu test devresi ve vereceğim test yazılımında iki modül de gayet başarılı bir şekilde çalışıyor ancak keymark biraz nazlandı, bir kaç defa reset attım sonra düzgün çalışmaya başladı. Bir de yazarken aklıma geldi keymark modülleri birbirinden 1m kadar uzaklaştırıp denemekte fayda olabilir. Son olarak modüllerimizi yakın mesafede test ettiğimiz için anten bağlamaksızın çalıştırabiliyoruz. Aynı test devresini daha uzak mesafelerde denemek için 50 ohm empedanslı 17 cm uzunluğunda anten kullanabilirsiniz. 50ohm luk anteniniz yoksa 17cm lik metal bir tel kullanabilirsiniz(50 ohm luk antene göre daha düşük verimle çalışacağını kabullenerek)

verici.c

//UDEA ve Keymark RF atx arx alıcı-verici modüller için test programı, 6 Mayıs 2008
//verici.c
//fatiherdem.net
#include <16f628.H>
#fuses INTRC_IO, NOMCLR, NOPROTECT, NOWDT, NOLVP
#use delay(clock=4000000)
#use rs232(baud=600, xmit=PIN_B2, rcv=PIN_B1)
 
void main(){
output_high(pin_b3); //calisma gostergesi
while(1){
if(!input(pin_b4) && input(pin_b5)){
putc('A');
}
if(!input(pin_b5) && input(pin_b4)){
putc('B');
}
 
}
}

alici.c

//UDEA ve Keymark RF atx arx alıcı-verici modüller için test programı, 6 Mayıs 2008
//alici.c
//fatiherdem.net
#include <16f628A.H>
#fuses INTRC_IO, NOMCLR, NOPROTECT, NOWDT, NOLVP
#use delay(clock=4000000)
#use rs232(baud=600, xmit=PIN_B2, rcv=PIN_B1)
 
void main(){
char a=0;
output_low(pin_a0); //cikislari temizle
output_low(pin_a1);
output_high(pin_b3); //calisma gostergesi
 
while(1){
a=getc();
if(a=='A'){
output_high(pin_a1);
output_low(pin_a0);
}
if(a=='B'){
output_high(pin_a0);
output_low(pin_a1);
}
 
}
}

Bir resim:

İlgili tüm dosyalar:
Simülasyon(proteus) + kod(verici.c, alici.c, pre_verici.c, pre_alici.c, *.hex)

Modüllerin Katalogları (UDEA ve Keymark için)

Çalışmayla ilgili resim-video (60 Mb) (Öğretici içerik notu: %15)

Benzer yazılar:

“RF Alıcı-Verici Modüllerinizi Test Edin!” için 42 Yorum

  1. gevv

    test önemli elektronik şanş işi çok kalitesiz parçalar var piyasada yada beklemiş atx ve arx modüller ile uğraşan kişilerin bir köşede bulundurmaları gereken bir devre Teşekkürler

  2. ibrahim

    Fatih bey, Açık olmadığını düşüdüğünüz bilgileri, ürünlerin kılavuzuna ekliyeceğiz. Verilen bilgiler için teşekkür ederiz. Not: ARX ve ATX kodları udea tarafından üretilmekte olan ASK modüllerinden bir alıcı ve bir vericinin model ismidir.

  3. Fatih

    Öncelikle yorumunuz için ben teşekkür ederim. arx-atx modülleriniz oldukça yaygın olduğundan selpak-peçete misali modülleri arx-atx olarak adlandırmışım, gerekli düzeltmeleri yaptım. Bence kılavuz ve örnek kodlar modüllerin kullanılması için gayet yeterli, bir yerde ASK ama OOK mi diye sormuştum ancak bu bilgi modüllerin kullanılmasıyla pek de alakalı değil. Size iyi çalışmalar, başarılar dilerim. Saygılar.

  4. ibrahim köroğlu

    bu keymark modüllerin analog ve dijital olanları varmış. bunların analogmu dijital mi olduğunu nerden anlıycaz yani ask mi fsk mı. elimde modül var ama ask olduğundan emin diğilim nerden örenebilirim üstünde yazmıyor.

  5. Fatih

    Modüllerinizin katalogundan(datasheeti) bu bilgileri öğrenebilirsiniz. Katalogları bulmak için modülünüzün üzerinde yazan ismi googleda arayabilirsiniz.

  6. enes

    Simülasyon(proteus) + kod(verici.c, alici.c, pre_verici.c, pre_alici.c, *.hex)
    dosyalara ulaşa mıyorum yardım edermisiniz

  7. admin

    Bağlantıyı yeniledim, kusura bakmayınız, uyardığınız için teşekkür ederim. İyi çalışmalar dilerim.

  8. Yasin

    Fatih bey, deneyimlerinizi paylaştığınız için teşekkürler. Çok yardımcı oldunuz.

  9. ENGİN KANAT

    FATİH BEY KOLAY GELSİN, ESKİ BİR KONU ANCAK BANA YARDIMCI OLABİLECEĞİNİZİ DÜŞÜNDÜM RF İLETİŞİMDE BİR DEN FAZLA VERİCİDE VE BİR ALICIDA DOĞRU VE TEMİZ BİR İLETİŞİM SAĞLAYABİLMEK İÇİN BANA NE ÖNERİRSİNİZ? BEN BU BAŞLANGIÇ BİTİNİ BİTİŞ BİTİNİ İLETEN VE ALAN ARASINDA NASIL KULLANACAĞIM
    NOT : C DİLİNİ BİLMİYORUM BASIC İLE YARDIMCI OLURSANIZ SEVİNİRİM
    TEŞEKKÜRLER

  10. Hasan

    Arkadaşlar,
    Şu “&amp” işlevini kısaca açıklayacak bir arkadaş var mı acaba.
    İnternette bi aratma yaptım. Bilgi kirliliğinden hiç birşey bulamadım.
    Programı biraz değiştirerek kullanmak istiyorum ama bu mantığı anlayamadım.

    void main(){
    output_high(pin_b3); //calisma gostergesi
    while(1){
    if(!input(pin_b4) && input(pin_b5)){
    putc(‘A’);
    }
    if(!input(pin_b5) && input(pin_b4)){
    putc(‘B’);
    }

    }
    }

  11. admin

    “&amp” ler kullandığım kod editörünün hatası, kodda “&amp” yerine & olması gerekiyor. Şimdi düzelttim. Mantığı şöyle: B4 ve B5 pinlerini biz kontrol ediyoruz. B4 pini lojik0, B5 pini lojik1 yaptığımızda A verisini gönderiyoruz, tam tersi durumda B verisini gönderiyoruz. İyi çalışmalar.

  12. Hasan

    Zaten copy/paste yapınca daha anlaşılır oldu :)
    Hızlı cevabınız için teşekkürler.

  13. Selim GÖREN

    Merhabalar. Ben rf alıcı vericiler hakkında bi deneyimim olsun istiyorum. bu yüzden bir çift almayı düşünüyorum. Sizce bu yukarıdaki markalardan birinimii tercih edeyim?+maliyet olarak tahmini ne kadardır?

  14. admin

    Ben keymark modüllerin alıcı-verici çiftini 10 TL ye almıştım. UDEA lar daha pahallı, ikisi de kullanılabilir.

  15. Hasan

    Merhaba,
    Ben UDEA’dan online sipraiş ile aldım.
    Aşağıdaki ki linkten bakablirsin

    http://www.udeashop.com/index.php

  16. gökay

    Fatih bey elim de rf alıcı -verici modül var. sizin test devresini kurdum.Bu modülleri ilk denememde sizin dediğiniz gibi ben bilgi yollamasam bile alıcı taraf kendi başına led yakıp söndürüyordu.Bende alıcıdaki trimpotun ayarını oynadım şimdi ne rastgele yanıyor, ne de benim yolladığıma göre yoksa alıcı modülüm bozuldu mu?Bir sorumda alıcıdaki o bobin sarılı trimpotun görevi nedir?

    cevap yazarsanız sevinirim.kolay gelsin

  17. admin

    Alıcı üzerindeki bobin frekans ayarı için, alıcı modülü 433 MHz veya 315 MHz bandında kullanmak isteyenler olabildiği için alıcı modüllere öyle bir seçenek koyuyorlar diye biliyorum. O bobinin ayarıyla hiç oynamamak gerekiyor, aldığınızda 433 MHz e ayarlıdır. Modül bozulmamıştır, bobin ayarı düzeltilebilir tabii ki.

    Evet, veri göndermesek de ledler yanabiliyor, bu durumun önüne öncü veri göndererek geçiyoruz ancak test devresinde amaç sadece çalıştığını anlamak. O test devresinde modüllerin çalıştığını anlamak için doğru değişikliğe doğru cevabı test etmeniz gerekiyor.

    Yerinizde olsaydım test devresini kurar ve bobinin değerini küçük küçük çevirerek eski değerini bulmaya çalışırdım veya şöyle bir şey tavsiye ediliyor: Alıcının çıkışını not kapısından geçirip mini hoparlöre bağlayınız. 433 MHz lik vericinizden de rastgele bilgi gönderiniz. Bobini çevirerek hoparlörden duyduğunuz sesin en şiddetli olduğu yeri bulunuz, ben bu yöntemi hiç denemedim.

    En olmadı yeni bir çift modül alıp bobiniyle hiç oynamadan test devresini çalıştırırsınız sonra eski ayarı bozulmuş modülü ayarlayabilirsiniz.
    İyi çalışmalar.

  18. murat örs

    arkadaşlar verici modulden gönderdiğiniz dataları alcınıza dogru aktarmanız için checksum kullanmanız gerekiyor aksi takdirde havadan gelen datalar ile ledleriniz halen yanıp sönmeye devam edecektir.ve ayrıca önce donanım senkronu için preamble (“UUUUU” ve sonra soft sencron için herhangi bir karakter gönderin ve alıcıda sürekli bu karakteri bekleyin.karakter gelir gelmez diğer dataları alın ve csum kontrolunyapın

  19. ONUR ÇITIR

    merhabalar.ben geçenlerde bitirme tezim için udea firmasının ufm-a12wpa modem modülünü aldım,sanırım bu modül çoğu işi yapıyor diğer modüllerde ayarlamamız gereken,bu modülü karşılıklı data alış verişi için kullanmam esnasında nasıl bir yol izlemeliyim.hi-tech c dili düşünüyorum ama pic basic daha mı kolay olur ve de preamable synchronization falan göndermem gerekmiyor sanırım.yardımcı olursanız sevinirim.iyi günler diliyorum

  20. Çetin

    Merhabalar;
    2 ayrı rf vericiden tek bir alıcıyla bilgi almaya çalışıyorum.
    her 2 cihazıda ayrı ayrı test ettiğimde problem yok,
    ama aynı anda çalıştıklarında alıcı tarafındaki pic kilitleniyor.
    rf setim keymark tipi sanırım.
    pic te 2 ayrı alıcı ilede almaya çalıştım yine olmuyor.
    farklı frekanslarda da denedim yine başarılı olamadı

    ALICI Tarafında
    serin2 porta.0,1646,[wait("b1"),y1]
    serin2 porta.0,84,[wait("a1"),x1]

    VERICI Tarafında
    serout2 portc.6,1646,[REP$AA\5,REP$00\5,REP$FF\5] ‘uyandırma işareti yolla
    serout2 portc.6,1646,[("b"),("1"),toplam]
    diğer vericide
    serout2 portc.6,84,[REP$AA\5,REP$00\5,REP$FF\5] ‘uyandırma işareti yolla
    serout2 portc.6,84,[("a"),("1"),toplam]

    şeklinde pic programları çalışıyor, yardımcı olabilirseniz çok sevinirim.

  21. KIRIKDR

    hocam güzel çalışma eline sağlık..

  22. Ahmet

    ben bu konu merak ediyorum araştırıyorum ama ya bazılarını anlayamadım
    1 radyo frakans vericisi ve alıcını nereden alacagım
    2 bunu bilgisayara hangi porttan baglayacagım
    3 dil olarak c# da visual stdio 2005 de yazsak hangi kod ları yazacagız
    4 bu devreyi kendileri çizenler nasıl çiziyorlar
    5 rf verici alıcı ile bildigimiz radyodan dinleyebilir miyiz
    6 rf verici alıcının her türlü veri transveri yapabilirmiyiz
    7 rf verici alıcı açık alan dan kaç metre ye kadar çekiyor
    şimdiden teşekkür aderim

  23. admin

    1 radyo frakans vericisi ve alıcını nereden alacagım
    - Çeşitli kalitede ve türde RF modüller İstanbul Karaköy den, Ankara Konya Sokak tan veya internetten satış yapan sitelerden alınabilir
    2 bunu bilgisayara hangi porttan baglayacagım
    - UART ile haberleşen modüller için bilgisayarınızın seri portunu(RS232 portunu) UART a dönüştürüp kullanabilirsiniz
    3 dil olarak c# da visual stdio 2005 de yazsak hangi kod ları yazacagız
    - C# da serial port nesnesi var
    4 bu devreyi kendileri çizenler nasıl çiziyorlar
    -
    5 rf verici alıcı ile bildigimiz radyodan dinleyebilir miyiz
    - Bildiğimiz radyolarda fm radyo bandında yayın yapan frekans modülasyonlu ve AM radyo bandında yayın yapan genlik modülasyonu işaretler alınabilir, yaygın olarak kullandığımız modüller 433 MHz de çalıştığından dinleyemezsiniz.
    6 rf verici alıcının her türlü veri transveri yapabilirmiyiz
    - Modüllerin azami hızları bellidir, hız izin verdiği sürece her şeyi gönderebiliriz.
    7 rf verici alıcı açık alan dan kaç metre ye kadar çekiyor
    - Modülün çıkış gücüne göre değişir, güç-menzil veremeyeceğim.

  24. fikret cüre

    kardeş 16f877 içinde aşağıdaki kodlar geçerli olur mu yada nasıl bir değişiklik yaparım yardımcı olursan çok tşk ederim

    #fuses INTRC_IO, NOMCLR, NOPROTECT, NOWDT, NOLVP
    #use delay(clock=4000000)
    #use rs232(baud=600, xmit=PIN_B2, rcv=PIN_B1)

  25. admin

    INTRC_IO dahili osilatörü aktif etmek için ancak 16F877 de dahili osilatör olmadığından geçersiz bir fuse. 4MHz veya 20MHz kristal bağlamalısınız. Bu uygulamada 4 MHz bağlayabilirsiniz. Ayrıca 16F877 de NOMCLR de geçersiz bir fuse.
    Özetle; 16F877 için aşağıdaki fuse satırını yazdıktan sonra 4MHz kristal bağlayın ve MCLR pinini 10K direnç ile 5V a bağlayın.
    #fuses XT, NOPROTECT, NOWDT, NOLVP

    İyi çalışamalar.

  26. fikret cüre

    her iki ledi yakmak istesek iki girişi de 1 yapmamız mı gerekiyor yoksa c dosyasını mı değiştirmemiz lazım hocam

  27. admin

    Evet, kodda düzenleme yapmak gerekir,
    if(!input(pin_b4) && input(pin_b5)){
    şeklinde yazıldığından iki girişi de 1 yaparsanız ne A ne de B datası gönderilir.

  28. fikret cüre

    getc ve putc fonksiyonları ne anlama geliyor hocam son sorum

  29. admin

    putc ile TX pininden bir byte veri gönderilir, mesela putc(degisken); degiskeni TX pinininden dışarı gönderir. getc ise RX pininden gelen bir veriyi herhangi bir değişkene atamak amacıyla kullanılır yani gelen veriyi almak için kullanılır. Veri geldiğinde -eğer ayarlanırsa- kesme altprogramı çalışır, kesme altprogramı içerisinde
    gelen_data=getc(); şeklinde veriyi gelen_data değişkenine yazabilirsin. Bu tarz bilgiler için CCS C nin helpinden de faydalanabilirsin. picproje.org forumlarında örnek kodlar da verilmişti. İyi çalışmalar.

  30. fikret cüre

    karaköyden alsam alıcı verici modülü hocam bir sorun olur mu ?

  31. admin

    Sorun olmaz, ben de oradan alıp kullanmıştım.

  32. fikret cüre

    hocam verici için

    /*Fikret Cüre – Verici Devre*/
    #include
    #fuses XT,WDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NODEBUG,NOCPD
    #use delay (clock=4000000)
    #use fast_io(b)
    #use fast_io(a)
    #use fast_io(c)
    #use rs232(baud=600, xmit=PIN_c6, rcv=PIN_c7)

    void main(){
    output_high(pin_b3); //calisma gostergesi
    while(1){
    if(!input(pin_b4) && input(pin_b5)){
    putc(‘A’);
    }
    if(!input(pin_b5) && input(pin_b4)){
    putc(‘B’);
    }

    }
    }

    alıcı için ise

    /*Fikret Cüre – Alıcı Devre*/
    #include
    #fuses XT,WDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NODEBUG,NOCPD
    #use delay (clock=4000000)
    #use fast_io(b)
    #use fast_io(a)
    #use fast_io(c)
    #use rs232(baud=600, xmit=PIN_c6, rcv=PIN_c7)

    void main(){
    char a=0;
    output_low(pin_a0); //cikislari temizle
    output_low(pin_a1);
    output_high(pin_b3); //calisma gostergesi

    while(1){
    a=getc();
    if(a==’A'){
    output_high(pin_a1);
    output_low(pin_a0);
    }
    if(a==’B'){
    output_high(pin_a0);
    output_low(pin_a1);
    }

    }
    }

    kodu yazdım ama çalışmadı nerede sorun vardır sizce ?

    isis çizimi de şu şekilde : http://fikretcure.clan.su/isis877.jpg

  33. kartal

    iyi günler öncelikle elinize sağlık çok güzel bir paylaşım teşekkürler
    Bende bu devreyi aynen yapmak istiyorum sıfırdan tüm malzemelerin listesini yazabilir misiniz?

  34. admin

    Merhaba, çok az malzeme ile bu test devresini kurabilirsiniz, malzemeler teste özel değil, mikrodenetleyicilerin çalışması yeterli, yine de kullanılan malzemeleri yazayım:
    RF alıcı ve verici modül
    2 adet PIC16F628(veya PIC16F628A),
    4 adet led,
    2 adet 220 ohm,
    2 adet 10kohm,
    2 adet 7805 regülatör(5V besleme için ),
    İyi çalışmalar.

  35. fikret cüre

    Aynı anda birden faz data aktarımı olabilir mi ? Yani Verici devreden A ve B butonlarına aynı anda basıldığı zaman alıcı devredeki 1. ve 2. ledleri aynı anda yakabilir miyim ?

  36. emin

    Merhaba. Karşılıklı iletişim kurabilen bir sistem tasarlamam gerekiyor. Aynı işlemciye hem alıcı hem de verici bağlayabilir miyim?

  37. ferdem

    Merhaba. Evet bağlanabilir ancak taraflar hem alıcı hem verici olacaksa bu sistem yerine uygun fiyatlı rf tranceiver lar kullanılabilir. Uygun fiyatlı rf tranceiver lar eskiye göre ülkemizde çok daha kolay bulunabilmektedir. İyi çalışmalar.

  38. murat

    Fatih hocam merhaba,

    şöyle bir sorunum var benim, rf ile sıcaklık bilgisini iletiyorum. verici tarafında uyandırma ve sencron işareti olarak pre[16]=”UUUUU00000FFFFF” gönderiyorum. ardından 10 kez kontrol işareti + sicaklik bigisini gönderiyorum. alıcı tarafında kontrol işaretine bakmadan gelen tüm dataları ekrana yazdırdığımda sıcaklığında iletildiğini görüyorum aslında ama preamble datasını da ekranda yazdırdığı için çok fazla gürültü oluyor. Bu konuda yardımcı olabilir misiniz? Usart kesmesi içinde kontrol işaretden sonra datayı nasıl okuyup ana programa ileteceğim? teşekkür ederim..

    for(i=0;i<16;i++) //16 karakterli preamble + sencron datası gonderiliyor
    {
    while(!TXIF)
    continue;
    TXREG = pre[i];
    }

    for(i=0;i<10;i++) //C kontrol isareti ve data 10 kez gnderiliyor kesin olsun diye.
    {
    while(!TXIF)
    continue;
    TXREG = 'C'; //kontrol isareti

    while(!TXIF)
    continue;
    TXREG = santigrat;
    //while(!TRMT);
    }

    alıcı tarafında ise usart kesmesi ile datayı okuyorum. usart kesmesi içinde "kontrol işareti geldikten bir sonraki datayı ekrana yazdır" işini beceremedim.

    void interrupt kesme(void)
    {
    if(OERR==1||FERR==1) //overrun veya framing error olusursa
    {
    CREN=0; // Re-enable receiving
    CREN=1;
    hata_flag=1;
    }
    else
    {
    if(RCIF==1&&RCIE==1)
    { data=RCREG;
    if(data=='C') //baslangic isareti=A ise, lcd'de goster
    {
    sicaklik=getch();
    }
    }
    RCIF=0;

    }

  39. ferdem

    Merhaba
    data=RCREG;
    if(data==’C') //baslangic isareti=A ise, lcd’de goster
    satırıyla ‘C’ nin geldiğini kontrol ediyoruz, gelen C ise bize bir sonraki gelecek data lazım.
    sicaklik=getch(); satırıyla bir sonraki data alınmaz çünkü zaten ‘C’ verisinin alındığı durumdayız.
    Birçok yöntem kullanabilirsiniz:
    1) En basitinden C den bir sonraki gelen datayı almak için:
    data=RCREG;
    if(data==’C') //baslangic isareti=C ise, lcd’de goster
    {
    c_alindi=1;
    return;
    }
    if(c_alindi==1){
    gelen_veri=data;
    c_alindi=0;
    }

    Bu gibi algoritma olarak ben uyandirma+N*oncu+M*data şeklinde gönderiyordum. Alıcı tarafta da diziden_sec şeklinde bir fonksiyon kullanıyordum, sitede örneği vardı. Kablosuz seri haberleşmede hatanın azaltılması adında bir yazı. Oradaki kod size fikir verir. Gelen veriyi illa da byte byte düşünmek zorunda değiliz, bir diziye dizer dizi üzerinde rahat rahat işlem yapar kararı öyle verebiliriz, sonuçta RCIF kesmesiyle veri byte byte geliyor ister uzunca bir diziye dizin karar verin ister sadece prev_data degiskeni kullanarak arka arkaya gelen 2 byte a göre kararı verin. Bunları modüllerin çalışacağı ortamda deneme yaparak görmek lazım. İyi çalışmalar.

  40. murat

    Aynen dediğiniz şekilde yaptım fatih hocam, sonuç başarılı. Çok teşekkür ederim. iyi çalışmalar.

  41. kadir

    Bende okul için btirme projesi hazırlamaya çalışıyorum UDEA çifti var bende Röle kontrol etmek istiyorum bi kaç siteden yardım almaya çalıştım ama başarılı olamadım test etmem için c# dilinde yardıma ihtiyacım var ayrıca simalasyonda atx ile arx yokk kednileri hazrlayıp kutuphaneye koymş olmaları lazım bende hazırladım koyduım ama çalışmıyor galiba atx ile arx in iç semasını cizip simalasyona eklemem gereklıymış sanırsam bende iç semasını bulamadım o yusden test için bi yazılıma ihtiyacım var sizin test için bi yazılım buldum ama ondada #include <16f628.hgt; bu sekılde yzıyor bende aynı sekılde yazdım ama derlemede problem cıkartıyor & & yazıyor bunlarda derlemede hata gosterıyor nasıl yazmam gerekıyor yardımcı olursanız sevınırım arkadaslar

  42. ferdem

    Kadir, 16F628.h yazısında normalde köşeli parantezler olması gerekiyor ancak sitede kullandığım kod içerisinde hatalı görünebiliyor. Normal köşeli parantezler arasına yazılmalı.

Yorum Yapın

2007 © fatiherdem.net | İrtibat Formu | RSS