Herkese selam.

Arduino ile uçan, kaçan projeler yapmak için biçilmiş kaftan olan, çoğu makerın çalıştırmakta zorluk çektiği ama, çalıştırınca çok güzel projelere imza atan NRF24L01 kablosuz haberleşme modülünün, nasıl kullanıldığından bahsedeceğim.

Arduino gibi geliştirme kartları ile kablosuz haberleşme sağlamak için birçok modül mevcuttur. Ancak NRF24L01 kablosuz haberleşme modülü, ucuz olmasının yanı sıra, küçük boyutları ve uzun haberleşme menzili ile öne çıkmaktadır. Açık alanda 800 metreye kadar haberleşme sağlayabilmektedir. Bu durumlar göz önünde bulundurulduğunda, NRF24L01 projeler için tam olarak biçilmiş kaftandır.

İnternette birçok kaynak bulunmasına rağmen hala çoğu kişi bu modülü kullanmada problemler yaşamaktadır. Yazımda size deneyimlerimden yola çıkarak, projelerinizde problem yaşamadan nasıl bu modülü kullanacağınızdan bahsedeceğim.

Hadi öyleyse ne duruyorsunuz, uçan, kaçan projeler yapmak için bir adım atalım. 😊

NRF24L01 Modülü Nedir?

Nordic Semiconductor şirketinin ürettiği NRF24L01 çipini kullanan alıcı verici modüldür. 2.4GHz frekansında kablosuz haberleşme yapmanıza imkân sağlayan düşük güç tüketimine sahip bir modüldür.

Antenli ve antensiz olmak üzere iki tane modeli vardır. Bağlantı ve datasheet olarak hiçbir farkları yoktur. Antenli olan modeli antensiz modeline göre daha uzak mesafelerden haberleşebiliyor.

SPI arabirimini desteklemekte olup, Bu sayede tam 6 tane Arduino’nun bir ana Arduino ile haberleşmesini saylayabilirsiniz.

SPI pinleri Arduino türüne göre değişiklik gösterir. Arduino türlerine göre pinler aşağıdaki tabloda gösterilmiştir.

Arduino türüMOSIMISOSCK
Arduino UNO11 veya ICSP412 veya ICSP113 veya ICSP3
Arduino Mega51 veya ICSP450 veya ICSP152 veya ICSP3
Arduino LeonardoICSP-4ICSP-1ICSP-3
Arduino DueICSP-4ICSP-1ICSP-3
SPI pinleri

NRF24L01 Modülü ve NRF24L01 PA / LNA Antenli Versiyonu

NRF24L01 ailesinin en popüler olan versiyonu, aşağıda bulunan ilk çıkan antensiz versiyonudur.

Nrf24l01 ilk versiyon
Nrf24l01 ilk versiyon

İlk versiyondaki modülün üzerinde dahili anten bulunuyor. Bu durum modülün daha kompakt ve küçük olmasını sağlıyor. Anteninin küçük olması daha az enerji tüketmesine neden oluyor ancak anteninin küçük olması iletişim mesafesini azaltıyor. Bu versiyonda, kapalı alanda ortalama 100 metreye kadar iletişim sağlayabilirsiniz. Bu mesafe açık alanda tabii ki daha çok artacaktır.

Nrf24l01 PA / LNA Antenli Versiyonu
Nrf24l01 PA / LNA Antenli Versiyonu

İkinci versiyonda bir SMA konektörü ve harici anteni bulunur, ama donanım olarak güncellenen fark bu değildir. Asıl fark, modülün üzerinde bulunan güç devrelerine yapılan iyileştirmelerdir. Bu sayede ilk modülün iletişim mesafesinden kat ve kat daha fazla mesafede iletişim sağlayabiliyor. Açık alanda bu mesafe 1000 metreye kadar çıkabiliyor.

NRF24L01 Modülü Özellikleri ve Pin Çıkışları

Teknik Özellikleri

Frekans Aralığı2,4 GHz ISM
Max. Veri Hızı2 Mb/s
Modülasyon FormatıGFSK
Maks. Çıkış Gücü0 dBm
Çalışma Gerilimi1.9 V ila 3.6 V
Maks. Çalışma Akımı13.5 mA
Min. Akım (Bekleme Modu)26 mA
Logic Pini5V (Toleranslı)
Veri İletim Mesafesi800m+ (Açık Alanda)
Nrf24l01 ilk versiyon
Nrf24l01 ilk versiyon
Nrf24l01 PA/LNA antenli versiyonu
Nrf24l01 PA/LNA antenli versiyonu

GND Topraklama pinidir.

VCC Güç pinidir. 1,9 ila 3,9 arasında bir voltaj verebilirsiniz. Arduino ile kullanımda 3.3V çıkışa bağlayabilirsiniz. 5V pinine bağlarsanız modülünüz büyük ihtimalle bozulacaktır. Ancak adaptörlü bir devre kuracaksanız, adaptör 5v desteklediği için 5v güç verebilirsiniz.

CE aktif bir HIGH pinidir. Seçildiğinde, NRF24L01 hangi moduna bağlı olarak veri gönderir ya da alır.

CSN  aktif bir LOW pinidir ve normalde HIGH tutulur. Bu pin LOW olduğunda NRF24L01, SPI portunu veri alımı moduna geçirir.

SCK  SPI Bus Master tarafından sağlanan saat hareketlerini kabul eder.

MOSI  NRF24L01’in SPI girdisidir.

MISO  NRF24L01’den SPI çıkışıdır.

Arduino ile Kullanılması ve İlk Çalıştırmadaki Hatayı Giderme

Artık NRF24L01 alıcı-verici modülünün nasıl çalıştığını tam olarak anladığımıza göre, Arduino’muza bağlamaya başlayabiliriz!

Arduino ile NRF24L01 modülünün kullanımını göstermek için örnek bir proje yapacağız. Bu projede bir Arduino’dan diğer Arduino’ya serial port sayesinde mesaj göndereceğiz.

NRF24L01 modülleri 3.3v ile çalışırlar, Arduino’ya modülü direkt bağlayarak kullanıldığı zaman güç problemleri ya da iletişimsizlik problemleri ortaya çıkabilmektedir.

Bu problemleri gidermek için birkaç yöntem mevcuttur. Bunlardan birisi de kondansatör yöntemidir. İnternette çoğu kaynak NRF24L01 modülüne kondansatör lehimleyerek bu sorunun çözülebileceğini öneriyorlar, fakat ben bu yöntemi önermiyorum.

Benim önerdiğim yöntem, güç problemi için tasarlanmış olan NRF24L01 adaptörü kullanmak. Çünkü diğer yöntemler tam stabil olarak çalışan yöntemler değildir. Adaptör kullanarak bu sorunun önüne kesin olarak geçebilirsiniz.

Nrf24l01 adaptörü
NRF24L01 adaptörü

NRF24L01 adaptörü üzerinde voltaj regülatörü olduğundan 5V girişini kullanabilirsiniz. Arduino kartlarında 3.3V çıkış gücü düşük olduğu için 5V ile beslediğinizde güç problemi yaşamazsınız. Ayrıca modülün ihtiyaç duyduğu bypass kapasitörler de kart üzerinde mevcuttur.
Bu şekilde, adaptör sayesinde stabil ve kolay bir kullanıma sahip olabilirsiniz.

Arduino ile kullanımını öğrenmek için örnek projeyi yapmaya geçebiliriz.

KULLANILACAK MALZEMELER

Bağlantılar ve Devre Şeması

NRF24L01 modülü ile proje yaparken kesinlikle devre şemasında bulunan adaptörden kullanmanızı öneririm. Aksi halde iletişimsizlik sorunlarıyla karşılaşma ihtimaliniz yüksektir.

Alıcı

Arduino nrf24l01 alıcı bağlantı şeması
Arduino NRF24L01 alıcı bağlantı şeması

Verici

Arduino nrf24l01 verici bağlantı şeması
Arduino NRF24L01 verici bağlantı şeması

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 yüzden alıcı ve verici bağlantıları da aynı olacaktır.

Devre şemasındaki bağlantıları daha kolay yapabilmek için, aşağıda bulunan tablodan pin numaralarını takip ederek bağlantılarınızı yapabilirisiniz. Alıcı ve verici için de aynı bağlantılar olacaktır.

NRF24L01Arduino Uno
VCC5v (NRF24L01 adaptörü var ise)
GNDGND
CS10
CE9
MOSI11
MISO12
SCK13

Alıcı ve verici devrelerinin bağlantılarını yaptıktan sonra kod kısmına geçebiliriz.

Alıcı Kodu

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(9, 10); // CE, CSN
const byte address[10] = "robotistan100";
void setup() {
  Serial.begin(9600);
  radio.begin();
  radio.openReadingPipe(0, address);
  radio.setPALevel(RF24_PA_MIN);
  radio.startListening();
}
void loop() {
  if (radio.available()) {
    char text[32] = "";//print only 32 characters
    radio.read(&text, sizeof(text));
    Serial.println(text);
  }
}


Verici Kodu

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

RF24 radio(9, 10); // CE, CSN
const byte address[6] = "robotistan100";

void setup() {
  radio.begin();
  radio.openWritingPipe(address);
  radio.setPALevel(RF24_PA_MIN);
  radio.stopListening();
}
void loop() {
 const char text[] = "Hello World"; // maksimium 32 karakter olabilir

 radio.write(&text, sizeof(text));
  delay(1000);
}

Sonunda aldığımız mesajı seri monitöre yazdırabiliyoruz. Her şeyi doğru yaptıysanız ve bağlantılarda hata yoksa, serial monitörünüzde bu yazıyı görmelisiniz. :

nRF24L01 + Seri Monitörde Alıcı-Verici Çıkışı
nRF24L01 Seri Monitörde Alıcı Çıkışı

Kodlarda geçen bazı fonksiyonların açıklaması :

  • Modülün nRF24L01p.h adında kütüphanesini tanımlıyoruz.
  • Yazılımda öncelikle CE ve CSN pinlerini tanımlamamız gerekiyor.
  • RF24 radio(9, 10); // CE, CSN Buradaki komutla 10.pin CSN, 9.pin CE pini olarak tanımlıyoruz.
  • 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.
  • radio.openReadingPipe(0, address);  Bu fonksiyon ile modülü alıcı olarak ayarladık.
  • radio.openWritingPipe(address); Bu fonksiyon ile de modülü verici olarak ayarladık.
  • Modüllerin haberleşebilmeleri için iki modülün de adres ismi aynı olmalıdır.

NRF24L01 Wireless Modül Kütüphanesi Ekleme

NRF24L01 + alıcı-verici modülüyle bağlantı kurmak ve aynı şekilde doğru kütüphaneyi bulmak da zahmetli işlerdir. Popüler kütüphanelerden biri RF24 kütüphanesini sizinle paylaştım. Bu kütüphane, yeni başlayanlar için kullanımı basittir, ancak ileri düzey kullanıcılar için de çok şey sunabilmektedir. Bizde projelerimizde bu kütüphaneyi kullanacağız.

İndirdiğiniz kütüphaneyi Arduino ide’ye eklemek için “Taslak > Library ekle > Zıp Kitaplığı Ekle…“ sekmelerini takip ederek kütüphane yöneticisini açalım.

Arduino Ide Taslak Menüsü
Arduino Ide Taslak Menüsü

Açılan pencerede indirdiğiniz .zip dosyasını bulup seçin. Zip dosyasını seçmeniz yeterli olacaktır, otomatik olarak kütüphane Arduino ide’ye eklenecektir.

Arduino Ide Kütüphane Çağırma Sayfası
Arduino Ide Kütüphane Çağırma Sayfası

Kütüphane dosyanız bu şekilde yüklendiği zaman sol alt köşede “yüklendi” yazısı çıkması gerekir.

Arduino Ide Arayüzü
Arduino Ide Arayüzü

Kütüphanenin yüklendiğinden emin olmak için manuel kontrol yapabilirsiniz.

Manüel kontrol nasıl yapılır bilmiyorsanız, Arduino ide’ye nasıl kütüphane yüklenir konulu blog yazımızı buradan okumanızı tavsiye ederim.

NRF24L01 Fiyatı Ne Kadar?

nrf24l01 kablosuz haberleşme modülü
nrf24l01 kablosuz haberleşme modülü

Şu anda NRF24L01 kablosuz haberleşme modülü 7₺‘dir. Güncel fiyat için sitemizi ziyaret edebilir ve Robotistan’dan güvenli alışveriş yapabilirisiniz.

Nrf24l01 adaptörü
Nrf24l01 adaptörü

NRF24L01 Adaptörünün fiyatı ise 4,90 ₺‘dir. Aynı şekilde güncel fiyat için sitemizi ziyaret edebilirsiniz.

 NRF24L01 Proje Örnekleri

NRF24L01 kablosuz haberleşme modülü kullanılarak yapılan projeleri sizin için derledim ;

RC Araba Yapımı – RC Aracınızı Kendiniz Yapın!

 Bu yazıda Arduino kullanarak joystick shield ile 4WD RC araba kontrolü nasıl yapılır, detaylı bir şekilde anlatılmış. Fotoğrafa tıklayarak projenin yazısına gidebilirsiniz.

RC Aracınızı Kendiniz Yapın!
RC Aracınızı Kendiniz Yapın!

NRF24L01, LM35 ve Arduino ile Kablosuz Sıcaklık Uyarı Sistemi

Bu yazıda NRF24L01 modülünü kullanarak kablosuz uyarı sisteminin nasıl yapılacağını öğreneceksiniz. Bunun, başlangıç seviyesi için ideal bir proje olduğunu düşünüyorum. Fotoğrafa tıklayarak projenin yazısına gidebilirsiniz.

Arduino ile Kablosuz Sıcaklık Uyarı Sistemi
Arduino ile Kablosuz Sıcaklık Uyarı Sistemi

Arduino ve DHT11 ile Sıcaklık Ölçümü ve NRF24L01 ile LCD Ekranda Kablosuz Görüntüleme

Bu yazıda DHT11 ile sıcaklık ve nem değerlerini ölçüp yine NRF24L01 modülüyle kablosuz olarak LCD ekranda görüntüleyerek basit bir kablosuz hava durumu istasyonu projesi yapabilirsiniz.

Bu projeyi kendi evinizdeki veya arka bahçenizdeki hava koşullarını izlemek için kullanabilirsiniz.

Fotoğrafa tıklayarak projenin yazısına gidebilirsiniz.

Nrf24l01 ve dht11 ile sıcaklık ölçümü
Nrf24l01 ve dht11 ile sıcaklık ölçümü

Arduino Uygulaması: NRF24L01 ile uzaktan kontrol

Bu yazıda iki Arduino’yu NRF24L01 modülü ile haberleştireceğiz ve ilk Arduino’dan butona basıldığında, diğer Arduino’daki ledin yanmasını sağlayacağız. 

Fotoğrafa tıklayarak projenin yazısına gidebilirsiniz.

Nrf24l01 led kontrolü
Nrf24l01 led kontrolü

NRF24L01 İle Servo Motor Kontrolü

Bu projede NRF24L01 modülü kullanarak, potansiyometre sayesinde servo konyrolü nasıl yapılırla ilgili güzel bir yazı mevcut. Fotoğrafa tıklayarak projenin yazısına gidebilirsiniz.

Nrf24l01 İle Servo Motor Kontrolü
Nrf24l01 İle Servo Motor Kontrolü

Sizlere NRF24L01 ile ilgili tecrübelerimi aktarmaya çalıştım. Yazımızda geçen bilgiler işinize yaradıysa, görüş ve önerilerinizi yorum yaparak iletmenizden mutluluk duyarız 🙂

11 Yorumlar

  1. Merhaba ,
    Bu Modülü gps modülü ile beraber kullanıyorum. Fakat bir türlü gps ten elde ettiğim veriyi Diğer Arduinoya Ulaştıramıyorum. Bu sensörle bunu yapmak mümkün değil mi ? Eğer Mümkünse, bir devreye bağlı gps sensöründeki verileri diğer devrenin Serial port undan nasıl çıktı alabilirim. Lütfen Yardım eder misin,z ? acil olarak bu bilgiye ihtiyacım var

  2. Kodları denediğimde seri portta ?????????? şeklinde bir sinyal alıyorum. Sürekli gelen bir sinyal olmuyor, yaklaşık 20 satırda bir falan geliyor. Bu problem besleme kaynaklı olabilir mi? Modüllerim iletişim kurmaya mı çalışıyor? Yardımcı olursanız çok sevinirim. Kolay gelsin.

  3. Merhaba , her yerde ikiden NRF-24ler arası iletişim kurulabileceği yazılıyor fakat hiçbir yerde örnek yok. Lütfen bana yardımcı olabilir misiniz. Şimdiden teşekkürler .

  4. 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

  5. Aşağıdaki komutlarda yazılan bilgi verilen hafızan büyük.
    const byte address[6] = “robotistan100”;
    const byte address[10] = “robotistan100”;
    Bir de
    radio.write(&text, sizeof(text)); komutunda text değişkeni zaten pointer dolayısıyla tekrardan adresini almak kafamı karıştırdı. Kodun şöyle olması gerekmez miydi? radio.write(text, sizeof(text));

CEVAP VER

Please enter your comment!
Please enter your name here