Arduino kablosuz veri iletimi ?
  • İyi günler,
    2 arduino arası 433mhz ile veri alışverişi yapmayı düşünüyorum.
    Verici arduino da 2 sensör bağlı olacak ve diğer arduinoya bu bilgileri yollayacak.
    Kafama takılan nokta bu 2 sensörden gelen bilgileri yolladıktan sonra alıcı kısımda gelen bilgilerin hangi sensörden geldiğini nasıl anlayacam.
  • yollarken A24,3 B24,9 gibi yollarsın alıcıda ilk harfden hangi sensor oldugunu anlarsın
  • bununla ilgili minik bir örnek varmıdır, bulamadım
  • düşünce aşamasından montaj aşamasına geçtiğinde ve rf leri birbiri ile görüştüğünde gel sen. büyük ihtimal araştırmamışındır bu sitede rf örnekler var belki bu seni heyecanlandırır biraz araştırısın benden sana tiyo...
  • Merhaba ..

    sn okoman bu sitede ve diğer sitelerde ufak bir araştırma yaptım . Benim yapacağım devre buna benzer olduğu için farklı bi konu açmayayım direk burdan sorayım dedim :)

    Yapmak istediğim şey arduinoya verici modülü bağlayıp alıcı modüle sinyal gönderip röle sürmek . Aslında pıc ile önceden yaptığım bir devre var 433mhz alıccı verici ile led yakıp söndürme devresi ( aşağıda resim linkini verdim ) . Benim amacım pic kullanmadan 4 yada daha fazla alıcıyı (aynı model aynı marka aynı frekans . zaten sorun burada başlıyor ) kontrol etmek . Sıkıntı şu oluyor vericilerde alıcılarda aynı marka model olduğu için bir tanesine gönderilen sinyal hepsini çalıştırır . Bunu çözmek için pic kullanmadan nasıl yapabilirim . Eğer pic kullanılmadan olmaz diyorsanız bunu en küçük hali ile nasıl yapabilirim .


    yaptığım devrenin resmi ----- http://hizliresim.com/nYGLqM

    not: kullanacağım röle ----- http://www.direnc.net/1-KANAL-5V-ROLE-KARTI,PR-18098.html

    kullanacağım alıcı verici kit ------ http://www.direnc.net/433MHZ-RF-ALICI-VERICI-TRIMERLI-TAKIM,PR-1581.html



    BAŞKA BİR NOT : Bu alıcı vericiye alternatif olarak şu ürünü kullansam pic kullanmadan yapılabilir mi ?

    http://www.direnc.net/Wireless-NRF24L01-24GHz-Transceiver-Modul-24GHz-Alici-Verici-Modul,PR-15201.html
  • birebir aynı projeyi yapacağım ve yapacağım projenin benzerleri var, şimdilik pro mini için upload board u bekliyorum.
    Tek fark benim yapacağım verici modülünde tek sensör olacak, tabi ileride geliştirme durumum da var, şimdi tekrar bakıp bulduğumda buraya eklerim :)
    Edit: http://www.rcgroups.com/forums/showthread.php?t=1749208
    bunun tarzı bir projem var benim de, bir kaç gün içinde beklediğim kargo gelir, işin başına otururum :)
    Eğer isterseniz iletişime geçebiliriz, daha kolay olur ikimiz için de :)
  • kablolu veya kablosuz farketmez birden fazla alıcı verıcı veya bağlantı varsa bır network oluşturman lazım ve bunun kuralları var, en basiti networkteki herkesin dinlemede olması ve yollanan veri paketınde bazı belirleyici işaretlerin olması lazım. paketın yapısı [bant_bastırma_temizleme_tanıma_başlangıç_işareti, from_id, to_id, data,checksum] şeklinde olabilir, networkteki herkes dinlemede kalacak isteyen istediği yere paketi atıp aldınmı diye soracak almamışsa bir kaç kez tekrarlayacak. bu işlemi rf433 modulle yapacaksan kendin yönetmen lazım protokolu kendın yazacaksın. nrf24L01 ile yaparsan bu protokol zaten içinde hazır senın bunlarla uğraşmana gerek yok. rf433 de seçsen nrf24l01 de seçsen yada kablo ile de bağlasan yinede ağdaki herkese bir ID vermen gerek böylece işleri karışmadan yönetebılırsın...
  • sn. talhadadak sizinle çok bilgi alışverişinde bulunacağız sanırım öyle bir his var içimde :))


  • sn okoman dediğinizi anladım sanırım . ama aklıma takılan birşey var.

    Şimdi 8 alıcım var diyelim . atıyorum 2 nolu alıcıya tahsis ettiğim data paketini yolladım paketi aldı tanıdı ve röleyi sürdü diyelim . 2 nolu alıcının ben röleyi sürdüm diye mesaj yollaması için sanırım bir verici daha olması lazım doğru mu anlamışım yani rf433 ile bu şart diye düşünüyorum ama nrf24l01 ile de mi bir verici olması lazım alıcının yanında ?

    yani ben pic te yaparken olay şu idi . vericinin olduğu devredeki pic'e 4 buton tahsis ettim a0 a1 a2 a3 bacaklarını . sonra her bacak ayrı data paketi ile programladım sonra da diğer alıcının olduğu devredeki pic'e bu data paketlerini tanımladım hangi paket geliyorsa tanıyıp o led'i yakıyordu . velhasıl şimdiki projemde vericinin olduğu kısımda ardinuo var sorun yok , alıcının olduğu devrede arduino yok sorun çok :)


    http://i.hizliresim.com/y2nX9y.jpg
  • Araya girmiş gibi oluyorum ama kusra bakmayın,
    Alimesut bey, -bildiğim kadarıyla- eğer transceiver kullanırsanız alıcı devresinde farklı bir verici kullanmanıza gerek kalmaz çünkü transceiverlar çift yönlü çalışır, yani hem data gönderir hem data alır. alıcı devreleri dediğiniz gibi çok yapacaksanız, imitasyon pro mini vb veya direk atmel mikro işlemci alıp bootloader yükleyip kullanabilirsiniz. Tabi okoman abi çok daha iyi biliyor, ondan da duymak lazım cevabı :)
  • rf433 moduller alıcı verici ayrı ayrı satılır ilkel şekilde sadece 2 nokta arasında veri iletimi sağlar birden fazla alıcı verici olacaksa yukarıda anlattığım gibi bir protokol tasarlamak gerekiyor. sadece tek verici bir sürü alıcı tasarlamak da mumkun, ozaman bir komutu arka arkaya bir kaç kez yollayarak alıcının bunu alması garanti altına almak lazım. data paketi içinde bir tanede sayac alanı eklenırse alıcı aynı komutu aldığını takıp edebılsın. rf sistemlerde mesafe uzadıkça hatalı veri alma olasılığı artar ayrıca anten ve pil durumu da veri transferını çok etkıler rf433 bantı ıcın bunlar gecerli. nrf24L01 hem alıcı verıcıden oluşur ve iletısım protokulunu kendı ıcınde halleder siz sadece veriyi yollayıp gerısını unutursunuz gerı kalanını nrf modul halleder. arduinonun picten farkı yok aslında picte ne yapıyorsan aynısını arduinoda yaparsın picdeki gibi bir dene sen sorun çıkmaz...
  • rf433 sistemler cok ucuz ama hata duzeltmesı yok bu nedenle ek önlem almalısın mesela veri yollarken çok uzun paketlerde modulasyon çöker saçma verıler gıder, modulasyona başlarkende ilk baştakı karakterler saçma gider çünkü osilator anca frekansına oturur bunun için data paketıne bir örnek vereyim UUUTDDDDSC şekilinde bir paket yollarsan alıcıda bunu yakalaman daha kolay olur UUU lar osilatörün oturması için yollanan ön karakterler genelde UUU veya AAA yollanır yani binary olarak 10101010 veya 01010101 demek aslında ;) "T" yi ben uydurdum sen başka bir harf verebılırsın Paketın başladıgını anlarsın DDD ler 3 byte data koydum içeriği herşey olabılır S ise sayaçtır eğer komutu arka arkaya 3 kez yollarsan hep aynı sayaç kod olsun başka bir paket gideceğinde arttırırsın bu alıcının aynı komutu ust uste tekrarlamaması ıcın kolaylık saglar, en sondaki C ise T ile C arasındaki verılerın toplamı olsun böylece aldıgın komut gercekten dogru alındımı dorulamış olursun.
  • sn talhadadak , okoman üstadın dediği gibi şu modülde alıcı ayrı verici ayrı:)

    http://www.direnc.net/433MHZ-RF-ALICI-VERICI-TRIMERLI-TAKIM,PR-1581.html

    ama nrf de çift taraflı imiş tek modülde hem alıcı hem verici . birazcık tekrar etmiş gibi oldum kusura bakmayın :)

  • sn okoman mantığı anladım yardımınız için teşekkürler . en kısa zamanda projeye başlayacağım ve sanırım sn talhadadak ile beraber çalışacağız :)

    projede takıldığım yerlerde başınızı ağrıtacağım yine :)
  • benim de demek istediğim oydu zaten, zaten kelime olarak transmitter ve receiver kelimelerinin birleşimi Transceiver. Pl2303 sipariş etmiştim ebayden, gelince çalışmaya başlayacağım, bana talhadadak@gmail.com üzerinden ulaşabilirsiniz Alimesut bey :)
  • cevaplarınız için teşekkürler,

    örneğin kodu yolladık "AA25DD" gibi, bunu alıcı tarafta nasıl parçalayıp kullanabiliriz.
    AA sensörü 25 derece gibi...
  • Merhabalar
    benım ardunıolar arasında paket verı aktarımı gerceklestırmem gerekıyor bunu nasıl yapabılırım?Birde karsıdakı verı gonderen ardunıo nun bunu hangı zamanda gonderdıgını de serı porta nasıl yazdırabilirim?
  • giden veri ile beraber saati de yollarsın array içine bu ikinci sorun için.

    ilk sorun, öncelikle yukarıda da bahsedilmiş, alıcı ve vericileri bir haberleştir. eğer yok uğraşamam siz kodu yazın ben değiştireyim dersen, benim de üzerinde çalıştığım şu konuyu incele bolca kod var.
    http://forum.arduinoturkiye.com/index.php?p=/discussion/7230/evdeki-2-odayi-kontrol-etmek#Item_10
  • arduıno ıcınde geçen zamanı milis komutu sayar eger tam zaman bılgısı gerekli degılse arduıno açıldıgından berı geçen zamanı mılısanıye olarak damgalayabilirsiniz. (yada rtc modul kullanarak 1sn çözünürlükle damgalayabılırsın)

    paket veri olarak nrf24l01 kullanarak verı atılıp okunabilir. çalışan bır kod ve yontem bulmak zor oluyor bazen forumda vardı kullanan araştırısınız.
  • //VERICI KODUM
    #include //Call SPI library so you can communicate with the nRF24L01+

    #include //nRF2401 libarary

    #include //nRF2401 libarary
    #include "I2Cdev.h" //I2C kütüphanesi
    #include "MPU6050.h" //Mpu6050 kütüphanesi
    #include "Wire.h"
    MPU6050 accelgyro; // Mpu6050 sensör tanımlama
    int16_t ax[3]; //ivme tanımlama
    int16_t gx, gy, gz; //gyro tanımlama
    const int pinCE = 9; //This pin is used to

    const int pinCSN = 10; //This pin is used to

    RF24 radio(pinCE, pinCSN);

    #define WHICH_NODE 2 // must be a number from 1 - 4 identifying the PTX node

    const uint64_t wAddress[] = {0x7878787878LL, 0xB3B4B5B6F1LL, 0xB3B4B5B6CDLL, 0xB3B4B5B6A3LL, 0xB3B4B5B60FLL, 0xB3B4B5B605LL};

    const uint64_t PTXpipe = wAddress[ WHICH_NODE - 1 ]; // Pulls the address from the above array for this node's pipe

    byte counter = 1; //used to count the packets sent

    bool done = false; //used to know when to stop sending packets

    int32_t veri;
    void setup()

    {
    Wire.begin();
    Serial.println("I2C cihazlar başlatılıyor...");
    accelgyro.initialize();
    Serial.println("Test cihazı bağlantıları...");
    Serial.println(accelgyro.testConnection() ? "MPU6050 bağlantı başarılı" : "MPU6050 bağlantısı başarısız");
    Serial.begin(115200); //start serial to communicate process



    radio.begin(); //Start the nRF24 module

    radio.setPALevel(RF24_PA_LOW); // "short range setting" - increase if you want more range AND have a good power supply
    radio.setChannel(108); // the higher channels tend to be more "open"

    radio.openReadingPipe(0, PTXpipe); //open reading or receive pipe

    radio.stopListening(); //go into transmit mode

    }

    void loop()

    {

    if (!done) { //true once you guess the right number


    radio.openWritingPipe(PTXpipe); //open writing or transmit pipe

    sensor();

    if (!radio.write( &ax, 6 )) { //if the write fails let the user know over serial monitor

    Serial.println("Guess delivery failed");

    }

    else { //if the write was successful

    Serial.print("Success sending guess: ");





    radio.startListening(); //switch to receive mode to see if the guess was right

    unsigned long startTimer = millis(); //start timer, we will wait 200ms

    bool timeout = false;

    while ( !radio.available() && !timeout ) { //run while no receive data and not timed out

    if (millis() - startTimer > 200 ) timeout = true; //timed out

    }



    if (timeout) Serial.println("Last guess was wrong, try again"); //no data to receive guess must have been wrong

    else { //we received something so guess must have been right

    byte daNumber; //variable to store received value

    radio.read( &daNumber, 1); //read value

    if (daNumber == ax[0]) { //make sure it equals value we just sent, if so we are done

    Serial.println("You guessed right so you are done");

    done = true; //signal to loop that we are done guessing

    }

    else Serial.println("Something went wrong, keep guessing"); //this should never be true, but just in case

    }

    radio.stopListening(); //go back to transmit mode

    }

    }

    delay(1000);

    }


    void sensor() {

    accelgyro.getMotion6(&ax[0], &ax[1], &ax[2], &gx, &gy, &gz); // ivme ve gyro değerlerini okuma



    }
  • Bu benım verıcı kodum dedıgım gıbı 4 ardunıo verıcı olarak kullanıyorum. bunu nasıl senkronıze edebılırım.? bırde dedıgınız zaman kısmı suanda kodda dongu halındeyken yazdırılabılır mı? senkronıze problemı oldugu ıcın ıvmeolcerdekı verılerı alıcı da goremıyorum

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.