Arduino İle NRF24L01 Rf Modül Kullanımı

157 69.211

Kablosuz haberleşmede sıkça kullanılan modüllerden NRF24L01 Rf modül kullanımı hakkında bahsedeceğim.Bu modülün kullanımı kolay ve menzili gayet iyi olduğundan projelerinizde rahatlıkla kullanabilirsiniz.Ayrıca fiyatı da uygundur.Düşük güç tüketimi ve 2.4GHz frekans da çalışması bize avantaj sağlamaktadır.

  • NRF24L01 2.4GHz Transceiver Modül
  • Modülün pcb ve harici antenli modeli mevcuttur.Pcb modellerde menzil  250 m iken harici antenli modelinde menzil 1000 m’ye  kadar çıkabiliyor.
  • Modülü projenize göre çift yönlü haberleşme yaptırmak için hem alıcı hem verici olarak kullanabilirsiniz.

NRF24L01 Proje Ürünlerini İncele

  • Modülün Pin Bağlantıları:

Modül SPI protokolünü kullanarak haberleşmektedir.Bundan dolayı pin bağlantılarını arduino modelinin SPI pinlerine bakarak yapmalısınız.Örnek olarak arduino uno ile pin bağlantılarını gösterelim.

nRF24L01  Arduino Uno
VCC 3.3 V
GND GND
CS 7
CE 8
MOSI 11
MISO 12
SCK 13

Kablosuz haberleşme yaparken modüllerden birini alıcı diğerini ise verici olarak ayarlamamız gerekiyor.İstenirse projenin durumuna göre bir modül hem alıcı hem de verici olarak da kullanılabilmektedir.Modülün alıcı veya verici durumunda olması kablo bağlantılarını değiştirmez.Bu bağlantılar tüm durumlar için aynıdır.

Örnek Kod:

Verici kodu:

#include <SPI.h>
#include <nRF24L01p.h>

nRF24L01p verici(7,8);//CSN,CE

void setup(){
delay(150);
Serial.begin(115200);
SPI.begin();
SPI.setBitOrder(MSBFIRST);
verici.channel(90);
verici.TXaddress("kontrol");
verici.init();
}

String message;

void loop(){
if(Serial.available()>0){
char character=Serial.read();
if(character=='\n'){
verici.txPL(message);
verici.send(SLOW);
message="";
}else{
message+=character;
}
}
}

Alıcı Kodu:

#include <SPI.h>
#include <nRF24L01p.h>

nRF24L01p alici(7,8);//CSN,CE

void setup(){
delay(150);
Serial.begin(115200);
SPI.begin();
SPI.setBitOrder(MSBFIRST);
alici.channel(90);
alici.RXaddress("kontrol");
alici.init();
}

String message;

void loop(){
if(alici.available()){
alici.read();
alici.rxPL(message);
Serial.println(message);
message="";
}
}

Fonksiyonların Açıklamaları:

  • Modülün nRF24L01p.h adında kütüphanesini buradan indirelim. >>nRF24L01p
  • Yazılımda öncelikle CE ve CSN pinlerini tanımlamamız gerekiyor.
  • nRF24L01p alici(7,8); >> Burdaki komutla 7.pin CSN, 8.pin CE pini olarak tanımlanmış.Bu fonksiyonda alıcı modül adına “alici” ismini verdik.
  • nRF24L01p verici(7,8); >> Burdaki komutla 7.pin CSN, 8.pin CE pini olarak tanımlanmış.Bu fonksiyonda verici modül adına “verici” ismini verdik.
  • SPI protokolü ile haberleştiği için SPI kütüphanesi eklenip  SPI.begin(); fonksiyonu setup’ın içine yazılarak haberleşme başlatılır.
  • alici.channel(90);>> Alıcı modülde setup’ın içinde tanımlanarak haberleşme kanal değerini 90 yaptık.Bu değer iki modülde de aynı değer olmalıdır.0 ile 125 arası değer yazılabilir.
  • verici.channel(90);>> Verici modülde setup’ın içinde tanımlanarak haberleşme kanal değerini 90 yaptık.Bu değer iki modülde de aynı değer olmalıdır.0 ile 125 arası değer yazılabilir.
  • alici.RXaddress(“kontrol”); >> Bu fonksiyon ile modülü alıcı olarak ayarladık ve adres ismine de “kontrol” adını verdik.
  • verici.TXaddress(“kontrol”);>>Bu fonksiyon ile de modülü verici olarak ayarladık ve adres ismine de “kontrol” adını verdik.
  • İki modülün de adres ismi ve haberleşme kanal değeri aynı olmalıdır.

Önemli Not:Modüller arası haberleşme sağlanamıyorsa her iki modülün de vcc ve gnd pinleri arasına 3.3 uF ile 10 uF  arası değerde kondansatör yerleştirerek tekrar deneyiniz.

NRF24L01 Proje Ürünlerini İncele

Örnek Uygulama:
Potansiyometre ile Kablosuz Servo Motor Kontolü

RF24 Kütüphanesini buradan indirelim.

Şekildeki alıcı ve verici devrelere bakarak gerekli bağlantıları yapabilirsiniz.

Yazılım kısmında bir modülü alıcı diğer modülü de verici olarak tanımlayarak kablosuz olarak veri transferini gerçekleştireceğiz.

Verici Yazılımı:

#include <SPI.h>
#include "RF24.h"
int msg[1];
//SCK -> 13//MISO -> 12//MOSI -> 11//CSN -> 7//CE -> 8
RF24 radio(8,7);
const uint64_t pipe = 0xE8E8F0F0E1LL;
int potpin = 0;
int val;
void setup(void){
radio.begin();
radio.openWritingPipe(pipe);
}
void loop(void){
val = analogRead(potpin);
val = map(val, 0, 1023, 0, 179);
msg[0] = val;
radio.write(msg, 1);
}

Alıcı Yazılımı:

#include <Servo.h>
#include <SPI.h>
#include "RF24.h"
Servo myservo;
//SCK -> 13//MISO -> 12//MOSI -> 11//CSN -> 7//CE -> 8
RF24 radio(8,7);
const uint64_t pipe = 0xE8E8F0F0E1LL;
int msg[1];
void setup()
{
myservo.attach(9);
radio.begin();
radio.openReadingPipe(1,pipe);
radio.startListening();
}
void loop()
{
if (radio.available()){
bool done = false;
while (!done){
done = radio.read(msg, 1);
myservo.write (msg[0]);

}
}
}
Bunlar da İlgini Çekebilir
Cevap bırakın

E-posta hesabınız yayımlanmayacak.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

157 Yorum
  1. Mustafa

    Nrf24l01 modülü veri okuduğunda hangi pin den bu veriyi bı LED e aktarabilirim. Yani mesele Arduino ya bir kodu yüklerken rx tx ledleri yanıp sönüyor ya onun gibi verinin alındığını haber etmesi için bir LED yakmak istiyorum ama Arduino kullanarak değil direk nrf24l01 den mümkün mü bu Ve veride bir kayıp veya hata oluşturur mu

  2. bedo

    abi kafayı yicem bu konularda yeniyim de şu MISO MSI IRQ bunlar ne ya
    modül pın bağlantıları dediğin fotodaki kısaltmaların adı ne

  3. muhammed baki kurt

    nrf24l01 ile uzaktan kumandalı araba yapımını da yapabilirmisiniz

  4. midtakes

    selamlar,alıcı tarafında sıkıntı yaşıyorum potansiyometre değerlerini verici serial portunda düzgün okuduğunu gözlemliyorum ancak alıcıya bilgiler sıfır olarak iletiliyor. Adaptör modülü hatta yeni nrf24ler bile aldım ama değişen olmadı yardımcı olabilirmisiniz?

  5. Okan onur

    Servo alıcı kodu kısmında 20. Satırda hata veriyor yardımcı olurmusunuz

  6. ahmet uysal

    nrf24l01 3.3 voltla çalışıyor vcc pinine 3.3 volt bağlamışsınız fakat arduino nun diğer pinleri (7, 8, 11, 12, 13 pinleri) 5 voltla çalışıyor . Bu sıkıntı olmuyor mu modül için?

  7. Dnc dnc

    Selam hocam ben iki tane robotun birbirleriyle haberlesmesini saglamaya çalışıyorum ama pin sayisi yeterli degil ne yapmaliyim bilen varsa yardimci olsun sensor motor surucu derken nrf24 icin yer kalmadi pin yerine rx tx i kullanabilirmiyim

  8. Hasan

    Selam Hocam nrf ile en fazla kac byt lik veri gönderilir?

  9. Bülent

    Hocam Çok faydalı oldu teşekkürler ,
    Uyguladım çalışıyor,
    servo hareketini Hc06 ilede cepten hareket vermek istiyorum
    normalde Hc06 ile hareket eden bir tekne yaptım çalışıyor ,
    Nrf 24 ile mesafe uzatma yapacağım,
    program konusunda yardımcı olabilirmisiniz,

  10. Roti

    1 uF lık kondansatör kullanarak çalıştırdım. Kondansatörsüz çalıştıramadım.String gönderebilmek istiyorsanız aynı veriyi en az 5 kez belki de daha fazla göndermeniz lazım çünkü çok fazla veri kaybı oluyor. Bunu yaparken de verici koduna bir for loop eklemeniz gerekecek. alıcı için ise kısa bir filtre kodu yazmanız lazım. Veri aktarım hızı düşse de veri kaybı olmuyor. Kolay gelsin.

  11. Anonim

    Visitor Rating: 5 Stars

  12. ali

    Çalışıyor kondansatörü bağlayınca. 47uf bağladım oldu sonunda. 2 uno kullandım.

  13. Anonim

    Visitor Rating: 5 Stars

  14. Anonim

    Visitor Rating: 5 Stars

  15. EYÜP CAN ALTINTAŞ

    void value not ignored as it ought to be HATASI VERİYOR
    done = radio.read(msg, 1); CÜML5SİNİN HATALI OLDUGUNU GOSTERİYOR YARDIMCI OLURSANIZ COK SEVİNİRİM.ŞMDİDEN TEŞEKKÜRLER.

    1. Emrullah Kaya

      RF-24-master.zip teki dosyayı yalın bir şekilde arduino kütüphanesine at

    2. Ercan

      Merhaba ben de ayni hatayi alıyorum, acaba biz çözüm bulabildiniz mi

  16. Anonim

    Visitor Rating: 5 Stars

  17. EMRAH

    ben aynısını yaptım bağlantıları defalarca kontrol etmeme rağmen yükleme başarılı oluyor ancak hiç tepki yok çalışmıyor 1 aydı uğraşıyorum almadığım malzeme kullanmadığım yol kalmadı allah rızası için yardım edin kafayı yemek üzreryim
    🙁 🙁

  18. Anonim

    Visitor Rating: 4 Stars

  19. Anonim

    Visitor Rating: 1 Stars

  20. bayram

    Merhaba Hocam 1 Haftadır hemen hemen ugrasıyorum. nanoda sıkıntı yok gayet basarılı calısıyor. artı megadan nanoya verı aktarımındada sorun yok ama nanodan megaya verı aktarırken sorun yasıyorum bu sorunu nasıl cozebılırım bır bılgınız varmı acaba

    1. EMRAH

      kardeşim nolur banada yardım edin denemediğim yol kalmadı. Yardımını bekliyorum inanki memlekette bunu yapamayan tek kişi benimdir herhalde 🙁
      emrahgulger@icloud.com
      teşekkür ederim

      1. Güven

        maker.robotistan.com/nrf24l01-ile-uzaktan-kontrol/ emrah buradakileri aynen yap olur

  21. 0yuncu

    malzeme listesii varmı

  22. Hasan Tahsin

    Merhabalar..
    Ben projemde bu modülü kullanmayı planlıyorum fakat arduino değil de kartımı kendim tasarlıcam. Kendi tasarladığım kartla böyle birşey mümkün mü ? Mümkün ise hangi hangi entegreler ile haberleştirebilirim ? (Benim kullanacağım entegre PIC16F84a)

    Yardım ederseniz sevinirim.

  23. ahmet

    hocam merhabalar string ifadeyi örneğin “merhaba” ifadesini nrf24 ile nasıl gönderebiliriz.

  24. Anonim

    Visitor Rating: 1 Stars

  25. Anonim

    Visitor Rating: 2 Stars

  26. Anonim

    Visitor Rating: 5 Stars

  27. Anonim

    Visitor Rating: 5 Stars

  28. ömer faruk ağıl

    Keşke servo motorların hrc05 ile baglantı seması da olsa

  29. Anonim

    Visitor Rating: 5 Stars

  30. Mali

    İyi akşamlar. Bir verici 2 yada daha fazla alıcı olduğunda 2. Kanalı nasıl tanımlıyoruz. Yani mesaj 1 ise 1. Kanaldan , mesaj 2 ise 2. Kanaldan iletmek istiyorum. Yada tek kanal kullanıp 2 alıcı için farklı mesajlar mı göndermem gerekli.

    1. Mali

      Siz 6 ardunio haberleşebilir dediniz o nedenle soruyorum hepsi aynı kanalı kullanacaksa 6 dan daha fazla sayıda ardunio kullanabiliriz

  31. eren

    BU PROJEDE NRF24L01 YERİNE KIZIL ÖTESİ KULLANIRSAK NASI OLUR YAZILIMI VE KURULUMU YARDIMCI OLABİLİRMİSİNİZ ÇOK ACİL LÜTFEN

    1. Sezgin GÜL

      kızılötesi alıcı ve verici seti alın. kütüphanedeki örnek koda göre butonlara servoların açılarını aktarın.

      1. EREN

        peki çook teşekkür ederim

  32. Anonim

    Visitor Rating: 1 Stars

  33. halil

    merhaba bu projeyi yapmaya çalışıyorum ama alıcı kodunda done hataveriyor sebebini söylermisiniz ?

    1. s_safak

      Sorunu cozebildiniz mi bilemiyorum ama Setup altinda Serial.begin(9600); ekleyip done = satirinin ustune Serial.println(done); yazarak basit bir debug yapabilirsiniz. Cunku yukarida done bool olarak tanimlanmis. fakat anladigim kadari ile (kodu kullanmadigim icin bilemiyorum) radio.read(msg, 1) olarak farkli birsey set ediyor olabilir. Bu sekilde daha kolay cozum bulabilirsiniz.

  34. Rıdvan Sevil

    Merhaba; bu yöntem ile arduino mega üzerinden matlab&simulink ‘e sensör üzerinden sinyal gönderebilir miyim?

    Teşekkürler.

    1. s_safak

      simulink serial uzerinden yada baska bir uygulama uzerinden veri alabiliyor ise mumkun.
      Bu sistem ile PC ye bagli serial porta gonderdiginiz verileri herhangi bir programlama dili ile okuyup simulink e anlayacagi mesajlari gonderebilirsiniz.

  35. Rıdvan Sevil

    Merhaba; bu sistemle arduino mega üzerinden matlab&simulink ‘e veri aktarabilir miyim?

    Teşekkürler.

  36. mert çelebi

    merhaba sezgin buna benzer bir proje üzerine çalışıyorum yapmak istediğim butona basıldığında servo 90 derece dönsün tekrar basıldığında 0 dereceye geri gelsin bir iki deneme yaptım fakat sonuç alamadım baştaki kalıp haberleşme programına nasıl bi eklenti yapmalıyım yardım edersen sevinirim.

    1. s_safak

      verici tarafinda butona basiminizda sizin anlayacaginiz bir mesaj olusturabilirsiniz (RF_motor_turn) gibi. bu mesaji aliciya gonderip hangi yontem akliniza yatar ise o yontem ile gelen mesaji karsilastirip motora donme adimi islemini yaptirabilirsiniz. Servolarda kullanilan libraryler onemli. Kiminde basit komutlar ile donme saglarken en son detayli calisma yaptigim bir library de 0.1 tam tur 0.01 yarim tur 0.001 ceyrek tur mesajlari idi. Bunada dikkat etmeniz gerek.

  37. aytug

    Merhaba benim sorunum şu alıcı verisi olarak çalıştırıyorum sıkıntı yok fakat ben bir cihazı hem alıcı hem verici yapmak istiyorum. Yardımlarınızı bekliyorum.

  38. .

    pa antenli ile sıradan nrf arasında hiçbir kullanım farkı var mı?
    ben sorunsuz bir sekilde antensizi kullanıyorum ama antenli aynı devrede calısmıyor

  39. Hamza sinal

    Kardeşlerim agabi lerim bir ricada buluncam, bir pir hareket sensör ile iki adet nrf24lo1 arasında led di nasıl çalıştıra biliris kodu nasıl yaza biliris bilen varmı ( sinallanis@hotmail.com )

  40. Ömer Bozdemir

    Merhaba nrf24rl01 adaptörü olmadan kullanabilir miyiz nrf2rl01 i teşekkürler acil lütfen!

  41. Oguzhan

    Ben 2 servo ve
    1 motor kullanmak istiyorum
    Ne yapmaliyim

  42. ayhan öztürk

    hocam çok teşekkür ederim uzun zamandan beri uğraşıyordum bir türlü eşleşme sağlayamıyordum…sonunda önceki kütüphaneleri sildim verdiğin linkten indirdim. sadece her iki nrf24 ün vcc ile GND arası 47 uf lik kondansatör bağladım. kondansatör bağlı olmayınca çalışmıyor..HARCADIĞIN EMEK İÇİN TEŞEKKÜRLER…

    1. Sencer

      Her yerde farklı değerlerde kondansatör söyleniyor, 2.2, 3.3, 10, 20, 100 uf lik kondansatörler bağladım, hiç biriyle çalıştıramadım. İki adet arduino var biri orjinal diğeri çin malı. Her ikisinde de çalışmıyor. Başka hiç bir işle uğraşamaz oldum şunu çalıştırana kadar.

      1. mete

        bende faklı uno lar vardı çalışmadı , her ikisini aynı yapınca çalıştı

  43. Ali

    bir wireless module (Nrf24l01) takılı arduino uno ile bilgisayar arasında kablosuz veri aktarımı yapılabilir mi ? eğer yapılırsa nasıl olacağını anlatabilir misiniz ? alıcı arduino, verici pc olacak, ya da verici arduino alıcı pc olacak. wifi üzerinden. bu verileri okumak için de pc de c# programını kullanmayı düşünüyorum.

    1. Sezgin GÜL

      Yapabilirsin. Buradaki projeye bakarsan yardımcı olacaktır. http://www.robimek.com/arduino-ve-visual-basic-ile-rf-uzerinden-sicaklik-nem-olcumu/

  44. ERDEM

    abi birden fazla değer okumak istiyorum nasıl değişiklikler yapmalıyım

  45. Ibrahim

    Selamın aleyküm
    Aynı projeye ek olarak pot un yanına PIR sensörü; servo nun yanına da Led bağlayarak aynı zamanda PIR ile Led i kontrol etmek istiyorum.
    Programı yazdım hata yok gibi ;
    Led yanıyor ama Servo yu kontrol edemiyorum.
    Nrf gnd ile Vcc arasinda 3,3 mikrofarad bağlı sorun nerde olabilir? TEŞEKKÜR EDERİM SIMDIDEN

  46. EREN

    Verici kısım sinyal gönderiyor fakat alıcı kısım sinyali almıyor, kapasitede kullandık fakat sadece sinyal gönderiyor alıcı kısım bu bilgileri almıyor sebebi ne olabilir.Teşekkürler

  47. qwerty123

    hocam servo kontrolünde sadece yazdığınız kodlar yeterli mi yukarıda bahsettiğiniz kütüphaneyi indirdikten sonra ne yapacağız ?

    1. Sezgin GÜL

      nrf kütüphanesi indirip arduinonun kütüphanesine ekleyin. servo kütüphanesi zaten mevcut. bu kadar.

  48. Yusif

    merhaba bende sindaki kodda bir probem cikiyor yardimci ola bilirmisiniz?

    Arduino: 1.6.8 (Windows 10), Board: “Arduino Nano, ATmega328”

    C:UsersAyselDocumentsArduinoalici2alici2.ino: In function ‘void loop()’:

    alici2:21: error: void value not ignored as it ought to be

    done = radio.read(msg, 1);

    ^

    exit status 1
    void value not ignored as it ought to be

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.

  49. ENES AYGÜN

    meraba hocam ben nrf ile iki verici bi alici sistemi yapmak istiyorum ve hazır kodların birçoğunu denedim yani şöyle söylemeliyim bir göndericide bi buton diğer göndericide bi buton alıcıda ise bir led bu iki butonunda görevi o ledi yakmak ben bunu bir gönderi bir alıcı şeklinde yaptığımda gayet güzel çalışırken iki gönderici bir alıcı yaptığımda sistem sapıtıyor led yan-sön yapıyor. bu arada iki göndericininde kodları birebir aynı ne yapmamı önerirsiniz.

    1. Teknik A.

      2.ci göndericinin gönderdiği mesajı değiştir ve ayrı mesajara aynı görevi yukle

  50. AHMET

    Merhaba nrf24l01 kullanarak haberleşme yapmak istiyorum. iki adet mevcut. birine uno birine mega bağlayarak alıcı ve verici kodlarını attım. ancak mesela vericiden ‘selam’ yazdırıp alıcıdan görmek istiyorum. nasıl yapılacağını anlamadım. daha sonrasında vericiye termometre bağlayıp uzaktan okuma yaptıracağım.

  51. ismail

    merhabalar benim isteğim arduinoma bağlı sensörün verilerini kablosuz olarak bilgisayarımda görmek .
    daha önceden seri port için bilgisayarda bir arayüz programında görmüş olduğum verileri şimdi kablosuz görmek istiyorum ne yapmam gerekiyor.

  52. faisal shaikh

    i need a code of 2 pot and 2 servo serial communication between two ardunio via bluetooth or nrf24l01 module plzzzzz help me

  53. Eren

    Hocam 2 arduino uno yu , nrf24l01 ile haberleştirmeye çalışıyoruz. Alıcı olarak kullandığımız arduinonun RX ışığı yanıyor fakat verici olarak kullandığımız arduino nun yazılımı sırasında TX ışığı anlık yanıyor ve sönüyor. 2 farklı bilgisayar kullanıyoruz ve kapasiteleride kullandık fakat bi değişiklik olmadı. Sorun nedir acaba teşekkürler.

  54. Halit B

    Merhaba.
    Arduino megaya nrf24l01 ve as kart modülü bağlamam gerekiyor ve ayni anda veri almam gerekiyor. Fakat nrf24l01 de kullandığım pinler ile ad kart modülünde kullandığım pinler ayni yani ikisindede MOSİ MİSO CSN ve SS pinlerini kullanıyorum ad kart modülünü kullanmadan nrfden veri aliyorum veya nrf olmadan sd karttan veri alabiliyorum fakat ikisini ayni anda kullandigimda ne sd karttan veri alabiliyorum nede nrfden. Bunun icin bi çözümünüz varmi ?
    Teşekkür ederim.

    1. Sezgin GÜL

      Normalde spı ile haberleşen iki farklı modül aynı spı pinlerinde çalışır. fakat bazı kütüphanelerde çakışma olduğundan çalışmıyor.

      1. Halit B

        nasıl yani kutuphanelerdekı cakısmayı bıraz acarmısın. SPI ın kendı kutuphanesınde mı yoksa nrf24l01 ve sd kartın kutuphanesınde tam olarak anlamadım?

        1. Mikail

          Merhaba,
          Kusura bakmayın sizin sorunuza yanıt veremeyeceğim ama size başka bi sorum olacak. Aynı pinleri kullanan modülleri nasıl birlikte bağlayabildiniz board üzerinde aktardıgımızda aynı pini farklı 2 modül kullandıgı için sorun cıkıyor acaba bi entegre veya başka bişey mi kullandınız?

  55. Ali Çetinkaya

    Merhaba hocam,

    NRF24L01 kullanılarak çift yönlü haberleşmenin nasıl yapılacağı ile ilgili bilginiz var mı?

  56. Ahmet SAĞIR

    Merhaba

    Arduino nano ile headtracker yaptım. Ancak bunu wireless olarak yapmak istiyorum. O zaman burda mantıkla hareket edersek 2 adet nano’ya mı ihtiyacım olacak.

    RF ile yapmak mümkün değil mi?

    1. Sezgin GÜL

      rf ile yapabilirsiniz mümkün.

  57. Ahmet

    Arduinoları hem nrf24l01 ile haberleştirirken hemde C# arayüzü kullanarak komut vermek istiyorum. Bu durumda iki seri haberleşme olacak. Arduinolar arasında ve C#ile arduino arasında. Bu durumda sıkıntı çıkarmı.

    1. Sezgin GÜL

      Sorun çıkmaz.

  58. Adem

    Hocam kolay gelsin;
    Kodu projemde kullandığımda aynen şöyle bir hata mesajı alıyorum
    ” void value not ignored as it ought to be ” ve bir türlü çözemedim durumu.
    İşin garip kısmı sadece sizin paylaşmış olduğunuz kodu yüklemeye çalışıyorum Arduino’ya yine aynı hatayı alıyorum

    1. Sezgin GÜL

      Kodların hepsi sorunsuz derleniyor. Arduino programınızda sorun olabilir. Başka kütüphaneler eklemiş isen bazı kütüphaneler birbirleriyle aynı kodda derlenemiyor.

  59. Süleyman Hilmi Çamdalı

    Öncelikle böyle faydalı bir yazı için teşekkür ederim.Bir arduinoya 2 adet NRF24L01 bağlamak mümkün mü?

    1. Sezgin GÜL

      SPI haberleşme yaptığından arduino larda standart pinler bulunur ve bu pinlerden ikişer tane vardır. Yazılımda csn ve ce pinlerini farklı tanımlayıp, diğer (miso,mosi,sck) pinlerini de SPI pinlerine takarsan bağlantı kurabilirsin. Lakin 2 nrf modül kullanmaktansa, bir modül hem alıcı hem verici olarak çalıştığı gibi, aynı anda birden fazla modülle haberleşebiliyor.

      1. Mikail

        1. Spı pinleri digital pinlerde peki 2. pinler nerede bu konuda yardımcı olabilir misiniz ?
        Teşekkürler.

  60. selçuk

    Hocam iyi günler ben uno ve mega ile denedim olmadı sorun kondansatör olabilir mi? 2 tane kondansatör alcam bunların değeri tam olarak nedir ve nasıl lehimlenecek bilgi verebilir misiniz? Yine olmazsa yeni bir uno alıp uno+uno ile deneyeceğim.

    1. Sezgin GÜL

      Selçuk kodu yeniledim. rf24 kütüphanesi ile yaptım. Diğer kütüphane ile olan kodu çoğu arkadaş çalıştırırken sorun yaşamış. Bu şekilde sorun yaşamassın.

      1. selçuk

        yukarıdaki cevabı yeni gördüm

        KAYHAN 28 ŞUBAT 2016
        Mega da bağlantı pinleri farklı
        CE = 9
        CSN= 53
        SCK = 52
        MOSI= 51
        MISO = 50
        Programda da gerekli değişiklikleri yaparsan sorun çözülür.

        bir de bu kodla deneyim olmazsa şu kondansatörden sanırım

  61. hakan

    merhaba ben de bu modülleri kullanmaya yeni başladım ve bende sadece pcb antenli kısa mesafe nrf24l01 modellerinden var ve pahalı olduğu için 2 tane antenli model almak şimdilik fazla masraflı kaçıyor onun için merak ediyorum acaba bir tane harici antenli model alıp verici olarak kullansam ve alıcı olarak ta pcb antenli model kullansam(tersi de olabilir) iletişim sağlanabilir mi ve de mesafe artar mı? elinde bu harici antenli modellerden olanlar varsa bu soruma bi cevap bulabilirler mi?ona göre projelerime devam edeceğim çünkü? şimdiden çok teşekkür ederim ve bu arada yazı çok güzel olmuş bilgilerini paylaşan herkese teşekkürler 🙂

  62. emrah

    hocam yukardakı kodlardan şu şekilde bir kod çıkardım fakat programı yükledim pottan okuduğum değer alıcı kısmında alıp serialden okuyorum . arduinalardan birinin enerjisini kesip tekrar verdiğimde program birdaha çalışmıyor, ancak arduinoya başka bir program yulleyip üzerine tekrar bu programı yükleyince çalışıyor neden böyle bir sorun yaşıyorum ? arduino nano kullandım mega kullandım ikisndede aynı sorunu yaşadım elimde 5 adet nrf var hepsiylede aynı oluyor

    kodlar şu şekilde

    #include
    #include
    nRF24L01p verici(10,9);
    /* CSN – > 7, CE -> 8 olarak belirlendi */

    int pot=A0;
    int val;
    int pos;
    int pos2;

    int button1;
    int button2;

    int SW1 = 7;
    int SW2 = 6;

    void setup() {
    Serial.begin(9600);
    SPI.begin();
    SPI.setBitOrder(MSBFIRST);
    /* SPI başlatıldı */
    verici.channel(90);
    verici.TXaddress(“kontrol”);
    verici.init();
    /* Verici ayarları yapıldı */
    }

    void loop() {
    val = analogRead(pot);

    Serial.println(val);

    verici.txPL(val);
    boolean gondermedurumu = verici.send(FAST);

    delay(500);

    #include
    #include

    nRF24L01p alici(10,9);
    /* CSN – > 7, CE -> 8 olarak belirlendi */
    int LED1 = 3;
    int LED2 = 5;
    int LED3 = 13;

    void setup() {

    Serial.begin(9600);
    SPI.begin();
    SPI.setBitOrder(MSBFIRST);
    /* SPI başlatıldı */
    alici.channel(90);
    alici.RXaddress(“kontrol”);
    alici.init();
    /* Alıcı ayarları yapıldı */
    pinMode(LED1, OUTPUT);
    pinMode(LED2, OUTPUT);
    pinMode(LED3, OUTPUT);
    }

    int deger;
    int deger2;
    int deger3;

    void loop() {

    while (alici.available()) {
    /* Modülden veri geldiği sürece while devam edecek */
    alici.read();
    alici.rxPL(deger);

    Serial.print(“1. data =”);
    delay(10);
    Serial.println(deger);
    delay(10);

    }
    }

    1. Sezgin GÜL

      SPI setup kısmında başlatılıyor yani bir modülü kapatıp diğer modülü de kapatmaz isen kapattığın modül çalıştığında diğer modül setup kısmına dönmediğinden iletişime geçemiyor.

      1. emrah

        hocam tam anlayamadım. spı kısmını nerede yazmamız gerekiyor ?
        yukardaki paylaşmış olduğunuz program aslında bu. enerji kesilip geri verildiginde çalışması gerekmezmi ? bunun için nasıl bir düzenleme yapmam gerekir

        1. Sezgin GÜL

          Bir arduinoyu kapatıp açtığında setup çalışır ve etrafındaki modüllere bulur fakat önceki bağlandığı diğer arduinoyu kapatıp açmaz ise o arduinonun setup kısmı çalışmayacağından birbirlerini göremezler. yani bir arduinoyu kapatıp açtığında diğer arduinoyu da kapatıp açman gerekir.

          1. emrah

            hocam anladım fakat bu uygulamamda dediğiniz gibide yapsam çalışmıyor birdaha. ikisine aynı anda enerji veriyorum yine tepki yok. farklı bir program yükleyip çalıştırıp, tekrar bu programı çalıştırdığım zaman çalışıyor düzğün bir şekilde.
            ben bir kumanda yapmak istiyorum butona basıldığı zaman arduinoya enerji verip alıcıya sinyal göndermesi lazım bil ömrünü korumak için. bu bahsettiğiniz şekilde olduğu zaman kumanda olmaz ozaman.

            rf24.h kütüphanesinin kullanıldığı bir program var o program düzgün çalışıyor fakat ondada hem dijital hem analog data gönderemiyorum.

          2. Sezgin GÜL

            Sorun kütüphaneden de kaynaklı olabilir bilmiyorum. Ama amacın pilin erken bitmesini istememek ise buton kullanmak yerine arduinoyu uyutabilirsiniz. Uyku modunda yok denecek kadar az akımla çalışmaya devam eder.

      2. can

        peki zor değilse kodum üzerinde oynama yapıp tekrardan mail adresime yollarmısınız ?? bitirme projem bu benim ve zorlandım bayağı

  63. Berkan Y YILMAZ

    Merhaba böyle bir hata alıyorum nasıl düzeltirim hiç birşekilde iletişim sağlayamıyorum aynen kod yazıyorum …

    C:\Users\ASUSPC\Documents\Arduino\NRF24_ALICI_1\NRF24_ALICI_1.ino:13:27: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    alici.RXaddress(“kontrol”);

    ^

    1. Sezgin GÜL

      kütüphane eklediniz mi ?

      1. barıs yusuf

        hocam bende aynı hatayı alıyorum sebebınını bulamadım kutuphaneler de ekli.C:\Users\y\Desktop\verici\verici.ino: In function ‘void setup()’:

        C:\Users\y\Desktop\verici\verici.ino:18:27: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

        verici.TXaddress(“Hasbi”);

        ^
        bu hata neden kaynaklanabılır baska

  64. can

    Merhabalar, ultrasonik sensör, servo motor ve processing kullanarak bir radar yaptım. Şimdi de sensör ile ölçtüğüm değeri nrf modülü ile diğer arduinoya gönderip proccesing de radarımı aynı şekilde çalıltırmak istiyorum ama sorunlar yaşıyorum irtibada geçebilirsek sevinirim

    1. Sezgin GÜL

      Buraya yazın yardımcı olalım.

      1. Can

        #include
        #include
        #include “RF24.h”
        //vericiiii
        Servo leftRightServo;
        unsigned long pulseTime = 0; // sensör pulse süresi
        unsigned long distance = 0; // mesafe değişkeni
        const int numReadings = 10;
        int index = 0; //Anlık okunan değerlerin indeksi
        int total = 0; // Toplanan okunan değerlerin indeksi
        int average = 0; // Ortalama
        int leftRightPos = 0;
        int msg[1];
        //SCK -> 13//MISO -> 12//MOSI -> 11//CSN -> 7//CE -> 8
        RF24 radio(8,7);
        const uint64_t pipe = 0xE8E8F0F0E1LL;
        const int trig = 2;
        const int echo = 3;
        int potpin = 0;
        int val;
        int sure ;
        int mesafe ;

        void setup(void){
        leftRightServo.attach(9);
        pinMode(trig, OUTPUT);
        pinMode(echo, INPUT);
        radio.begin();
        radio.openWritingPipe(pipe);
        }
        void loop(void){
        for(leftRightPos = 0; leftRightPos < 180; leftRightPos++) {

        leftRightServo.write(leftRightPos);

        for (index = 0; index= numReadings) {
        index = 0;
        total = 0;
        }
        Serial.print(“X”); // processingin tanıması için önce X stringini gönder
        Serial.print(leftRightPos); // anlık servo açısı
        Serial.print(“V”); // ikinci değer için V yolla
        Serial.println(average); // okunan ortalama sensör değeri
        }
        //servo sağdan sola git
        for(leftRightPos = 180; leftRightPos > 0; leftRightPos–) {
        leftRightServo.write(leftRightPos);
        for (index = 0; index= numReadings) {
        index = 0;
        total = 0;
        }
        Serial.print(“X”);
        Serial.print(leftRightPos);
        Serial.print(“V”);
        Serial.println(average);
        }
        }
        ——————————

        #include
        #include “RF24.h”
        //alıcıııı
        //SCK -> 13//MISO -> 12//MOSI -> 11//CSN -> 7//CE -> 8
        RF24 radio(8,7);
        const uint64_t pipe = 0xE8E8F0F0E1LL;
        int msg[1];
        void setup()
        {
        radio.begin();
        radio.openReadingPipe(1,pipe);
        radio.startListening();
        }
        void loop()
        {

        if (radio.available()){
        bool done = false;
        while (!done){
        done = radio.read(msg, 1);
        Serial.print (msg[0]);

        }

        }
        }
        —————————
        import processing.serial.*; // import serial library
        Serial myPort; // declare a serial port
        float x, y; // variable to store x and y co-ordinates for vertices
        int radius = 350; // set the radius of objects
        int w = 300; // set an arbitary width value
        int degree = 0; // servo position in degrees
        int value = 0; // value from sensor
        int motion = 0; // value to store which way the servo is panning
        int[] newValue = new int[181]; // create an array to store each new sensor value for each servo position
        int[] oldValue = new int[181]; // create an array to store the previous values.
        PFont myFont; // setup fonts in Processing
        int radarDist = 0; // set value to configure Radar distance labels
        int firstRun = 0; // value to ignore triggering motion on the first 2 servo sweeps
        /* create background and serial buffer */
        void setup(){
        // setup the background size, colour and font.
        size(750, 450);
        background (0); // 0 = black
        myFont = createFont(“verdana”, 12);
        textFont(myFont);
        // setup the serial port and buffer
        myPort = new Serial(this, Serial.list()[0], 9600);
        println(Serial.list());
        myPort.bufferUntil(‘\n’);
        }

        /* draw the screen */
        void draw(){
        fill(0); // set the following shapes to be black
        noStroke(); // set the following shapes to have no outline
        ellipse(radius, radius, 750, 750); // draw a circle with a width/ height = 750 with its center position (x and y) set by the radius
        rectMode(CENTER); // set the following rectangle to be drawn around its center
        rect(350,402,800,100); // draw rectangle (x, y, width, height)
        if (degree >= 179) { // if at the far right then set motion = 1/ true we’re about to go right to left
        motion = 1; // this changes the animation to run right to left
        }
        if (degree <= 1) { // if servo at 0 degrees then we're about to go left to right
        motion = 0; // this sets the animation to run left to right
        }
        /* setup the radar sweep */
        /*
        We use trigonmetry to create points around a circle.
        So the radius plus the cosine of the servo position converted to radians
        Since radians 0 start at 90 degrees we add 180 to make it start from the left
        Adding +1 (i) each time through the loops to move 1 degree matching the one degree of servo movement
        cos is for the x left to right value and sin calculates the y value
        since its a circle we plot our lines and vertices around the start point for everything will always be the center.
        */
        strokeWeight(7); // set the thickness of the lines
        if (motion == 0) { // if going left to right
        for (int i = 0; i = 0; i–) { // draw 20 lines with fading colour
        stroke(0,200-(10*i), 0); // using standard RGB values, each between 0 and 255
        line(radius, radius, radius + cos(radians(degree+(180+i)))*w, radius + sin(radians(degree+(180+i)))*w);
        }
        }
        /* Setup the shapes made from the sensor values */
        noStroke(); // no outline
        /* first sweep */
        fill(0,50,0); // set the fill colour of the shape (Red, Green, Blue)
        beginShape(); // start drawing shape
        for (int i = 0; i < 180; i++) { // for each degree in the array
        x = radius + cos(radians((180+i)))*((oldValue[i])); // create x coordinate
        y = radius + sin(radians((180+i)))*((oldValue[i])); // create y coordinate
        vertex(x, y); // plot vertices
        }
        endShape(); // end shape
        /* second sweep */
        fill(0,110,0);
        beginShape();
        for (int i = 0; i < 180; i++) {
        x = radius + cos(radians((180+i)))*(newValue[i]);
        y = radius + sin(radians((180+i)))*(newValue[i]);
        vertex(x, y);
        }
        endShape();
        /* average */
        fill(0,170,0);
        beginShape();
        for (int i = 0; i = 360) {
        stroke(150,0,0);
        strokeWeight(1);
        noFill();
        for (int i = 0; i 35 || newValue[i] – oldValue[i] > 35) {
        x = radius + cos(radians((180+i)))*(newValue[i]);
        y = radius + sin(radians((180+i)))*(newValue[i]);
        ellipse(x, y, 10, 10);
        }
        }
        }
        /* set the radar distance rings and out put their values, 50, 100, 150 etc.. */
        for (int i = 0; i <=6; i++){
        noFill();
        strokeWeight(1);
        stroke(0, 255-(30*i), 0);
        ellipse(radius, radius, (100*i), (100*i));
        fill(0, 100, 0);
        noStroke();
        text(Integer.toString(radarDist+50), 380, (305-radarDist), 50, 50);
        radarDist+=50;
        }
        radarDist = 0;
        /* draw the grid lines on the radar every 30 degrees and write their values 180, 210, 240 etc.. */
        for (int i = 0; i = 300) {
        text(Integer.toString(180+(30*i)), (radius+10) + cos(radians(180+(30*i)))*(w+10), (radius+10) + sin(radians(180+(30*i)))*(w+10), 25,50);
        } else {
        text(Integer.toString(180+(30*i)), radius + cos(radians(180+(30*i)))*w, radius + sin(radians(180+(30*i)))*w, 60,40);
        }
        }
        /* Write information text and values. */
        noStroke();
        fill(0);
        rect(350,402,800,100);
        fill(0, 100, 0);
        text(“Açı: “+Integer.toString(degree), 100, 380, 100, 50); // use Integet.toString to convert numeric to string as text() only outputs strings
        text(“Mesafe: “+Integer.toString(value), 100, 400, 100, 50); // text(string, x, y, width, height)
        fill(0);
        rect(70,60,150,100);
        fill(0, 100, 0);
        text(“Göstergeler:”, 100, 50, 150, 50);
        fill(0,50,0);
        rect(30,53,10,10);
        text(“İlk Tarama”, 115, 70, 150, 50);
        fill(0,110,0);
        rect(30,73,10,10);
        text(“İkinci Tarama”, 115, 90, 150, 50);
        fill(0,170,0);
        rect(30,93,10,10);
        text(“Ortalama”, 115, 110, 150, 50);
        noFill();
        stroke(150,0,0);
        strokeWeight(1);
        ellipse(29, 113, 10, 10);
        fill(150,0,0);
        text(“Hareket”, 115, 130, 150, 50);
        }

        /* get values from serial port */
        void serialEvent (Serial myPort) {
        String xString = myPort.readStringUntil(‘\n’); // read the serial port until a new line
        if (xString != null) { // if theres data in between the new lines
        xString = trim(xString); // get rid of any whitespace just in case
        String getX = xString.substring(1, xString.indexOf(“V”)); // get the value of the servo position
        String getV = xString.substring(xString.indexOf(“V”)+1, xString.length()); // get the value of the sensor reading

        degree = Integer.parseInt(getX); // set the values to variables
        value = Integer.parseInt(getV);
        oldValue[degree] = newValue[degree]; // store the values in the arrays.
        newValue[degree] = value;
        /* sets a counter to allow for the first 2 sweeps of the servo */
        firstRun++;
        if (firstRun > 360) {
        firstRun = 360; // keep the value at 360
        }
        }
        }

        bazı eksikler var ama tamamlanmalı:)

      2. Can

        #include .
        #include
        #include “RF24.h”
        //vericiii
        int msg[1];
        //SCK -> 13//MISO -> 12//MOSI -> 11//CSN -> 7//CE -> 8
        RF24 radio(8,7);
        const uint64_t pipe = 0xE8E8F0F0E1LL;

        // Ultrasonik Sinyal pinleri
        const int trigPin = 3;
        const int echoPin = 2;
        long duration;
        int distance;
        Servo myServo;

        void setup() {
        pinMode(trigPin, OUTPUT);
        pinMode(echoPin, INPUT);
        Serial.begin(9600);
        myServo.attach(9); // Servo motor sinyal pini
        radio.begin();
        radio.openWritingPipe(pipe);
        }
        void loop() {
        // 15 derece ile 165 derece arasında dön
        for(int i=15;i15;i–) {
        myServo.write(i);
        delay(30);
        distance = calculateDistance();
        Serial.print(i);
        Serial.print(“,”);
        Serial.print(distance);
        Serial.print(“.”);
        }
        }

        int calculateDistance(){

        digitalWrite(trigPin, LOW);
        delayMicroseconds(2);

        digitalWrite(trigPin, HIGH);
        delayMicroseconds(10);
        digitalWrite(trigPin, LOW);
        duration = pulseIn(echoPin, HIGH);
        distance= duration*0.034/2;
        msg[0] = distance;
        radio.write(msg, 1);
        return distance;
        }
        ————
        #include
        #include “RF24.h”
        //alıcıı
        //SCK -> 13//MISO -> 12//MOSI -> 11//CSN -> 7//CE -> 8
        RF24 radio(8,7);
        const uint64_t pipe = 0xE8E8F0F0E1LL;
        int msg[1];
        void setup()
        {
        radio.begin();
        radio.openReadingPipe(1,pipe);
        radio.startListening();
        }
        void loop()
        {
        if (radio.available()){
        bool done = false;
        while (!done){
        done = radio.read(msg, 1);
        radio.write (msg, 0);

        }
        }
        }
        ——–
        import processing.serial.*; // kütüphane entegresi
        import java.awt.event.KeyEvent;
        import java.io.IOException;

        Serial myPort;

        String angle=””;
        String distance=””;
        String data=””;
        String noObject;
        float pixsDistance;
        int iAngle, iDistance;
        int index1=0;
        int index2=0;
        PFont orcFont;

        void setup() {

        size (1366, 700);
        smooth();
        myPort = new Serial(this,”COM5″, 9600); // Com portunu seçin
        myPort.bufferUntil(‘.’);

        }

        void draw() {

        fill(98,245,31);

        noStroke();
        fill(0,4);
        rect(0, 0, width, 1010);

        fill(98,245,31); // yeşil renk

        drawRadar();
        drawLine();
        drawObject();
        drawText();
        }

        void serialEvent (Serial myPort) {

        data = myPort.readStringUntil(‘.’);
        data = data.substring(0,data.length()-1);

        index1 = data.indexOf(“,”);
        angle= data.substring(0, index1);
        distance= data.substring(index1+1, data.length());

        iAngle = int(angle);
        iDistance = int(distance);
        }

        void drawRadar() {
        pushMatrix();
        translate(683,700);
        noFill();
        strokeWeight(2);
        stroke(98,245,31);
        // draws the arc lines
        arc(0,0,1300,1300,PI,TWO_PI);
        arc(0,0,1000,1000,PI,TWO_PI);
        arc(0,0,700,700,PI,TWO_PI);
        arc(0,0,400,400,PI,TWO_PI);
        // draws the angle lines
        line(-700,0,700,0);
        line(0,0,-700*cos(radians(30)),-700*sin(radians(30)));
        line(0,0,-700*cos(radians(60)),-700*sin(radians(60)));
        line(0,0,-700*cos(radians(90)),-700*sin(radians(90)));
        line(0,0,-700*cos(radians(120)),-700*sin(radians(120)));
        line(0,0,-700*cos(radians(150)),-700*sin(radians(150)));
        line(-700*cos(radians(30)),0,700,0);
        popMatrix();
        }

        void drawObject() {
        pushMatrix();
        translate(683,700);
        strokeWeight(9);
        stroke(255,10,10); // kırmızı renk
        pixsDistance = iDistance*22.5;
        // 40 cm ye kadar ölçer
        if(iDistance40) {
        noObject = “Out of Range”;
        }
        else {
        noObject = “In Range”;
        }
        fill(0,0,0);
        noStroke();
        rect(0, 1010, width, 1080);
        fill(98,245,31);
        textSize(25);
        text(“10cm”,800,690);
        text(“20cm”,950,690);
        text(“30cm”,1100,690);
        text(“40cm”,1250,690);
        textSize(40);
        text(“Object: ” + noObject, 240, 1050);
        text(“Angle: ” + iAngle +” °”, 1050, 1050);
        text(“Distance: “, 1380, 1050);
        if(iDistance<40) {
        text(" " + iDistance +" cm", 1400, 1050);
        }
        textSize(25);
        fill(98,245,60);
        translate(390+960*cos(radians(30)),780-960*sin(radians(30)));
        rotate(-radians(-60));
        text("30°",0,0);
        resetMatrix();
        translate(490+960*cos(radians(60)),920-960*sin(radians(60)));
        rotate(-radians(-30));
        text("60°",0,0);
        resetMatrix();
        translate(630+960*cos(radians(90)),990-960*sin(radians(90)));
        rotate(radians(0));
        text("90°",0,0);
        resetMatrix();
        translate(760+960*cos(radians(120)),1000-960*sin(radians(120)));
        rotate(radians(-38));
        text("120°",0,0);
        resetMatrix();
        translate(840+900*cos(radians(150)),920-960*sin(radians(150)));
        rotate(radians(-60));
        text("150°",0,0);
        popMatrix();
        }

        buna bakarsanız seviinirim diğeri hatalı

        1. sedat

          merhaba hocam, adını ve kanal numarasını bilmediğimiz bir alıcının (server’ın) bilgilerini nasıl öğreniriz. verici kodlarını ona göre düzenleyip haberleştireceğim.
          tüm kanalları tarama, hepsine bilgi gönderme gibi durum mümkünmü. aslına kanal yetmiyor isim de gerekli sanırım ama bir fikir alayım dedim..
          tşk

  65. emrah

    şöyle bir sıkıntım var hocam,
    vericiyi nano ile yaptım alıcıyı mega ile yaptım. sistemin ikiside bilgisayar usb den çalışıyor.

    problem şu ;
    #include “RF24.h” kütüphanesinin kullanıldığı bir program var, sisteme bu programları yüklediğim zaman sorunsuz şekilde nrf çalışıyor. ardından sizin bu programı yüklüyorum sistem yine çalışıyor fakat enerjiyi kesip tekrar açtıgım zaman alıcı birdaha çalışmıyor. taki başka bir program yükleyip sonra üzerine tekrar sizin programı yükleyince çalışmaya devam ediyor. böyle bir saçmalığı çözemedim

    1. Sezgin GÜL

      Sorun şundan kaynaklanıyor. alıcının enerji kesip çalıştırdığında vericiyi de yeniden çalıştırman lazım. Çünkü programın setup kısmı çalışması lazım ki birbirlerini eşleyebilsinler. Bu şekilde deneyin sorun olursa yazın.

  66. Sezgin GÜL

    Hayır rf24.h kütüphanesini ekle oradaki örnek kodlara bakıp öyle dene

  67. Güven

    Sezgin hocam merhaba,ben vericideki pot değerini yani anolog değeri lcd ekranda görmek istiyorum,yani alıcıya servo bağlamıcam,kod bilgim fazla yok alıcı kodda lcd ekran için hangi satırları eklemem gerekiyor acaba?

    1. Sezgin GÜL

      lcd kütüphanesini ekleyerek bu şekilde veriyi yazdır.
      LCD.print(deger);
      Lcd ile örnek uygulamaya buradan bakıp yapabilirsin >> http://www.robimek.com/bluetooth-uzerinden-lcd-ekrana-veri-aktarma/

      1. Güven

        Hocam bu projeyi yapmadan bu msjı yazmıştım,fakat bu servo kontrol projesini bir türlü çalıştıramadım,defalarca kontrol ettim,kondansatör bağladım nafile..Verici serial monitörde değerleri görebiliyorum fakat alıcıdaki servoda hicbir hareket yok,elimde yedek olduğu için nrf modulu-unoyu ve servoyu değiştirdim yine olmadı,arduino 1.6.7 versiyonu kullanıyorum,başkada ne yapabilirim bilmiyorum.

        1. Sezgin GÜL

          rf24.h kütüphanesiyle dene ama fonksiyonları değiştirmen gerekecek.

          1. Güven

            fonksiyon derken hocam anlamadım,kod bilgim çok yok,nrf kütüphanesini komple kaldırıp rf yi mi koyayım

  68. HAKAN

    hocam char = değer ; neden kullandık zaten val degeri vardı vericide

    1. Sezgin GÜL

      ikisinde de veri iletişim türü char olarak yapıldı. ikisine de char tanımlaması yapman lazım.

  69. Konuralp Demir

    Merhabalar. Öncelikle anlatımınız çok kaliteli ve açıklayıcı olmuş, bunu belirtmek istiyorum. nRF24L01 modülün kullanımına dair iki sorum olacak. öncelikle bahsettiğiniz 3.3 uf ve 10 uf arasında değerlerde kondasatörlerin vcc ve gnd pinleri için kullanılması gerektiğini duymuştum, ama sebebini bilmiyorum, bunu açıklayabilirseniz çok memnun olurum. Bir diğer sorum da aynı anda iki joystickin de verisini gönderemez miyim bu modüller aracılığyla? Çünkü bir joystickin tüm verisini (x ekseni, y ekseni, buton) rahatlıkla gönderebiliyorum fakat 2 joyistickin verisini aynı anda göndermeye çalıştığımda sadece birinin verisi gidiyor. joysticklerin hepsinin çalıştığından da eminim. Sorun ne olabilir sizce? Şimdiden ilginize teşekkürler…

    Saygılarımla…
    Konuralp DEMİR

    1. Sezgin GÜL

      stabil çalışma sağladığı için kondansatör ekleniyor. 4 veri göndermek için de 2 veri göndermede kodladığın gibi 4 veri ekleyebilirsin. Yani aynı şekilde göndermesi gerekir. Sorun yaşarsan nrf24l01p kütüphanesinde 0x02 array isimli örnek var oradan bakıp entegre et.

  70. emrah

     verici.txPL(pos);
    Verici.txPL(pos2);
    verici.txPl(pos3);
     boolean gondermedurumu = verici.send(FAST);

    Su sekilde birden fazla deger gonderebiliyorum sknti olmaz umarim ?

    Soyle bir sikintim var ; alici ve vericiyi nano ile pc ye usb ile bagli ve yukardaki ornegi yukledigimde ilk etapta yukledim calismadi sonra bi ara yukledim alicidan serilade datalari gormeye basladim 1 saat kadar enerjiyi hic kapatmadim bu arada devreler board uzerine kurulu. Bi ara vericinin usb kablosunu cekip geri taktim alici bida sinyal alamadi devreye hic dokunmamistim. Enerji gidup gelince calismadi alici devre. Neden boyle bi sikinti yapar ki. Pic te defalrca rf uzerine denemelr yaptim hic bole sikinti yasamadim

    1. Sezgin GÜL

      Vcc ye yanlışlıkla 5v vermişseniz rf modülü bozar ve iletişim sağlanamaz. Diğer yandan gerilim değişkenliğinden ya da kablolarda temassızlık olabilir tekrar kontrol ediniz. Yine iletişim sağlanamaz ise modülün vcc ile gnd pinleri arasına 3.3 uF ile 10 uF arasında bir kondansatör yerleştirin.

  71. emrah

    hocam programı şuan çalıştırmdım nasıl oldu anlamadım,

    bir sorum olacaktı verici.txPL komutuyla birden falzla değişken içerigini nasıl gönderebiliriz ve alabilriz?

    1. Sezgin GÜL

      transceiver modunda çalışma özelliği var yani hem alıcı hem de verici olarak aynı anda çalışıyor. yapman gereken aynı modüle hem alıcı hem de verici komutlarını girmek. Bir modül alıcı konumunda iken 6 farklı verici modülle haberleşebilir.Alıcı kısmın koduna vericilerin adreslerini girdiğinde haberleşme sağlanır.

  72. emrah

    merhaba, yukadaki kodları çalıştırımadım ama internet sitesindeki yazılım içerisinde radio kodları geçen programı yükleyince devrem çalışıyor aynı devreye sizin programı yükleyip pinleri buna göre bağlayınca çalıştırmadım ? sıkıntı ne olabilir

    1. Sezgin GÜL

      yazılımda çalışıyor devrenizde sorun olabilir

  73. Tarık

    merhabalar, anlatımınız için teşekkürler. Peki bu modülleri android yazılımlı telefonlarla haberleştirmek mümkün mü?

    1. Sezgin GÜL

      android telefondan sadece bluetooth kablosuz iletişim sağladığından rf modülle bağlantı kurulamaz.

  74. abdullah demirci

    öncelikle teşşekkürler. 2 yönlü haberleşme ile ilgili çalışmanız varmı? mesala iki taraftada bir buton bir led var. butona basınca diğerinin ledi yanıyor karşı taraf başınca kendisinin ledi yanıyor.

    1. Sezgin GÜL

      transceiver modunda yani alıcı verici olarak çalışabiliyor. Örnekler kısmında transceiver örneği var onu incele

  75. Code Art

    Anlatım ve yardımcı olma çabanızdan dolayı öncelikle teşekkürler. 1 tanesi alıcı olarak programlayıp diğer 30 tanesini verici olarak kullanabilirmiyim tek bir alıcı ile 30 tane vericiden bilgi toplamak istiyorum.

    1. Sezgin GÜL

      Bir alıcı maksimum 6 vericiden veri alabilir.

  76. Ahmet

    Merhaba, hiç deneme yaptınız mı maksimum mesafe nedir? Datasheet ve satıcılar 250 metre diyor ama mantıklı gelmedi bana? Birde nRF24L01 ve +PA olan modül tamamen aynı yazılım ve aynı mantıkla çalışıyor birinin PA diğerini normal kullanarak haberleştirme yapmamızda bir sorun var mıdır?

    1. Sezgin GÜL

      Mesafe denemesi yapmadım. İki modül de aynı mantıkla çalışır ve aynı değerle kullanabilirsiniz.

    2. Onur

      Sezgin bey nrf kütüphanelerinden hangisini denediysem olmuyor . Nrf çalışıp çalışmadığını anlayabileceğimiz bir yazılım yokmudur mesela sadece nano ve nrf bağlınolacak PC’den çalışıp calışmadını anlayacağız hepsi bu yardımcı olur musunuz

  77. sezer

    paylaşımızın ve desteğiniz için teşekkürler.

    1. Sezgin GÜL

      Rica ederiz. Sizler de maker hareketine katkıda bulunmak isterseniz bu projeleri kendi sosyal medya hesaplarınızdan paylaşarak, daha geniş kitlelere ulaşmasına katkı sağlayabilirsiniz.

  78. Kenan Habibov

    Merhabalar bu ise yeni baslayan birisi olarak bir hayalim var ama kumanda olarak kullanmak istiyorum projemi. Bir adet aksonometre ve bir adet de joyctick arduino ve nrf24l01 aracılığı ile gerçekleştirmek istiyorum. yardımcı ola bilirmisiniz ?

    1. Sezgin GÜL

      merhaba, projenizi anlatın yardımıcı olayım.

  79. Mirhan

    Hocam, servo motor yerine brushless motor kullanabilir miyiz bu devrede? Kullanabilmek için ne değişiklik yapmamız gerekiyor?

    1. Sezgin GÜL

      pinleri high low yapman lazım normal motor sürme işlemi yani. fırçasız motor kullanman için esc de kullanman lazım

  80. Ramazan

    Abi, aynı kodu yükledim, kütüphaneyi indirdim verdiğin talimatları uyguladım ama karşıma bu sorun “Belirtilen dizin/zip dosyası geçerli bir kütüphane içermiyor.” çıktı. Farklı kütüphaneler indirmeme rağmen düzelmedi. Sorun nedir acaba yardımcı olabilir misin?

    1. Sezgin GÜL

      zipten çıkarıp eklemen lazım

  81. oktay

    Merhabalar;
    Ben alıcı kısmı bir türlü çalıştıramadım. Vericide TX ledi yanıp sönüyor ve serial monitörde veri gidiyor gözüküyor. Ancak Alıcıda RX ledi hiç yanmıyor. Verici Uno, Alıcı ise Leonardo. Yerlerini değiştirerek de denedim yine sadece verici çalışıyor. Yardımcı olursanız sevinirim.

    1. Sezgin GÜL

      örnekteki servo kontrolünü yaptınız mı ?

  82. ahmet

    farklı bilgisayrlar üzerinden mi haberleştirecez acaba tek bilgisayar üzerine 2 tane arduino bağladım bi türlü haberleştiremedim

    1. Sezgin GÜL

      aynı pc üzerinden haberleştirmek için farklı serial veri programları kullanmanız gerekir. Örneğin teraterm ile arduinonun serial monitörleri arasından haberleştirme yapabilirsiniz.

  83. İslam Alagöz

    HC-SR04 mesafe sensöründen okuduğum bilgisi nrf24L01 modülü ile diğer arduinoya nasıl aktarırım… İlgilenirsenin sevinirim teşekkür ederim.

    1. Sezgin GÜL

      Sensöre ölçüm yaptırarak serial.print yapın.Örnekteki pos serailden print edildi. Sizde bu şekilde yapın

  84. furkan

    Hocam sorun herhalde başka bir yerde ilgilendiğiniz için ve yardımlarınız için teşekkür ederim

    1. Sezgin GÜL

      Rica ederim iyi çalışmalar

  85. furkan

    7.2 voltluk lipoyla adaptör girişinden yapıyorum

    1. Sezgin GÜL

      Vin pinine tak öyle dene dene liponun akımı fazla olursa adaptör girişinden sıkıntı olur

  86. furkan

    Hocam benim projede arduino pc ye bağlıyken sorunsuz çalışıyor ama alıcı kısmı bilgisayardan çıkartıp güç kaynağıyla beslediğim zaman haberleşme sağlanmıyor, önce pc den çalıştırıyorum sonra güç kaynağını açıyorum pc bağlantısını kesincede çalışmaya devam ediyor ama güç kaynağı ile açınca haberleşme sağlanamıyor.

    1. Sezgin GÜL

      Güç kaynağı yetersizdir veya vin pininde sıkıntı vardır. Beslemeyi nereden yapıyorsun ?

  87. RAMESH RAJ

    WE NEED YOUR EXPERTISE FOR A PARKING OF 1000 CARS IN DIFFERENT SLOTS
    AND TO IDENTIFY WHERE IT IS PARKED IN WHICH SLOT USING ARDUINO WITH WIRELESS AND BT AND BT IN EACH VEHICLE .THE ARDUINO CONNECTED TO WIRE IN FRONT OF EACH SLOT

  88. Girayhan

    Bir adet uno bir adet mega ile çalışıyorum. Unodan gönderip megadan almak istiyorum veriyi . Unoda mesaj gönderildi demesine rağmen megadan değer okuyamyorum. Kodların aynısını yazmama rağmen olmuyor iyi akşamlar

    1. Sezgin GÜL

      Kod çalışıyor yazılımsal sorun yok. Megadan unoya göndermeyi deneyin.

    2. Kayhan

      Mega da bağlantı pinleri farklı
      CE = 9
      CSN= 53
      SCK = 52
      MOSI= 51
      MISO = 50
      Programda da gerekli değişiklikleri yaparsan sorun çözülür.

  89. mumin

    2 tane arduıno uno nrf24l01 modulu birbiriyle haberleştirdim seri port ekranına yazdım bunu lcd ekranına nasıl gözükcek

    1. Sezgin GÜL

      Lcd kütüphanesi ekleyerek lcd.print(” mesajını”); şeklinde lcd ye yazdırabilirsiniz. Lcd örnek uygulaması buradan bakabilirsiniz. http://www.robimek.com/arduino-ile-manyetik-dedektor-yapimi/