Merhaba, bugünkü yazımızda Arduino ile kablosuz haberleşme alanında oldukça popüler olan NRF24L01 kullanımına göz atacağız. Bu projemizde iki Arduino’yu kablosuz haberleştirerek data aktarımı yapacağız. İlk önce malzemelerimize göz atalım.

Malzeme Listesi

NRF24L01 Nedir? Nasıl Çalışır?

Arduino gibi geliştirme kartları ile kablosuz haberleşme sağlamak için birçok modül var fakat  NRF24L01 en popüler olanı diyebiliriz. Hem ucuz hem de uzun menzilli olması onu kablosuz haberleşme projelerinin vazgeçilmez bir parçası yapıyor.

NRF24L01 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. Her iki modelin bağlantısı aynı olmakla beraber aralarındaki tek fark kablosuz iletişim menzilidir. Antensiz modelinde açık alanda 100 metreye kadar haberleşme sağlanabilirken antenli modelinde menzil 1000 metreye kadar varabiliyor.

SPI arabirimini desteklemekte olup, Bu sayede tam 6 tane Arduino’nun bir ana Arduino ile haberleşmesini saylayabilirsiniz. Ama bugün sadece 2 Arduino arasındaki haberleşmeye örnek olacak bir proje gerçekleştireceğiz.

Modülün pinlerine ve kullanımına değinmek gerekirse, modülde toplam 8 tane pin bulunmakta ve biz aktif olarak bu pinlerin 7 tanesini haberleşmek için kullanacağız.

GND Toprak 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 kesinlikle bağlamayın. Güç ile alakalı problemler yaşamamak için taşıyıcı kartı kullanımızı öneririm. Aksi halde iletişimde kopukluklar meydana gelebiliyor.

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 haberleşme için gerekli olan saat hareketlerini kabul eder.

MOSI  NRF24L01’in SPI girdisidir.

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

SCK, MISO ve MOSI pinleri SPI haberleşme ile alakalı olduğundan dolayı Arduino çeşidine göre farklılık gösterebilmektedir. Bu yüzden devreyi kurarken bu tabloya da göz atmayı ihmal etmeyin.

  MOSI MISO SCK
Arduino Uno 11 12 13
Arduino Nano 11 12 13
Arduino Mega 51 50 52

NRF24L01 modülünü tanıdığımıza göre devre şemasına geçebiliriz.

Arduino ile NRF24L01 Kullanımı – Devre Şeması

Hem alıcı hem de verici için kullanacağımız devre aynı. Modüllerin alıcı ya da verici olma durumunu kodlarda belirtiyoruz.

NRF24L01Arduino Uno/Nano
VCC5V (taşıyıcı kart)
GNDGND
CS10
CE9
MOSI11
MISO12
SCK13

Arduino ile NRF24L01 Kullanımı – Verici Kodları

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
//NRF24L01
RF24 radio(9, 8); // CE, CSN
//haberleşme kanalı (herhangi bir "string" olabilir)
const byte address[8] = "robolink";
void setup()
{
radio.begin();
//haberleşme adresini tanımla
radio.openWritingPipe(address);
//verici olarak ayarla
radio.stopListening();
}
void loop()
{
//sürekli mesaj gönder
const char text[] = "Robolink Akademi"; //mesaj en fazla 32 karakter olabilir
radio.write(&text, sizeof(text));
delay(1000); //1 saniye bekle
}

Arduino ile NRF24L01 Kullanımı – Alıcı Kodları

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
//NRF24L01
RF24 radio(9, 8); // CE, CSN
//verici ile alıcının kanal isimleri aynı olmalıdır
const byte address[8] = "robolink";
void setup()
{
while (!Serial);
Serial.begin(9600);
radio.begin();
//iletişim adresi tanımla
radio.openReadingPipe(0, address);
//modülü alıcı olarak ayarla
radio.startListening();
}
void loop()
{
//eğer data geldiyse okumaya başla
if (radio.available())
{
char text[32] = {0}; //en fazla 32 karakter bir veri alabileceğinden dolayı, 32 karakterlik 0 lar kümesi oluşturduk.
//Gelen tüm karakterleri buraya sırayla geçirmiş olacağız
radio.read(&text, sizeof(text));
Serial.println(text); //Seri ekrana alınan veriyi yazdır
}
}
view raw receiver.ino hosted with ❤ by GitHub

Kodları derleyebilmek için gerekli olan RF24 kütüphanesini Arduino IDE’ ye eklemeyi unutmayın.

Sonuç

Eğer devreyi doğru kurduysanız, kodları Arduino’lara yüklediğinizde Alıcı Arduino‘nun seri ekranında 1 saniye aralıklarla “Robolink Akademi” yazdığını fark etmelisiniz.

Bir projemizin sonuna geldik. Bu proje hakkında herhangi bir sorunuz olursa bu gönderiye aşağıdan yorum olarak yazabilir veya profilimdeki mail adresimden bana ulaşabilirsiniz.

İyi çalışmalar dilerim.

1 Yorum

  1. Bunun 2 yönlü haberleşme halini yapmamız mümkün mü acaba? Yani verici alıcıya sinyal gönderdiğinde karşılık olarak bir sinyal gönderse, aldığına dair?

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz