Arduino Uno ile NRF24L01 Kullanarak Kablosuz Haberleşme

Arduino Uno ile NRF24L01 modülü, kısa mesafede kablosuz veri iletimi ve alımı için popüler bir yöntemdir. NRF24L01, düşük güç tüketimi ve yüksek hızda veri aktarımıyla öne çıkar. Bu makalede, NRF24L01’in Arduino Uno ile nasıl kullanılacağını öğrenecek ve iki örnek proje üzerinden kablosuz veri iletimini deneyimleyeceksiniz.

1. NRF24L01 Modülü Nedir?

NRF24L01, 2.4 GHz frekans bandında çalışan bir kablosuz haberleşme modülüdür. 1 Mbps, 2 Mbps hızında veri aktarımı yapabilir ve SPI protokolü ile haberleşir. Bu modül ile sensör verileri gibi küçük veri paketlerini kablosuz olarak bir Arduino’dan diğerine aktarabilirsiniz.

2. NRF24L01 Pin Bağlantıları

  • NRF24L01 Pinleri:
    • VCC: 3.3V
    • GND: GND
    • CE: Digital Pin
    • CSN: Digital Pin
    • SCK: Pin 13
    • MOSI: Pin 11
    • MISO: Pin 12
    • IRQ: (Opsiyonel)

3. Gerekli Kütüphaneler

Arduino ile NRF24L01 kullanabilmek için RF24 kütüphanesine ihtiyacınız var. Bu kütüphaneyi Arduino IDE’den kurabilirsiniz:

  1. Arduino IDE‘yi açın.
  2. “Sketch” > “Include Library” > “Manage Libraries” menüsüne gidin.
  3. “RF24” kütüphanesini arayın ve yükleyin.

4. Proje 1: Basit Mesaj Gönderme ve Alma

Amaç:

Bu projede, bir Arduino’ya bağlı NRF24L01 modülü bir mesaj gönderecek, diğeri ise bu mesajı alacak.

Donanım:
  • 2 x Arduino Uno
  • 2 x NRF24L01
  • Jumper kabloları
Bağlantılar:

Her iki Arduino için aynı bağlantılar yapılır:

  • NRF24L01 VCC – Arduino 3.3V
  • NRF24L01 GND – Arduino GND
  • NRF24L01 CE – Arduino Pin 9
  • NRF24L01 CSN – Arduino Pin 10
  • NRF24L01 SCK – Arduino Pin 13
  • NRF24L01 MOSI – Arduino Pin 11
  • NRF24L01 MISO – Arduino Pin 12

Verici (Gönderen) Kod:

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

RF24 radio(9, 10); // CE, CSN pinleri
const byte adres[6] = “00001”; // Kanal adresi

void setup() {
Serial.begin(9600);
radio.begin();
radio.openWritingPipe(adres); // Verici adresi
radio.setPALevel(RF24_PA_MIN);
}

void loop() {
const char text[] = “Merhaba!”;
radio.write(&text, sizeof(text)); // Mesajı gönder
Serial.println(“Mesaj gönderildi: Merhaba!”);
delay(1000); // 1 saniye bekle
}

Alıcı (Mesaj Alan) Kod:

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

RF24 radio(9, 10); // CE, CSN pinleri
const byte adres[6] = “00001”; // Kanal adresi

void setup() {
Serial.begin(9600);
radio.begin();
radio.openReadingPipe(0, adres); // Alıcı adresi
radio.setPALevel(RF24_PA_MIN);
radio.startListening(); // Dinlemeye başla
}

void loop() {
if (radio.available()) {
char text[32] = “”;
radio.read(&text, sizeof(text)); // Mesajı al
Serial.println(“Mesaj alındı: “);
Serial.println(text); // Mesajı seri monitöre yazdır
}
}

Açıklama:
  • Verici tarafı her saniye “Merhaba!” mesajını NRF24L01 modülü aracılığıyla gönderir.
  • Alıcı tarafı gelen mesajı algılar ve mesajın içeriğini seri monitöre yazdırır.

5. Proje 2: Sensör Verisinin Kablosuz İletimi

Amaç:

Bir Arduino’ya bağlı bir sıcaklık sensöründen (örneğin, LM35) veri alınarak, bu veri NRF24L01 aracılığıyla kablosuz olarak başka bir Arduino’ya gönderilecek ve orada gösterilecektir.

Donanım:
  • 2 x Arduino Uno
  • 2 x NRF24L01
  • 1 x LM35 Sıcaklık Sensörü
  • Jumper kabloları
Bağlantılar:

Aynı şekilde NRF24L01 modülünü bağlayın, ek olarak verici tarafına LM35 sensörünü bağlayın:

  • LM35 +VS – Arduino 5V
  • LM35 GND – Arduino GND
  • LM35 VOUT – Arduino A0

Verici (Sensör Verisi Gönderen) Kod:

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

RF24 radio(9, 10); // CE, CSN pinleri
const byte adres[6] = “00001”;

void setup() {
Serial.begin(9600);
radio.begin();
radio.openWritingPipe(adres);
radio.setPALevel(RF24_PA_MIN);
}

void loop() {
int sensorValue = analogRead(A0); // LM35 sıcaklık sensörü değeri
float voltage = (sensorValue / 1024.0) * 5.0;
float temperatureC = (voltage – 0.5) * 100; // Santigrat hesaplama

radio.write(&temperatureC, sizeof(temperatureC)); // Veriyi gönder
Serial.print(“Gönderilen sıcaklık: “);
Serial.println(temperatureC); // Seri monitöre yazdır

delay(1000);
}

Alıcı (Veri Alan) Kod:

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

RF24 radio(9, 10); // CE, CSN pinleri
const byte adres[6] = “00001”;

void setup() {
Serial.begin(9600);
radio.begin();
radio.openReadingPipe(0, adres);
radio.setPALevel(RF24_PA_MIN);
radio.startListening(); // Dinlemeye başla
}

void loop() {
if (radio.available()) {
float temperatureC = 0;
radio.read(&temperatureC, sizeof(temperatureC)); // Sıcaklık verisini al

Serial.print(“Alınan sıcaklık: “);
Serial.println(temperatureC); // Seri monitöre yazdır
}
}

Açıklama:

Bu projede, bir Arduino’ya bağlı LM35 sıcaklık sensöründen alınan sıcaklık verisi kablosuz olarak başka bir Arduino’ya gönderilir ve alınan veri seri monitörde görüntülenir.

6. Sonuç:

Arduino Uno ve NRF24L01 ile kablosuz haberleşme oldukça basit ve etkilidir. Bu iki örnek proje sayesinde temel mesajlaşma ve sensör verisinin kablosuz iletimini öğrenmiş oldunuz. NRF24L01 modülü ile daha gelişmiş projeler yapabilir ve uzun mesafeli iletişim sağlamak için antenli modellerini de kullanabilirsiniz.

Bu temel projeleri geliştirerek, kablosuz veri iletimi üzerine daha fazla çalışabilirsiniz.