rf haberleşmede süreklilik problemi
  • Merhabalar,

    Arduinoyu öğrenme adına ufak ufak projeler yapmaya çalışıyorum. Son olarak http://arduinoturkiye.com/arduino-rf-haberlesme/#comment-742 linkindeki Arduino RF Haberleşme uygulamasını yaptım. Arduino Uno ve standart 433MHz alıcı-vericilerden kullandım. ( https://www.direnc.net/433MHZ-RF-ALICI-VERICI-KRISTALLI-TAKIM,PR-1580.html ). Kullandığım arduinolardan birinde Atmega 328 diğerinde 168 işlemci bulunuyor.

    Uygulamayı yaptığımda çalışıyor. Fakat veri tam olarak gelmiyor ve Hello yerine bazen H bazen He görünüyor ve kısa bir tekrarlamadan sonra döngü devam etmiyor. kartları birbirine çok yakın tuttuğum halde değişen bir durum yok. Sorun nereden kaynaklanıyor bulamadım.

    Çözüm önerilerinizi öğrenmek isterim,
  • önce 2 arduinoyu seriportlar üzerinden birbiriyle kablolu haberleştirmeyi denedin mi? rf modülleri çıkar portları rx>tx ve tx>rx ile birbirlerine bağla bak neler oluyor. 433mhz bandı gürültülü bir band 8-10 bytetan fazla veri aktarımında çökme olabilir. rf protokollerinde aslında veriler kısa paketlere ayrılıp her paketin işaretlenerek yollanması ve sonra alıcıda bu paketler tekrar dönüştürülmesi gerekir. 10 harfli paketler yap her paketin başınada 5 tane U koy bu 01010101 verisinin karşılığıdır alıcıdaki osilatörün senkron olmasını sağlar sonra 5 harfli kendi datanı ekle örnek şuna benzesin UUUUUHELLO
    alıcı tarafında arka arkaya 5 tane UUUUU almamışsan o peketten hayır gelmez deyip sonraki paketi beklemen lazım.
  • Merhaba,

    rf modülleri çıkararak yaptığım bağlantıda herhangi bir aksama yok.

    Mesajı UUUUUA100 olarak düzenledim. İlk başta sorunsuz olarak mesajı alıyorum. Fakat sonra yine eksik karakter gelmeye başlıyor ve bir daha hiç bir şekilde tam olarak yeniden mesaj gelmiyor.

    Sorunun alıcı mı yoksa verici tarafında olduğunu anlamak için, Data eksik gelmeye başladığında vericinin reset butonuna basıyorum. Ve düzelme bulunmuyor. Fakat alıcı taraftaki arduino nun reset butonuna bastığımda ise ilk açılıştaki gibi bir süre düzgün veri alabiliyorum.

    Döngüde gelen datayı kontrol edip doğru ise yazdırıp, doğru olmadığında da alıcıyı kapatıp açmayı denedim. Fakat buda bir işe yaramadı. Arduino yu program içinde resetlemek istedim bunuda nasıl yapıcağımı bulamadım.

    if (msgLength == 9) {
    for (int i = 0; i < msgLength; i++)
    {
    Serial.write(message[i]);
    }
    Serial.println();
    } else {
    vw_rx_stop();
    delay(1000);
    vw_rx_start();

    }

    Arduinoyu döngü içinde resetleyebilirmiyim?
  • modülleri daha uzak mesafede tutsan işe yarar belki yakın olduğu için boğuluyor olabilir sinyal. alıcı tarafında alıcı anteni ve rf modülü fazla metal yerlere yaklaştırma alıcının osilatöründen nem kapıyor olabilir arduino. modülün +- bacakları arasına bir 100nf ve 10uf kondansatör bağla modül daha stabil çalışır
  • Bu konuda Barış Samancının RF yazısını okumak faydalı olacaktır. orada bu tür veri kaybı problemlerinden bahsetmişti.
    http://www.barissamanci.net/Makale/18/atx34-ve-arx34-ile-433mhz-kablosuz-haberlesme/
  • Yardımlarınız için teşekkürler,

    Alıcı tarafında msgLength değişkenini vericiden gelen veriye göre okutmak yerine 9 olarak yazdığımda sorun çözüldü. Bir defa eksik veri geldiğinde msgLength değişkeni o eksik veriye göre sabitleniyor ve her seferinde döngüde bu değere kadar ilerlediği için bir daha tam veri alışı gerçekleşmiyordu. Sanırım :)

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook
Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.