RF Alıcı-Verici Modüller

      RF Alıcı-Verici Modüller için 38 yorum

“Basit elektronik uygulamalarımız için en ideal uzaktan haberleşme yöntemi üzerinde sadece besleme, toprak, data ve anten pinleri bulunan hazır RF alıcı-verici modül kullanmaktır. Bu zamana kadar ben bir Türk firması olan UDEA’nın ürettiği ve bir de markasının tam olarak belli olmadığı üzerinde süslü bir “K” harfi bulunan RF modüllerle tanıştım(marka sanırım keymark, modüllerin resmi için buraya tıklayınız -resmi çeken RoMeO123 e teşekkür ederim-). Ben UDEA nın modüllerini henüz hiç kullanmadım, 2. bahsettiğim modüllerden elimde 2 çift var ve bu modülleri en sonunda geçtiğimiz haftalarda çalıştırabildim. Çalıştırmak için uğraştım çünkü çeşitli problemler çıktı, problemlere gelmeden önce şunları söylemek istiyorum: UDEA nın modülleri dururken (ve kullanan arkadaşlarım varken) gidip Karaköy’den internette kataloğu bile çok zor bulunan bir RF modül almak hiç akıl karı değildi. RF modül alacak arkadaşlara piyasada bulabiliyorlarsa UDEA nınkileri almalarını bulamıyorlarsa UDEA dan bu modülleri talep etmelerini tavsiye ederim, modüller kısa zaman içinde adresinize gönderiliyor(ödemeyi verdikleri adrese havale yoluyla yapabiliyorsunuz). RF modüllerin fiyatları 10 YTL ile 16 YTL arasında, siparişle gelirse azami 20 YTL olur diye düşünüyorum. Ancak şunu gördüm ki: RF modülleri UDEA’nınkiler olan da olmayan da RF modüller konusunda problem yaşayabiliyor. Ben de epey problem yaşadım sonunda çalıştı ama nasıl:

Öncelikle modülleri deneyebileceğimiz hem de basit bir uygulama sayılabilecek bir devre kuralım. Alıcı tarafta bir LCD ekran olsun ve vericiden gelen veriyi ekranda göstersin. Bu sistemi alıcı verici olacak şekilde hazırlayalım ve RF modüllerden önce sistemi kablolu iletişimle deneyelim. Kablolu iletişimde sorun oluyorsa RF modüllerden veri iletimini gerçekleştirmesini beklemek olmaz! RF modüllerle iletişim denemesine geçmeden önce kablolu iletişimin sorunsuz çalıştığına emin olmamız lazım. Ben veri olarak RS232 protokolü kullanarak “A”, “B”, “C” gibi harfler -daha doğrusu ASCII karşılığındaki sayıları- gönderdim. Kablolu düzgün çalışıyorsa RF modüller denenmeye hazırdır(baudrate uygunsa tabi). Kablolu sisteminiz çalıştıysa iki sistem arasındaki haberleşme kablolarını(toprak,data) çıkarın. Verici ve alıcı modüle besleme gerilimlerini ve topraklarını bağlayın, anten bağlamanıza şimdilik gerek yok (yakın mesafelerde-2m- gerek olmuyor). Data pinlerini de bağlayıp modülleri birbirinden en az 1 m olacak şekilde uzaklaştırın ve çalıştırın. Veri alışverişi gerçekleştiyse ne ala! Güle güle kullanın! Ama çalışmadıysa…..!

İlk olarak alıcı verici modüllerin ve sisteminizdeki diğer elemanların besleme gerilimlerine bakın-mikrodenetleyicilerinizin bir pinini çalışma işareti olan bir ledi yakması için ayırmakta fayda var-. Özellikle keymark ın verici modülüne 3V besleme gerilimi vermek isterken potla -gerilim bölücü- ayarladığımız 3V, yüke bindikten sonra 2 lere düşecektir. Bu yüzden sistemi çalıştırdıktan sonra gerilimi yeniden ayarlamamız gerekecektir. Besleme gerilimlerinde sorun yok tüm değerler olması gerektiği gibiyse eğer kullanma imkanınız olan bir osiloskop ve sinyal üreticisi varsa modüllerinizi deneyebilirsiniz. Verici modülünüze kare dalga uygulayıp(data pininden tabiki) alıcı modülün data pininden verdiğiniz işareti gözleyerek modüllerin sağlamlığını test edebilirsiniz. Test ettiniz ve sağlamlar! O zaman yazdığımız kodu yeniden düzenlemek durumundayız. Nasıl? Nasılına gelmeden önce: Lab imkanınız yok ve modülleri test edemediniz, modülleri sağlam varsayarak kod denemeleri yapmaya devam etmeliyiz.

Baudrate ve alıcı verici pinleri yeniden gözden geçirin!

Kablolu iletişim sorunsuz ise alıcı verici pinlerde sorun yok demektir ancak baudrate dediğimiz saniyede aktarılan bit sayısını bildiren değişkenimizin de doğru değerde olması gerekiyor. RF modüllerinizin kataloğunda(datasheet) vericinin gönderebileceği azami veri hızı ve alıcının alabileceği azami veri hızına dikkat edin. Benim kullandığım modüllerde verici için asgari 300 bit/saniye (yani baud 300) azami 1kbit/saniye diyordu. Bu durumda 9600 baudlu bir iletişimi bu modüllerden bekleyemeyiz. Ve tabi ki baudrateleri düzenlerken her iki tarafta da aynı olmasına dikkat etmek gerekiyor. Herhangi bir baud da iletişimi sağladıktan sonra denemeler yaparak en iyi hangi baud da çalıştığını tespit edebilirsiniz.

Yine çalışmadı sorun başka ne olabilir?

Osiloskop-sinyal üreticisiyle testiniz gayet başarılı, tüm bağlantılar ve gerilimler doğru, yazılım olarak da kablolu sistemde çalışan kodlar var ancak yine de çalışmıyorsa RF modüllerde halledilmesi gereken daha ince bir problem var demektir. Benim problemim şuydu: alıcı modüldeki clock çok kısa bir süre geç çalışıyordu. Yani kendisine gelen verinin ilk kısmını geç çalıştığı için kaybediyor geri kalan kısmını alıyordu haliyle alıcı taraf bu kırpılmış işaretten hiç bir şey anlamıyordu. Bu kanıya varmamdaki sebep (http://www.ottawarobotics.org/articles/rf/rf.html) bağlantısındaki yazıda yazarın benzer bir sorun yaşamış ve sorunun sebebini clock gecikmesi olabileceğini söylemesidir. Nitekim biz de osiloskop ekranında bir takım çok kısa zamanlı gecikmeler gözlüyorduk ancak o gecikmelerin clock un geç çalışmasıyla alakalı olup olmadığını bilemiyorum. Şu anki gözlemlerim clock un sadece başlangıçta biraz gecikme ve veri kaybına sebep olabileceği şeklinde. O yazıda yine arkadaşın şöyle mantıklı bir tesbiti var: “Çoğu RF alıcısı gelen veriyi hemen almak için hazır değildir”, bu yüzden önden bir uyandırma işareti gönderdip alıcıyı şöyle bir sarsıyoruz. Dalgın bir arkadaşımıza bir şey söylemeden önce kendsine bağırmak gibi -biraz kaba bir benzetme oldu ama- 🙂

Bu sorunu nasıl çözdük?

Madem clock bir süre geç çalışıyor biz de bir süre anlamsız işaret göndererek-herhangi bir işaret- clock un düzgün çalışmasını bekler ve hiç bekletmeden verimizi göndeririz. Nitekim böyle yaptığımızda verileri başarıyla gönderebildik. Okuduğum yazıların birinde bu işaret için uyandırma işareti ifadesi kullanılmış, bence isim çok güzel uymuş. CCS C kodu olarak bu işlemi aynen şöyle yapmış oluyoruz:

putc(0b01010101); //uyandır

putc(veri); //veri gönder

Alıcı taraf bu uyandırıcı sinyali zaten algılamayacaktır, tesadüfen algıladığında veya bir şekilde başka bir veri olarak yorumladığında(yanlış bir veri göndermiş olduğumuzda) ne olacak? Cevabı aşağıda geliyor(öncü veri başlığı altında).

 

Uyandırma işaretini neden 0b01010101 olarak seçtik ve Manchester Code

Bu sorunun cevabı da Manchester Code olarak adlandırılan kodlama sistemin mantığıyla ilgili. Kendim bizzat deneyip görmemekle birlikte şunları söyleyebilirim: RF vericiye veri gönderilmeden önce bu verideki 0 lar 01, 1 ler ise 10 olarak kodlanıp (Manchester Encoding) veriliyor(8 bitlik veri 16 bite çıkmış oluyor) böylece arka arkaya gelene 0 lar veya 1 ler ortadan kaldırılmış oluyor.

Örnek: 0b 0 1 0 0 0 1 0 0 verisi 0b 01 10 01 01 01 10 01 01 haline geliyor. Bu veri sonra tekrar alıcı tarafta 8 bitlik ilk haline geri döndürülecek(Manchester Decoding).

Arka arkaya gelen 0 lar veya 1 lerin RF modülün veri iletimi için sağlıksız olduğu söyleniyor. Arka arkaya gelen aynı bitler bir sonraki gelen farklı ilk bit için değişimi zorlaştırdığından bu şekilde bir kodlamanın daha uygun olduğu söyleniyor, ben denemedim-görmedim. Bu mantığa göre 01 lerin uyandırma için daha uygun olduğunu düşündük-ama şart değil, başka işaretler de bu işi görüyor-.

Not: Manchester encoding ile alakalı şu pdf ye bakabilirsiniz(ing).

Öncü Veri (“Preamble”) Nedir?

Benim elimdeki RF modül çiftlerinin birinin alıcısı diğerinin vericisiyle çalışabiliyor. Bu durumda aynı ortamda iki farklı modülü haberleştirmek mümkün olmayacaktır çünkü veriler her iki modülde de anlam bulacağından karışıklık olacaktır. Bunu çok basit bir mantıkla hallediyoruz: Verimizi göndermeden önce kimliğimizi bildiren başka bir veri gönderiyoruz. Örnekten kolayca anlaşılacaktır:

Örnek:

Verici tarafa:

putc(0b01010101); // uyandırma

putc(‘x’); // ben x ten geliyorum

putc (veri); // verimizi gönderiyoruz

Böylece alıcı tarafa nerden geldiğimizi bildirebiliyoruz. Alıcı tarafta ise:

if (getc()==’x’){ //eğer veri x vericisinden geliyorsa

gelen_veri=getc(); //veriyi al

}

şeklinde yazarız. Öncü veriyle iki modül çiftinin karışmamasını sağladığımız gibi ortamdaki gürültülerden de %100 olmasa da sıyrılmış oluyoruz. Bu açıdan da öncü verinin önemi vardır. Yani bir ortamda sadece bir modülün çalıştığına emin olsak da, öncü veri kullanarak ortamda bulunabilecek anlamsız işaretlerden azami düzeyde sıyrılabiliriz.

Umarım RF modüllerle çalışan arkadaşlara yardımcı olmuştur, iyi çalışmalar dilerim.

38 thoughts on “RF Alıcı-Verici Modüller

  1. barış

    sevgili fatih arkadaşım geçenlerde udea dan utr-c12m aldım. bu modülle ilgili san şunu sormak isterim. bu modül manchester kodlamaya göre çalışıyor ve ben alıcı verici programımı ccs c de yapıyorum. sormak istediğim manchester kodlama kullanırken baudrate ayarını nasıl yapacağım veya yapmama gerek var mı

    Reply
  2. Fatih

    Baudrate özel bir ayar değil, datasheete bakıp modüllerinizin hangi hızda çalışabileceğini görebilirsiniz. Nitekim ben baktım baud için 2400 belirtilmiş. Yine aynı bölümde udea nın uygulama notlarında manchaster coding-decoding örneği var, HI-TECH C de yazılmış ama CCS C ye kolayca uyarlayabilirsiniz. RF modüller gayret ve tecrübe istiyor, şu sıra ben de modüller üzerine çalışıyorum. Kolay gelsin.

    Reply
  3. okumuskind

    slm hocam,ben ve arkadaşlarım rf yardımıyla 20 motorun uzaktan kontrolünü yapmıştık.ama bizimki kısa mesafe idi.şu aralar kartlı ve turnikerli geçiş sistemleri konsunda proje yapmaktayız. iyi çalışmalar.

    Reply
  4. Alper Yazar

    Merhabalar; Öncelikle tecrübelerinizi paylaştığınız için teşekkür ederim.Son sınavları verip, eve dönünce bu yazın rf olayına da bakmak istiyorum. 🙂 Tam net olarak anlamdığım nokta gönderdiğimiz verinin şekli.Yani: 101010 (uyandırma) – preamble(elalemin kodlarından etkilenmeyelim diye 🙂 ) – veri UDEA ATX-34 kataloğunda ise preamble + sencron + data1 şeklinde yazılmış. Yani yanlış anlamadıysam sizin preamble dediğinize onlar sencron, uyandırmaya da preamble diyorlar.Yanlış mı yorumluyorum acaba? Bir de Manchester encoding/decoding işlemlerini rf modüller mi gerçekleştiriyor.Yoksa PIC ile yazılım kullanarak mı yapmalyız? Teşekkürler

    Reply
  5. Fatih Erdem

    Bir de Manchester encoding/decoding işlemlerini rf modüller mi gerçekleştiriyor.Yoksa PIC ile yazılım kullanarak mı yapmalyız?
    -Bunu gerçekleyen gelişmiş rf modüller olabilir ancak atx-arx modülleri için yazılım kullanarak yapılır.
    Tam net olarak anlamdığım nokta gönderdiğimiz verinin şekli.Yani: 101010 (uyandırma) – preamble
    -Aslında sadece arka arkaya veri gönderiyoruz. Uyandırma işareti 0b10101010 olmak zorunda değil, ama bu işaret uayndırma işareti için daha uygun. “Preamble” da bir veri onu da ‘X’ harfi seçmiştik. Gönderdiklerimizin hepsini putc ile gönderiyoruz, “preamble”, uyandırma, asıl verimiz. Özel bir gönderme metodumuz, olayımız yok.
    Yani yanlış anlamadıysam sizin preamble dediğinize onlar sencron, uyandırmaya da preamble diyorlar.Yanlış mı yorumluyorum acaba?
    “Preamble” ingilizcede giriş konuşması, açılış gibi manalara geliyor. Ben aslında bu kelimeyi hiç kullanmak istemedim. Preamble yerine ben “öncü veri” demiştim. Diğer işaret için de “uyandırma işareti” demiştim. Yani aslında ingilizcelerini hiç düşünmeksizin olayı ifade eden Türkçe farklı kelimeler kullandım. “Öncü veri” ifadesini kendim için kullanıyordum ancak “uyandırma işareti” daha genel, Türkçe yazılarda kullanılan bir ifadedir. “Preamble” ifadesini de öncü veri ile eşleştirmişim. Yanlış bir eşleştirme olmuş olabilir, karşılıklarını düşünmediğim için böyle bir karışıklık yaşamamıştım.

    Reply
  6. ibrahim köroğlu

    fatih bey çok teşekkür ederim yazdıklarınız için.gerçekten bulunmayan bilgiler.bu rf işi çok sorunlu iş ben 2 sene önce başladım devresini araştırmaya ve kurmaya şuan hala araştıroyrum bir türlü çalıştıramadım bende keymark modüller var. dediğiniz yöntemleri uygulayacağım.inşallah çalışır. tekrardan çok teşekkür ederim. başka uygulamalarınızıda bekliyoruz.

    Reply
  7. ibrahim köroğlu

    Bir de birşey soracağım; bu uyandırma verisini modül erken uyanıp gönderdiğimiz data gibi algılama olayı olmuyormu uyanma süresi her zaman birbirini tutmaz değişik değerlerde olabilir diye düşündüm burda kafam karıştı.

    Reply
  8. admin

    Modül uyandırma işaretini de algılıyor, ancak biz modülün algıladığı verileri mikrodetenleyicimizde ayıklıyoruz. Modülün algıladığı verileri okurken eğer öncü verimiz ‘x’ i algıladıysan sıradaki “data” yı al diyoruz, bu şekilde bizim için manidar olan datayı alıyoruz.
    Modül ilk gönderilen uyandırma byte ının bir bölümünü yorumlayamayacak (uyuyordu çünkü) sonraki uyandırma byte larını yorumlayabilir ancak önemli değil çünkü biz zaten mikrodenetleyicimizle algılanmış tüm veriyi ayıklıyoruz, öncü veriyi bekliyoruz.
    Yeter ki asıl verimizi ve öncü verimizi göndermeden uyandırma işareti göndererek modülün uyandığını garanti edebilelim.
    Bu ayıklama işini mikrodenetleyicimize
    if(getc()==’x’){
    gelen_veri=getc();
    }
    gibi bir komutla yaptırabiliyoruz.

    Ben yukarıdaki örnek kodda bir byte uyandırma işareti göndermişim, bir kaç byte göndermekte fayda var, yani:
    putc(0b01010101); // uyandırma
    putc(0b01010101); // uyandırma
    putc(0b01010101); // uyandırma
    putc(’x’); // ben x ten geliyorum
    putc (veri); // verimizi gönderiyoruz

    şeklinde daha iyi olur.
    Not: Keymark verici modülünüzün besleme geriliminin modülün çalışma esnasında 3 V olduğundan emin olunuz.
    RF Alıcı-Verici Modüllerinizi Test Edin! yazısına göz atmayı unutmayınız 🙂
    İyi çalışmalar dilerim.

    Reply
  9. ibrahim köroğlu

    kafamı karıştıran olay şu oldu diyelimki biz uyandırma verisi olarak bir byte veri gönderdik.en basit ‘11111111’ gönderdik.bu bilgiyi modül kaçırdı son 4 bite yetişti ve veriyi 1111 diye aldıladı.bu sefer pice gönderdiği bilgi uyandırma verisi olmaktan çıktı.picte bu olayı nasıl ayıklıyorsınız.
    bu işin ayrı bir boyutu ben kurduğum devrede kodlayıcı ve kod çözücü olarak pic yerine m145026 ve m145027 entegrelerini kullndım.modül olarak keymarkın modüllerini kullandım.fakat bir türlü çalıştıramadım.sorun şöyle kodlayıcımda sorun yok kabloyla iletişim sağlanıyor.ama kabloyu çıkarıp rf leri araya sokunca çalışmıyor.dediğiniz yöntemlri uyguladım fakat çalıştıramadım.bu entegreler rf modülleri için üretilmiş özel entegreler. şöyleki veriyi iki kere gönderiyor birincisinde modül kaçırırsa ikincisinde yakalasın diye ama ben bir türlü çalıştıramadım.ben bu modülleri çalıştırmaya çalışırken elimde datasheeti felan yoktu sizden görünce baktım ki çalışma gerilimi 3 volt ben 9 volt bağlamıştım vericiye alıcıya ise 5 bağlamıştım. acaba modüllerim mi yandı bunlarını çalışıp çalışmadığını anlamak için daha kolay bir yol yokmu sitedeki dediğiniz devre den başka. örneğin frekans metre yardımıyla gibi (frekans metre hiç kullanamdım hakkında pek birşey bilmiyorum yanlış birşey söyleridsem kusura bakmayın)

    teşekkür ederim…

    Reply
  10. admin

    Biz zaten uyandırma verisini alıcı tarafta kontrol etmiyoruz, uyandırma verisinin ne olduğu hiç önemli değil, yeter ki bir veri olsun ve alıcı modül uyansın. Sonra öncü verimizi gönderiyoruz ve daha sonra asıl verimizi gönderiyoruz. Biz alıcı tarafta sadece öncü veri geldi mi diye kontrol ediyoruz. Dediğiniz gibi 0b11111111 olan uyandırma verimiz alıcı tarafta 0b00001111 gibi veya arkasından gelen byte ile birleşip bambaşka türlü yorumlanmış olsun, hiç önemli değil çünkü biz PIC ile gelen datayı yorumlamadan önce ‘x’ karakterini yani aslında 0b01111000 verisini bekliyoruz. Yeter ki öncü veri gelene kadar uyandırma işareti işini yapmış olsun, modülü uyandırmış olsun ve göndereceğimiz ‘x’ öncü verisi doğru algılanabilsin.

    Modülleri laboratuvar ortamında test etme imkanınız varsa verici modülün data girişine 1kHz kare dalga uyguladıktan sonra alıcı modülün data ucuna osiloskop bağlayıp 1kHz kare dalgayı gözlemleyerek modüllerinizi test edebilirsiniz.

    Ben dediğiniz encoder-decoder ı hiç kullanmadım. Rf modüllerinizi test edin! yazısındaki yöntemi de deneyebilirsiniz, encoder-decoder kullanmaksızın.

    Son olarak ben de verici modülüme 9V hatta sanırım biraz daha fazlasını uygulamıştım ancak modüller hala çalışıyordu, yanmamış olması gerekir.
    Biraz zahmetli ama denemelerinize devam ediniz modülleriniz çalışacaktır. İyi çalışmalar dilerim.

    Reply
  11. ibrahim köroğlu

    Tamam şimdi anladım PIC olayını..
    Modülleride labaratuarda test etmeye çalışacağım..
    Çok teşekkür ederim..

    Reply
  12. ibrahim köroğlu

    Son olarak sizin dediğiniz boudrate i kontrol edeyim dedim benim kullandığım entegrelerin datasheetine baktım.entegrenin çalışma frekansını ayarlamak için datasheetinde entegreye bağlanıcak çeşitli kondasatör değerleri vermişler.benim bağladığım r ve c lerle bu değer 362 KHZ yazıyor modülün veri taşıma aralığı 300-10 KBPS. bunlardan biri frekans biri veri taşıma hızı entegrenin veri taşıma hızını bulamadım. frekansından veri taşıma hızını nasıl bulcaz da karşılatırcaz modül bu veriyi taşıyabilirmi taşıyamazmı.yardım ederseniz sevinirim.teşekkürler..

    Reply
  13. volkan

    radyo frekans iletişimi ile ilgili kodlar ve şekil gönderirseniz iyi olur. İYİ ÇALIŞMALAR…………………..

    Reply
  14. Misafir

    Merhaba Fatih Bey,

    Aslında ben bu işleri PBP da gayet iyi yapıyorum ama CCS C diline yeni geçiş yaptım ve bazı kavramlara hakim olmadığımdan size danışmak istedim.
    Sizin bilgisyardan servo kontrol projenizi RF ile kablosuz olarak yapmak istiyorum fakat hem RF e veri göndermek hemde PC den veri almak aynı anda sıkıntı çıkarıyor. 2400 baud da RF uart yoluyla RF modüller bir biri ile haberleşiyor. En basitindne bir led açıp kapatıyorum. Ama bilgisyardan bir karekter alıp o karektere karşılık RF veri gönder dediğim zaman sıkıntı çıkıyor. Bazen alıyor bazen almıyor. Bir çok yol denedim ama işin içinden çıkamadım. STREAM ile 2 ayrı bauddan veri alıp göndermeyi denedim ama olmadı. 2400 baud ile RX ile bilgisyardan geleni alıp TX ile RF veri göndermeye çalıştım o da sağlıklı olmadı. Bu konuda bana yardımcı olabilir misiniz? veya bana bir örnek verebilir misiniz?

    Emeğinize sağlık, İyi Çalışmalar…

    Reply
  15. admin

    Merhabalar, hoperf.com un daha kaliteli fiyatları uygun rf modülleri var, direnc.net te satıyorlar, ben onları alıp denemeler yapmak istiyorum. Basit rf modüller dediğiniz gibi çok sağlıklı çalışmıyor, basit modüllerle 10 takla atacağımıza daha kaliteli modüller kullanarak daha sağlam bir haberleşme sistemi kurmalıyız.

    picproje.org forumlarında basit modülleri kullanmış olan ve tecrübelerini paylaşan çok arkadaş var. O başlıkları okumakta fayda var.

    İyi çalışmalar dilerim.

    Reply
  16. Misafir

    Tekrar Merhaba, cevap benim mesajım için miydi?
    Eğer öyle ise ben soruyu yanlış sordum galiba. Benim modüller ile ilgili bir sorunum yok. UDEA NRX-34U ve ATX-34S modülleri kullanıyorum normal olarak çalıştırada biliyorum.
    Benim sorum uart olarak bilgisayardan veri alırken aynı zamanda RF modül nasıl kullanırım. Sonuca çok yaklaştım ama şuanda usb to rs232 çeviricimde sorun çıktı sanırım.
    CCS C dilinde nasıl bir kod yazmalıyım ki Bilgisayardan gelen karektere veya bilgiye karşılık o bilgiyi RF olarak kablosuz başka cihaza aktarabileyim?
    Atıyorum bilgisayardan “A” tuşuna basınca o A harfini RF olarak alıcıya göndermek istiyorum. Ama hem bilgisayrdan alıp hem RF göndermiyor. Tek tek yapıyor ama, bu konuda bana yardımcı olabilir misiniz?

    Reply
  17. akif

    merhaba .Bir rf model gemi (bait boat) için udea arx-34c alıcı ve atx 34 verici kullandık ve sonuç güzel mesafe idare eder fakat daha uzun mesafe olsa daha iyi olur düşüncesi ile alıcı modülü nrx-34u çevirelim dedik ancak sorun şu arx ile çalışan sistem nrx ile çalışmadı bu uygulamayı 3 farklı arx ile sorunsuz çalışan atx verici ile denedik sonuç olumsuz oldu yılmadık 3 farklı nrx -34u alıcı denedik yine olumsuz.
    tabi bu denemeleri yaparken udea yetkilerine sorduk
    dedik ki nrx-34u alıcısı atx 34 verici ile çalışırmı
    dediler evet çalışır bizde denedik olmadı
    peki dedik bağlantıları pine pinmi arx ile nrx aynımı
    dediler aynı arx sökün nrx i takın çalışır
    çalışan arx i söktük nrx modülü taktık sonuç olumsuz nrx çıkarıp tekrar arx i taktık sonuç olumlu
    arge leri ile görüştük dedikleri şu firmaya gidin nrx te çalışan bir atx verici versinler
    firmaya gittik deneyip verdikleri bir atx vericisi aldık hatta bir tane daha nrx aldık yanlış anlaşılmasın onların denedikleri alıcı ve verici arasındaki çalışma onayı değil sadece frekans aralığını kontrol edip verdikleri verici
    neyse sonuç hala olumsuz elimizde 3 tane işimizi görmeyen ve nasıl çalışacağını bilmediğimiz alıcı modülümüz var
    sorum şu; atx-arx iklisi ile sorunsuz çalışan sistemimizde biz ne yanlış yapıyoruz da (firma yetkileri çalışır bir sorun çıkmaması lazım dedikleri için diyorum) arx i söküp pine pin aynı olan nrx ile sonuç alamadık.
    ilginiz için şimdiden teşekkür ederim.

    Reply
  18. admin

    Merhaba, nrx ve arx modüllerin datasheet lerine baktım, ikisi de ASK alıcı, bu durumda iyi veya kötü ASK verici ile uyumlu çalışacaktır. Sizin olaya gelince öncelikle nrx te arx te olmayan ENABLE pini var ve modülün aktif olması için bu pini lojik 1 de tutmak gerekiyor, arx modülde böyle bir durum yok. Bu pine dikkat etmiş miydiniz?
    Şimdi sistemi test ederken en basit bir düzenek kurmak lazım başka türlü insanı çok yorar. Alıcının data çıkışına bir transistör yardımı ile hoparlör bağlanır, verici çalıştığında gelen ses değişir. Bu test düzeneğini çalışan sistemin(atx-arx) deneyip görün daha sonra nrx i takın ve ses değişimini görene kadar hatanızı bulmaya çalışabilirsiniz.
    Kolay gelsin, iyi çalışmalar.

    Bu modüller en basit rf modüller, bunlarla gelişmiş uygulamalara girmemek gerekir.

    Reply
  19. akif

    teşekkür ederim evet enable pinini bilyoruz firma yetkililerine sorduk bu pinin modeline göre iki farklı işlevi varmış bizdeki modelinde bu pin rssi pini yani çıkış pini imiş firma yetkilileri bu pini boş bırakmamızı söylediler çünkü bisdeki modelde enable olayı aktif edilmemiş ama şimdi denedeik bir kere nasıl yaptıysak senkron ettik şimdi bunun sebebini araştırıyoruz data ilteimi için uzun bir kablo yapmıştık şimdi o kabloyu kısaltıp deneyeceğiz teşekkür ederim.

    Reply
  20. akif

    data hattını da kısalttık olmadı şimdi olay şu arx modülünde şu işle sırasına göre sistemimiz sorunsuz çalışıyor önce alıcıının enerjisini veriyoruz sonra hemen vericiyi enerjiliyoruz haberleşme hemen oluyor problem yok ama nrx te aynısını yemiyor
    bu gün şunu denedik
    nrx in rssi çıkışının gerilimini ölçtük verici ile haberleştiğini gördük yani şöyle kumandanın her hangi bir tuşuna bastığımzda rssi çıkışı 1.8 V tan 2 volt düzeylerine çıkıyor haberleştini anladık sonra arkadaşım data-gnd çıkışına çabuk çözüm ölçüm olarak led değdirdi kumandaya bastığımızda ledden çok az da olsa ışık gördük yani verici ila alıcı haberleşiyor sonra böyle ledle ölçüm yaparken birde baktık displayda verici sinyalı gözüktü devre senkron oldu ve gayet güzel uzaktan kontrol işlemlerimizi yaptık sonra alıcı enerjisini kapayıp açtığımızda tekrar off senkron olmadı sonra tabi işin gülüncü ledi modül bacaklarına değdirdiğimizde senkkron yaptık büyük ihtimalle modülün data bacağından bir numara yaptık ama ben anlamadım diğer arkadaşım bu işlerin daha piri .sonra bizim sistemde mikroişlemci ile modül arasında data -+-gnd kablosu var (bilgisayar data kablosu) modül antene daha yakın olsun diye böyle yaptık belki dedik kabloda data kaybı oluyor diye kabloyu kısalttık ama yine off arkadaş yarın verici ile alıcı haberleşme hızını yavaşlatacağını ve uyandırma sinyalini de uzatacağını söyledi İnşeallah çalıştırır .şimdi sizce arx i uyandırıyoruz da neden nrx i uyandıramıyoruz.Teşekkür ederim .

    Reply
  21. admin

    Merhaba baud rate i 300 en fazla 600 da denemelisiniz. nrx modül neden çalışmadı bilemiyorum, sitede rf alıcı verici modüllerinizi test edin yazısı vardı o yazıya da bakabilirsiniz, senkron, preamble den önce sadece ‘A’ verisini sürekli göndererek denemeye başlamalısınız.
    Çıkışa led bağlayacaksanız da araya min 100 ohm direnç bağlamalısınız. Testin en güzel ve kolay olanı, verici aktifken alıcı çıkış datasını bir osiloskopa bağlamak. Basit adımlarla ilerlemek lazım, basit testlerden data gönderim aşamasına adım adım gitmek lazım, en azından ilk denemelerde. İyi çalışmalar, kolay gelsin.

    Reply
  22. furkan

    arkdaşlar ben rf alıcı ve vericilerle uzaktan kablosuz kontrol edilebilen bir gemi yapmak istiyorum atx-34s ve arx34c cihazlarını alacağım bunlara anten takarak en fazla kaç metreden iletişim sağlayabilirim ? diğer ek güç kaynakları ve dinamoları kendim ekleyeceğim merak ettiğim kaç metreden iletişim sağlayabilirim? yardımcı olursanız sevinirim…

    Reply
  23. murat

    Arkadaslar ben bu nrx moduller ile olan probleminizi cozup cozmediginizi merak ediyorum. ayni ugulamayi pt2262-72 encoder lar kullanarak yakinda uygulamasini yapacagim.

    bilginiz var mi?

    Reply
  24. Ferdi Gürtekin

    iyi gunler hocam verıcı olarak pc kullanmayı dusunuyorum rf modulu c# da nasıl uyandırırım
    pic verici olarak kullandıgımda boyle uyandırıyorum

    char uyan[15]={0xAA,0xAA,0xAA,0xAA,0xAA,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF}; //rf modül uyandırma
    for(i=0;i<15;i++)
    {
    putch(uyan[i]);
    }

    Reply
  25. Aleks

    Selam ,Arkadaşlar ben rf alıcı ve vericilerle sıcaklık,gerilim ve basınç okuma işlemi yaptırmak istiyorum. Alıcı kısmı:
    2400 boud rate ile 433Mhz Alıcı mödül verileri alacak,
    Verici kısmıda,
    sıcaklık gerilim ve basınç sensörlerinden değerlerini okuyup 433 Mhz ile Verici modül ile verileri gönderiyor olmalı, ancak bu işlemi kodlama yapmadığımda garip ifadeler gönderdi.Araştırmalarıma göre CRC veya manchester kodlu gönderim ile veri doğrulama işlemi gerekliymiş.Ben de tam üzerine konuştuğunuz konuda yardımcı olabillecek arkadaş var mı ?
    Alıcı kısımda Visual Basic kullanıyorum.Verici Kısmı Pic18f452 dir.

    Reply
  26. loto

    merhaba yorumların üstünden yıllar geçmiş ama şansımı denemek istedim… ben enerjilerini bilgisayarın flash girişinden veriyorum alıcınında vericininde ama bilgisayara bağlı kalınmaması için alıcıyı flash girişli bir şarj aletinden prizden veriyorum enerjisini vericininde pille enerjisini sağlıyorum bu şekilde çalışmıyor ama bilgisayara bağlayınca problem çıkartmıyor sorunu ne olabilir yardım ederseniz sevinirim.

    Reply
  27. ferdem

    İki tarafı da aynı kaynaktan beslediğinizde(bilgisayarın USB güçleri aynı kaynaktır) RF haberleşme yapmış olmuyorsunuz, devrelerin toprağı ortak olmuş oluyor ve düzgün haberleşme ihtimali artmış oluyor. Beslemeler ayrıldığında iş antenlere ve RF modüllerin kalitesine kalıyor. Beslemeleri ayırdığınızda çalışmıyor durumunu detaylandırmak lazım, sitede RF modüllerle ilgili yazılara bir göz bakın:
    http://www.fatiherdem.net/tag/rf-modul/
    Kolay gelsin.

    Reply
  28. erci38

    Merhaba bizim projemizde rf modülü kullanmamız gerekiyor fakat rf modülü 1km ve üzerini çekmesi gerekiyor acaba hangi frekans aralığında bir modül kullanmamız gerekiyor yardımcı olursanız sevinirim.Kolay gelsin.

    Reply
  29. ferdem

    Dorji RF firmasının yarım watt çıkışlı modüllerini uygun bir antenle kullanırsanız 1km mesafeye ulaşabilirsiniz. DRF7020D27 modülü olabilir.

    Reply
  30. murat

    Hocam öncelikle tesekkur ederim iyi paylasim ben iki pic arasında önce rf iletişim yapicam programim tipki sizinki gibi motor kisimlari hariç fakat piclerin rx tx uclarini bagladigimda uygun calisan devrem alici verici modülü bagladigimda alici modül kendi kendine saçma sapan is yapiyo acaba ATX 34 ve Arx 34 denesem ayni sorun olurmu
    Birşey daha soracaktim bende keymark alici verici modül kullaniyorum acaba vericinin besleme voltaji sadece 3 volt mu ben datasheet inde 3-12 volt görmüştüm yardimci olursaniz sevinirim

    Reply
  31. ferdem

    Keymark vericiyi ben 3V ile çalıştırmıştım, 12V a kadar destekliyor mu hatırlayamıyorum, datasheet ten eminseniz ne belirtildiyse öyledir.
    Alıcı modülün kendi kendine iş yapması normal bir durum, ATX ARX de de aynı durum var, aşağıdaki yazıda bahsetmiştim:
    http://www.fatiherdem.net/acildik-havadisler-gelismeler/
    Cevabı geç yazabildim, kusura bakmayınız. Selamlar.

    Reply
  32. mehmet

    fatih hocam sizin c# arayüzünü kullanarak pıc ile servo motor kontrol ediyorum,pıc tarafı ccs c ile hazırladım. Arayüzde uafak tefek değişiklikler yaptım ama seri porta yazılan bilginin formatı ile oynama yapmadım. devre gayet sorunsuz çalışyor ama rf ile iletişimi sağlamak istediğimde sorunlar burada başlamış oluyor. pıc tarafında donanım kesmesi de kullandım ama maalesf.

    sorun, rf modülün parazit yapması yani pc den hiç bir bilgi göndermesemde servolar kendi kendine kontrolsüz haraket ediyor.
    yazınız okudum teşekkürler çok faydalı bir paylaşım olmuş. c# ile hazırladığım kodlara bakarmısınız seri porttan bilgi gönderirken paket başı bilgisini ekleyemedim. c# tarafında ‘x’ stringi ile esas pıc gönderilmesi gereken verilerin bulunduğu değişken ile aynı anda gönerilmesi gerekli. yardım olurmusunz.

    if (getc()==’x’){ //eğer veri x vericisinden geliyorsa

    gelen_veri=getc(); //veriyi al

    benim kodlar kablo sorunsuz çlışıyor ama rf ile çalışrıramadım
    #include
    //#use rs232(baud=300,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)

    long dt;
    long slow;
    long shigh;
    int x;
    int poz;
    int sira;
    #INT_RDA// uart alıcı kesme*****************************
    void RDA_isr(void)
    {
    dt=getc();
    shigh=dt*12;
    slow=20000-shigh;
    poz=5;
    if(dt==10){ //sira ilk motorun
    sira=1;
    }
    if(dt==20){//sira ikinci motorun
    sira=2;
    }
    }

    void main()// ana menü***********************************
    {
    enable_interrupts(INT_RDA);
    enable_interrupts(GLOBAL);

    while(TRUE)
    {

    if (sira==1)//birinci servo hreketi************************
    {
    if (dt>31)
    {
    if (poz>0)
    {
    for (x=0;x31)
    {
    if (poz>0)
    {
    for (x=0;x<49;x++)
    {
    output_high(pin_b3);
    delay_us(shigh);
    output_low(pin_b3);
    delay_us(slow);
    poz=0,sira=0;
    }
    }
    }
    }
    }
    }

    C# ARAYÜZÜ************************************************************

    // picproje.org
    // fatiherdem.net
    // 3 hobi servonun bilgisayardan seri port üzerinden basitçe kontrol edilmesi
    //Ekim 08
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.IO;
    using System.Diagnostics;

    namespace servo_ferdem
    {
    public partial class Form1 : Form
    {

    public void send(byte data)
    {

    if (serialPort1.IsOpen)
    {
    byte[] buffer = { 0 };
    buffer[0] = data;

    serialPort1.Write(buffer, 0, 1);
    }
    }

    public Form1()
    {

    InitializeComponent();

    }

    private void Form1_Load(object sender, EventArgs e)
    {

    comboBox1.DataSource = System.IO.Ports.SerialPort.GetPortNames();
    comboBox1.SelectedItem = 1;
    trackBar1.Value = 107;
    trackBar2.Value = 125;

    if (!serialPort1.IsOpen)
    {
    serialPort1.PortName = comboBox1.SelectedItem.ToString();
    serialPort1.Open();
    label4.Text = "seri porta bağlandınız";

    }

    }

    private void button2_Click(object sender, EventArgs e)
    {
    if (serialPort1.IsOpen)
    serialPort1.Close();
    }

    private void trackBar1_MouseUp(object sender, MouseEventArgs e)
    {

    send(10); //sira ilk servonun
    send(Byte.Parse(trackBar1.Value.ToString()));

    }

    private void trackBar2_MouseUp(object sender, MouseEventArgs e)
    {
    //
    send(20); //sira ikinci servonun
    send(Byte.Parse(trackBar2.Value.ToString()));
    }

    private void hakkındaToolStripMenuItem_Click(object sender, EventArgs e)
    {
    MessageBox.Show("ferdem servo kontrol");

    }

    private void trackBar1_Scroll(object sender, EventArgs e)
    {
    label5.Text = trackBar1.Value.ToString();
    }

    private void trackBar2_Scroll(object sender, EventArgs e)
    {
    label6.Text = trackBar2.Value.ToString();
    }

    }
    }

    Reply
  33. mehmet

    hocam sanırım sormak istediğimi çok uzun olarak sordum.. kısaca sizin arayüz ile trackbar max değerini 3000 değerine yükseltip bu değeri seri porttan nasıl gönderebilirim. alıcı pıc tarfında dizi değişkeni ilemi aalacam yardımcı olurmusunuz.

    Reply
  34. ferdem

    Merhaba, 3000 değerini bir byte da tutamayacağımızdan 2 byte gerekir… arka arkaya 2 byte göndermeniz gerekir, byte ların sırası karışabileceğinden verinin önüne-sonuna işaret koymanız gerekir. Forumlarda seri port “long” veri gönderimi diye bakabilirsiniz. Örn:
    220,220,birinci byte, ikinci byte, 200, 200.
    RF ile gönderme işi… basit modüllerle uğraştırıcı, dediğiniz gibi modül açık olduğu sürece havadan bir şeyler kapar(http://www.fatiherdem.net/acildik-havadisler-gelismeler/) RF ile long veri gönderirken öne-sona ayrıca işaretler koymanız gerekir. Uğraştıcı da olsa yapılabilir…
    RF ile örn: 255, 255, 255, 255, 100,110, 220,220,birinci byte, ikinci byte, 200, 200, 255, 255 gibi bir seri göndermeniz gerekebilir, alıcı taraf seriyi sürekli kaydedecek, seri içinde 100, 110 sıralı ikiliyi görünce arkadaki byte lardan ilgilileri alıp kullanacak.
    Basit modüllerle alakalı aşağıda bir yazı var, aynen uygulanmasa da fikir verir:
    http://www.fatiherdem.net/kablosuz-seri-iletisimde-hatanin-azaltilmasi/
    Bu yazıları ve picproje.org da ilgili konuları okuyun, olay şekillenecektir… Çok okumadan genelde sonuç alamıyoruz, sabırla okumalı. Kolay gelsin, iyi çalışmalar.

    Reply

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir