nRF24L01 ve Arduino ile Basit Kablosuz Haberleşme (nRF24L01 Modülüne Giriş #1)

Bu uygulamada nRF24L01 haberleşme modülünün, Arduino Nano ile en temel şekilde nasıl haberleşeceği anlatılmaktadır. Bu haberleşme gerçekleşirken hiçbir ek komponent kullanılmamış, sadece nRF24L01’ler (alıcı ve verici) kullanılmıştır. nRF24L01’in Arduino Nano ile bağlantısı için “ nRF – Nano Geliştirme Kiti ” kullanılmıştır.

nRF – Nano Geliştirme Kiti ile Devre Bağlantısını Oluşturma

nRF24L01’ i Arduino Nano ile kullanmak için tek yapmanız gereken modülleri, yerlerine (alıcı ve verici ) takmaktır.

nRF – Nano Geliştirme Kiti Kullanmadan Devre Bağlantısı

nRF24L01 haberleşme modülü, mikrokontrolcüye bağlanırken 9 adet jumper gerekir. Jumperlarla, breadboarda kurulan devre bir kablo karmaşası yaratır. Jumperlar, board’da ki yerlerinden çıkıp, haberleşme başladığında, nRF24L01 gibi hassas çalışan bir modülün haberleşmesinde kesintilere yol açabilirler. Breadboarda kurulan bir devre uzun soluklu projelerde çalışırken kullanıcıya, kullanım kolaylığı vermez.nRF – Nano Geliştirme Kiti olmadığı durumlarda bağlantınızı aşağıda gösterildiği gibi yapabilirsiniz.

Dev-Kit kullanılmadan yapılmış nRF24L01 ve Arduino bağlantısı

Alıcı ve Verici Kodları

Verici

Öncelikle #include komutu ile SPI, nRF24L01 ve RF24 kütüphanelerimizi yüklüyoruz. RF24 için kablosuz() adında bir nesne tanımlıyoruz ve parantez içine nRF24L01’in bağlı olduğu  CE ve CSN pinlerinin değerlerini  (D9 ve D10 için 9 ve 10) yazıyoruz. Ardından adres adında bir byte dizisi oluşturup tırnak içerisinde belirtilen adresin alıcı ve verici için aynı olmasına dikkat ediyoruz. begin() komutu ile nrf modülümüzü başlatıyoruz. Buraya kadar anlatılan kodlar alıcı ve verici için aynıdır.

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
 
RF24 kablosuz(9, 10);
const byte adres[] = "arkis";
 
void setup() {
  kablosuz.begin();
  kablosuz.openWritingPipe(adres);
}
 
char giden[] = "Merhaba Dünya";
 
void loop() {
  kablosuz.write(giden, sizeof(giden));  
}

Verici tarafa openWritingPipe() ile bir hat oluşturuyoruz. Ardından göndereceğimiz veriyi “Merhaba Dünya” parametresi olarak tanımlıyoruz. Loop döngüsünün içine girip write() fonksiyonunu kullanarak ilk parametreye neyin gideceğini, ikinci parametreye sizeof() fonksiyonunun geri dönüş değerini yazıyoruz.

Alıcı

Begin satırına kadar olan kodlar verici kısımla aynı olduğundan tekrardan değinmiyoruz. openReadinPipe() ile bir okuma hattı oluşturuyoruz. startListening() ile dinlemeyi başlatıyoruz. Seri monitörü açmak için baud rate hızımızı yazıyoruz. 32 byte’lık gelen adında bir dizi oluşturuyoruz. Available() komutu verinin alıcıya ulaşıp ulaşmadığını kontrol ediyor. Veri geliyorsa kablosuz.read() ile veriyi okuyup, sizeof() komutu ile veri uzunluğunu algılayıp veriyi “gelen” dizisine aktarıyoruz. Serial.println() komutu ile gelen veriyi ekrana yazdırıyoruz.

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
 
RF24 kablosuz(9, 10);
const byte adres[] = "arkis";
 
void setup() {
  kablosuz.begin();
  kablosuz.openReadingPipe(0, adres);
  kablosuz.startListening();
  Serial.begin(9600);
}
 
char gelen[32];
 
void loop() {
 
  if (kablosuz.available()) {
    kablosuz.read(gelen, sizeof(gelen));
    Serial.println(gelen);
  }
 
}

Burada bahsedilen kodlarla ilgili daha detaylı bilgiye  “nRF24L01 ile Basit Kablosuz Haberleşme” makalemizden ulaşabilirsiniz.