NRF24L01 İle Sohbet ve Dosya Gönderme

İnternette nRF24L01 ile yapılmış bir çok proje bulunmaktadır. Projelerin çoğu uzaktan kontrol sistemleridir. Peki nRF24l01 ile başka neler yapılabilir hiç düşündünüz mü? Ben düşünürken aklıma NRF24L01 ile bilgisayarlar arası dosya göndereme fikri geldi. Bu yazımızda “NRF24L01 İle Sohbet ve Dosya Gönderme” projesini yapacağız. Peki dosya dediğimde aklına ne geliyor? Benim aklıma müzik dosyaları, resim, pdf dosyaları veya program dosyaları gibi bir çok şey geliyor. Bu yazımızda bu projeyi yapacağız ve projenin yararlı olup olmadığını göreceğiz.

Projemize başlamadan önce NRF24L01 modülünün nasıl kullanıldığını aşağıdaki linkten yazımızı okumanızı tavsiye ederim.

Eğer nrf24l01 modülünün kullanımını biliyorsanız ikinci adım olarak aşağıdaki linkten nrf24l01 ile çift yönlü haberleşmeyi anlattığımız yazımızı okuyabilir ve videomuzu izleyebilirsiniz.

Projede Gerekli Olan Malzemeler:

Arduino İle nRF24l01 Modülü Bağlantı Şeması

Başlık olarak nrf24l01 modülü dedim ama adaptör ile nrf24l01 modülü bağlantı şeması aynı aslında tek fark adaptör kullanmazsanız Vcc’yi arduino da 3.3V pinine bağlamanız lazım.

Arduino İle NRF24L01 Modülü Bağlantı Şeması
Arduino İle NRF24L01 Modülü Bağlantı Şeması

Arduino İle NRF24L01 Adaptörü Bağlantı Pinleri

nRF24L01  AdaptörüArduino Uno
VCC5 V
GNDGND
CS7
CE8
MOSI11
MISO12
SCK13
Arduino İle NRF24L01 Adaptörü Bağlantı Pinleri

Eğer bağlantıları yaptıysak koda geçebiliriz.

Arduino NRF24L01 Modülü Kodu

Kodları arduinomuza yüklemeden önce nrf24l01 için gerekli olan kütüphanemizi Arduino IDE’ ye eklememiz lazım.

Verici Modülün Kodu

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(8, 7); // CE, CSN
const byte addresses [][6] = {"00001", "00002"};  //alıcı ve verici adresleri

char b[32];
void setup() {
  Serial.begin(115200);
  radio.begin();                           //Telsiz iletişiminin başlatılması
  radio.openWritingPipe(addresses[1]);     //Verileri göndereceğimiz adresin ayarlanması
  radio.openReadingPipe(1, addresses[0]);  //Verileri alacağımız adresin ayarlanması
  radio.setPALevel(RF24_PA_MIN); //Verici ve alıcı arasındaki mesafeye göre minimum veya maksimum olarak ayarlayabilirsiniz.
}

void loop() 
{  
  delay(5);
  if(Serial.available()){
    //Eğer seri porttan veri gelmişse
    String a=Serial.readString();

    //Gelen Stringi oku ve a değişkeninde tut
    a.trim();

    // a stringinin başında ve sonunda bulunan boşlukları ve "\n"(enter) varsa sil
    a.toCharArray(b,32);
    // a stringini b char dizisine çevir. 
    radio.stopListening();         //Bu, modülü verici olarak ayarlar
    radio.write(&b, 32);  //veri gönderilir.
    //Serial.println(a);

    //Verinin gönderildiği seri monitöre yazdırılır.
    delay(5);

    //5 mikrosaniye beklenir.
  }

  
  radio.startListening();                            //Bu, modülü alıcı olarak ayarlar
  if(radio.available()){

    //nrf24l01 modülüne veri geldiyse
    radio.read(&b, 32); //veriyi oku
    Serial.println(String(b));

    // veriyi stringe çevir ve seri monitöre yazdır
  }

}

Alıcı Kodu


#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(8, 7); // CE, CSN
const byte addresses [][6] = {"00001", "00002"};    //İki adresin ayarlanması. Biri iletmek ve biri almak için
char b[32];
void setup() {
  Serial.begin(115200); // seri haberleşmeyi 115200 baudrate de başlatıyoruz.
  radio.begin();                            //Telsiz iletişiminin başlatılması
  radio.openWritingPipe(addresses[0]);      //Verileri göndereceğimiz adresin ayarlanması
  radio.openReadingPipe(1, addresses[1]);   //Verileri alacağımız adresin ayarlanması
  radio.setPALevel(RF24_PA_MIN);            //Verici ve alıcı arasındaki mesafeye göre minimum veya maksimum olarak ayarlayabilirsiniz.
}

void loop() 
{
  delay(5); //5 mikrosaniye bekliyoruz.
  radio.startListening();                    //Bu, modülü alıcı olarak ayarlar
  if (radio.available())                     //Eğer gelen veri varsa
  {
    radio.read(&b, 32); // gelen veriyi oku ve b değişkenine kaydet
    Serial.println(String(b)); //b char dizisini stringe çevir.
    delay(5); //5 mikrosaniye bekle
  }
  if(Serial.available()){ //Seri haberleşmeden eğer veri geldiyse
    String a=Serial.readString(); // gelen veriyi oku ve a değişkenine kaydet 
    a.trim(); // a stringinin başında ve sonunda boşluk veya "\n"(enter) varsa sil
    radio.stopListening();                           //Bu, modülü verici olarak ayarlar
    a.toCharArray(b,32);  //a string değişkenini char dizisine çevirir
    radio.write(&b, 32);   //b değişkeni gönderilir
    //Serial.println(a); // verinin gönderildiği seri monitöre yazdırılır.
    
  }
}

AD Arduino File Sender v1.0 Programı

C# ile yazdığımız program arduinonun bilgisayar ile haberleşmesini sağlayan programdır. Programımız bilgisardan okuduğu verileri arduinoya göndermektedir. Pogramın dili İngilizce’dir. Basit bir ingilizcesi var kolaylıkla anlarsınız.

Projenin çalıştırılabilir halini indirmek için tıklayın.

Projenin github adresine gitmek için tıklayın.

AD Arduino File Sender v1.0
AD Arduino File Sender v1.0

Pogramımızı açtığımızda ilk bu ekranımız karşımıza gelmektedir. Bu ekranımız bizim sohbet ve dosya gönderme ekranımız. Send butonu ile metin kutumuza yazdığımız metin gönderilmektedir. “Select File And Send” butonu ile göndereceğimiz dosyayı seçip göndermemizi sağlamaktadır. Fakat bu butonları kullanmadan önce ayarlarımızı yapmamız lazım. Aşağıdaki resim bizim ayarlarımızın yapıldığı ekrandır.

AD Arduino File Sender v1.0 Settings
AD Arduino File Sender v1.0 Settings

Burada ilk olarak arduinonun bağlı olduğu portu seçmemiz lazım. “…” butonumuza tıklayarak bilgisayarımıza bağlı olan arduino kartlarının bağlı olduğu portlar listelenmektedir. İkinci olarak arduino ile programımız arasındaki bağlantı hızını seçiyoruz. Biz 115200 olarak ayarlayacağız. Üçüncü olarak kaç mikro saniyede veri gönderileceğini ayarlıyoruz. İdeali 1000’dir. Değiştirmenizi tavsiye etmem. Connect butonu programın arduinoya bağlanmasını sağlamaktadır. Disconnect butonu bağlantının kapanmasını sağlamaktadır.

Not: Program ile dosya gönderdiğimiz zaman gönderilen dosya program ile aynı dizine kaydedilmektedir.

Projenin videosunu aşağıdan izleyebilirsiniz.

NRF24L01 İle Sohbet ve Dosya Gönderme