Templates by BIGtheme NET
Anasayfa / Teknoloji / Programlama dilleri / Arduino / İki arduino birbirine nasıl bağlanır ?

İki arduino birbirine nasıl bağlanır ?

Başlıktan da anlaşılacağı gibi iki adet arduinonun birbiri ile iletişim kurması nasıl sağlanır sorusuna cevap yazmaya çalışacağım. Arduinoların birbiriyle  haberleşmesini kablolu veya kablosuz ile bağlayarak iki şekilde sağlayabilirsiniz.

Kablosuz bağlantı için bluetooth modüllerden birisini(HC05 veya 06), ESP8266 wifi haberleşme modülü yada  radyo frekansı ile haberleşen nRF24L01 modüllerinden birisini kullanabilirsiniz. Daha önce Bluetooth modül kullanarak telefondan arduinoya bağlı olan lcdye mesaj yazma örneği ile ilgili bir makale yazmıştık. Bluetooth ile 16×2 LCD ye mesaj gönderme konusuna buradan ulaşabilirsiniz. nRF24l01 modülünün kullanımı ile ilgili kumanda devresi örneğine Servo motoru nasıl kumanda ederim isimli makalemizden ulaşabilirsiniz.

Kablolu bağlantı kurmak için ise TXD ve RXD pinlerini kullanabilirsiniz. Biz bu konumuzda kablolu olarak iki arduino birbiri ile nasıl iletişim kurabilir? sorusuna cevap vereceğiz.

Arduinolar normal standartlarda seri haberleşme yolu kullanırlar. Bu haberleşme için arduino üzerinde TX ve RX pinleri bulunur. Kaba tabirle TX pininden veri gönderilirken RX pininden de gelen veri okunur. Böylelikle diğer arduino veya modüller ile iletişim kurulabilir.

Arduinoları birbirine TX ve RX pinleri ile bağlayabilirsiniz. Bağlantıyı yaparken dikkat etmeniz gereken TX pinini RX pinine, RX pinini ise TX pinine takmanız gerekmektedir. Sonuçta bir arduinonun TX ile gönderdiği veriyi karşı taraftaki arduinonun RX pini okuyabilir.

Aşağıdaki örnek bağlantı şemamız da  bir arduinodan düğmeye basıldığında diğer arduinoya bağlı olan led yanacaktır. Bende bir arduino uno ve bir arduino pro mini olduğu için ikisini kullandım. Siz iki adet uno yada farklı bir model kullanabilirsiniz, farketmez. Arduno pro mininin bilgisayara nasıl bağlandığını bilmiyorsanız daha önce yazmış olduğumuz Arduino Pro mini nasıl bağlanır isimli makalemizden öğrenebilirsiniz.

ikiarduinobaglanti

Bağlantıları şekildeki gibi yaptıktan sonra aşağıdaki kodu düğmenizin bağlı olduğu arduinoya kopyalayıp yükleyebilirsiniz.

Şimdide led diyotun bağlandığı arduinoye aşağıdaki kodu yüklüyoruz.

 

Arduinoları birbirine bağlamakla ne elde edilebilir ? 

  • Doğru bir bağlantı ve kodlama ile 2 kat daha fazla dijital pini kontrol edebilirsiniz
  • Doğru bir bağlantı ve kodlama ile 2 kat daha fazla analog girişi kontrol edebilirsiniz.
  • Kısa mesafeli alanlarda uzaktaki sensörlerden tek bir seri iletişim ile veri okuyabilirsiniz.

Konuyla ilgili her türlü sorularınızı yorum atabilirsiniz. En kısa zamanda cevap vermeye çalışırım.

22 yorum

  1. Hocam takıldıgım bir yer var hiçbriyerde cevap alamadım, sizin yardımınızı rica ediyorum.
    ARDUİNO UNO analog ve digital pinlerin hepsi dolu. digital pinlere role ve NRF takılı.
    analog pinlerde ise LM35 sıcaklık, ates sensoru, ışık sensoru, ve LCD ekran (A4,A5) takılı.

    unoda sadece bir sensor takılı oldugu zaman(ornek Sıcaklık) degerler normal, dogru veriyor.

    ancak A0= sıcaklık A1=ışık sensoru taktıgım zaman sıcaklık 25.00 derece verirken 55.00 70.00 derece vermeye başlıyor.

    sadece iki sensoru bile takarken normal degerler vermezken tüm pinler dolu oldugu zaman nasıl her sensorden doglu deger alabılırım.

    cozum için denedigim yontemler ise yaramadı.
    * farklı uno kullanımı
    ** kabloların degisimi
    ***mega kullanımı
    ****sensor sinyallerini uno dan VCC ve GND hatlarını farklı kaynaktan kulanımı da işe yaramadı

  2. hocam birden fazla arduinoyu nrf ile haberlestirdim. bunu kablolu olarak anlattıgınız sekilde yapmam gerekiyor.

    kablolu olarak iki arduino arası mesafe kac metreye kadar akıcı ve sorunsuz olur. benim ihtiyacım iki arduino arası en az 10 metre olacak. 10 metrede kablolu iletişim olabilir mi?

  3. hocam iyi günler iki farklı arduinodan okunan değeri nasıl başka arduino ya gönderip o arduino üzerinde işlem yapabilirim

    • bunun için kablosuz iletişim mantıklı olacaktır. nRF24l01 ile aynı anda 4-5 adet arduinodan bir arduinoya kablosuz veri gönderebilirsin.

  4. Bilal Hakyemez

    Hocam kolay gelsin bir projede uno ve mega kartlarını kullanacağım bir biri ile haberleşmesi ve aynı anda birden fazla veriyi bir birlerine iletmesi gerekiyorsa bu mümkün mü nasıl ? Yardımcı olabilirseniz çok sevinirim teşekkürler.

    • Arduinonun tüm modellerinde bulunan tx veri gönderirken rx pini gelen veriyi okuyor. Bu durumda mesela uno veri gönderirken tx i meşgul olacakken aynı zamanda meganın tx inden gelen veriyi rx pininden okurken meşgul olacak. Teorikte bir sıkıntı olmayacağı düşüncesindeyim. ama işi pratiğe dökmedikçe nelerle karşılaşacağımızı önceden kestiremeyiz. Seri haberleşmede veri gönderirken bir miktar microdelay komutu eklemeni tavsiye ederim.

  5. EMİN ÇELİK

    İyi günler,

    Bizim bir projemiz var yardım edebilir misiniz?
    Projemizde iki adet sistem var. Bunlar renk algılama sensörü ile kuluçka termostadı. İkisi de arduino ile yapıldı. Sizden yardım almamız gereken kısım ise sensörleri bağlamak. Yapmak istediğimiz kısaca renk sensöründeki LCD de rengi algılayım örn. kırmızı yazdığında ikinci sistemde termostadı belirli dereceye örn. 25 ayarlayım komut vermesi. Bunu yapmamız mümkün mü ? Yardımcı olursanız sevinirim.

  6. iyi geceler

    2 arduino arasında seri haberleşme yapmamız gerekiyor.1 tane arduinodan sıcaklık sensörüyle sıcaklığı okuyoruz(digital pin kullanarak) .serial monitörde sıcaklık değerlerini görüyoruz ama bunu nasıl diğer arduino ya aktarırız bilmiyoruz.Rx Tx haberleşme uçlarını kullanıcaz.haberleşmeyi de şebeke hattı üzerinden yaptığımız başka bi modül kullanıyoruz hat üzerinden haberleşmeyi sağlaması için .elektriksel bağlantı da sıkıntı yok ama arduino yu iyi düzeyde bilmiyoruz.bu yüzden yapamıyoruz.
    bi arduino dan sensörle veriyi okuyup serial monitöre yazdırıyoruz ama bu veriler nasıl diğer arduinoya aktarılıp okunabilir. Bunu hem nasıl yapacağımızı hem de yazılım olarak ne yapmamız gerektiğini iyi bilmiyoruz

    Yardımcı olabilir misiniz ?

    • Sevgili kardeşim gönderen arduino ve alan arduinoya aynı hızda seri haberleşme kodu yazacaksın. Yani ikisinede mesela Serial.begin(9600);

      Gönderen arduinoda sensörden okuduğun değeri misal şu şekilde yollayabilirsin. Serial.write(analogread(0));
      Alan arduinoda bu değeri okurken önce sinyal gelip gelmediğini kontrol etmek için if(Serial.available()>0){
      int sensor = serial.read(); // sensör diye değişken oluşturup diğer arduinodan gelen değeri bu değişkene aktarıyoruz.
      }

      bu şekilde bir veri trasferi sıkıntı yapmayacaktır. Eğer gönderdiğiniz veriniz çok büyükse gönderen ve alan arduinoda delay(20); gibi bir kodda eklemenizde fayda var.
      çünkü loop göngüsü verinin tamamen gitmesine bakmadan kodu tekrar eder. Bilmem anlatabildimmi.

  7. Hocam iyi günler benimde bir projem var iki arduino arası veri gönderimi (yani küçük bi dosya) şeklinde, bu proje formatını benim düşünmüş olduğum projeye uyarlamak mümkünmü yardımcı olabilirmisiniz.

    • Merhaba. Göndereceğiniz dosya türü nedir ? nasıl bir veri göndereceksiniz. Projenizi daha detaylı anlatırsanız yardımcı olmaya çalışırız.

      • Hocam öncelikle cevabınız için teşekkür ederim, iki arduino arası haberleşme için yazmış olduğum verici kodlarını önce Matlab ile , alıcı kodlarını ise Python ile senkron bir şekilde çalışır hale getirip Matlab’ten Python’a bir resim aktarımı düşünüyorum, geçen nette gördüm çok beğendim, böyle bir proje üzerinde çalışıyorum eksiklerim var, ihtiyacım olan bilgiler var , eğer yardımcı olabilirseniz çok mutlu ve memnun olurum.

  8. şöyle bir deney planım var , fare kafeslerinde yemlik olan kısımlarında kızıl ötesi sensör var ve hayvan yemliğe kafasını soktuğunda senssör hayvanı algılayıp,hayvanın kafasında takılı olan lazerin out put yollayarak lazeri aktif hale getiriyor.
    benim istediğim şekilde ;
    4 kafesim var ve yemliklerinde sensör var bu sensörler hayvanı algıladıklaında kafalarında olan lazere out put vererek 10sn 20hz şeklinde çalışmasını ve hayvanın kaç kere kafasını içeri soktuğunu ve zamanını serial ekrana yazmasını istiyorum. birde 4 kafesinde serial ekranını aynı bilgisayardan kullanarak görebilirmiyim ? kodunu bu şekilde yazmak mümkün müdür ?

  9. int dugme1=6;
    int dugme2=7;
    void setup() {
    Serial.begin(9600);
    pinMode(dugme1, INPUT);
    pinMode(dugme2, INPUT);
    }
    void loop() {
    int deger1= digitalRead(dugme1);
    if(deger1==1){
    Serial.write(1);
    }
    int deger2= digitalRead(dugme2);
    if(deger2==1){
    Serial.write(2);
    }else{
    Serial.write(0);
    }
    }

    Bu şekilde mi dediniz böyle denedim çalışmadı hocam 🙁

  10. Selamunaleyküm
    Kod için çok teşekkür ederim çok faydası oldu ama bi yerde takıldım yardımcı olabilir misiniz?

    int dugme1=6;
    int dugme2=7;
    void setup() {
    Serial.begin(9600);
    pinMode(dugme1, INPUT);
    pinMode(dugme2, INPUT);
    }
    void loop() {
    int deger1= digitalRead(dugme1);
    int deger2= digitalRead(dugme2);
    if(deger1==1){
    Serial.write(1);
    }
    else if(deger2==1){
    Serial.write(2);
    }else{
    Serial.write(0);
    }
    }

    int led1=10;
    int led2=11;// ledimizin artısını 10 nolu pine bağladık
    void setup() {
    Serial.begin(9600); // 9600 hızında Seri iletişimi başlatıyoruz
    pinMode(led1, OUTPUT);
    pinMode(led2, OUTPUT); // 10 nolu pini çıkış olarak ayarladık
    }
    void loop() {
    if(Serial.available()>0){ // veri geliyormu ?
    if(Serial.read()==1){
    digitalWrite(led1, HIGH);} // veri 1 ise ledi yak
    if(Serial.read()==2){
    digitalWrite(led2, HIGH);} // veri 1 ise ledi yak
    else{
    digitalWrite(led1, LOW);
    digitalWrite(led2, LOW);//değilse ledi söndür
    }
    }
    }

    Buton led sayısını 2 ye çıkartmak istedim ama yapamadım çalışmıyor hatam nerde 🙁

    • Gönderen kodda iki buton için iki ayrı if sorgusu yapmanız gerekir. if else yapısı mantık hatası. 1. buton için ayrı if 2. buton için ayruı if olmalı

Cevapla

E-posta adresiniz yayınlanmayacak. Gerekli alanlar işaretlenmelidir *

*