nRF24L01 Kablosuz iletişim modülü kullanımı

bolubeyi

Profesyonel Üye
Katılım
27 Eyl 2008
Mesajlar
1,671
Puanları
421
Yaş
54
Konum
Trabzon
Bu dersimizde nRF24L01 Kablosuz iletişim modülü ve arduino kullanarak uzakta bulunan bir lambayı arada kablo bağlantısı olmadan yakıp söndürmeyi öğreneceğiz.

Devremizin verici kısmında 2 adet buton var. Birinci butona basılınca alıcı devredeki lamba ikinci butona basılana dek yanacak.

İkinci butona basıldığında ise alıcı kısımdaki lamba birinci butona basılana dek sönecektir.

Devremiz alıcı ve verici kısım olmak üzere 2 kısımdan oluşmaktadır. Her iki devrede de birer arduino ve nRF24L01 kablosuz iletişim modülü bulunmaktadır.


nRF24L01-3.jpg


Wireless NRF24L01 2.4GHz Transceiver Modül - 2.4GHz Alıcı Verici Modül

nRF24L01.jpg


nRF24L01-2.jpg


Nordic firmasınca geliştirilen NRF24L01 kablosuz modül, 2.4GHz frekansında kablosuz haberleşme yapmanıza imkan sağlayan düşük güç tüketimine sahip modüldür.

Çeşitli hobi, robotik ve endüstriyel projelerde sıklıkla kullanılabilecek 2MBps haberleşme hızına sahip olup, SPI arabirimini destekler.

Özellikleri:
2.4GHz bandında yayın yapabilir.
250KBps, 1MBps ve 2MBps gibi hızlarda haberleşme hızı seçilebilir.
Gelişmiş ShockBurst™ hızlandırma protokolünü desteklemektedir.
Ultra düşük güç tüketimi
Çalışma Voltajı: 1.9-3.6V
IO Portları Çalışma Voltajı:0-3.3V/5V
Verici Sinyal Gücü: +7 dB
Alıcı Hassasiyeti ≤ 90dB
Haberleşme Mesafesi: Açık Alanda 250m
Boyutları: 15x29mm

Devre şeması:
ezgif-5-91b7502af5.jpg


Verici devre kodları:
Kod:
#include  <SPI.h> // SPI Arayüzünü dahil ettik.
#include "nRF24L01.h" // RF24 kütüpanelerini dahil ettik.
#include "RF24.h" // RF24 kütüpanelerini dahil ettik.
int bilgi[1]; //Göndereceğimiz mesaj değişkenini oluşturduk.
RF24 radio(9,10); //RF24 kütüphanesi tarafından kullanılacak olan 2 pinin 9. ve 10. pinlerin olduğunu belirttik.
const uint64_t pipe = 0xE8E8F0F0E1LL; // Pipe (kanal) tanımlamasını yaptık.
int buton=3; // butonun bağlı olduğu pin
int buton2=4; // butonun bağlı olduğu pin

void setup() 
{
 radio.begin(); // Kablosuz iletişimi başlattık.
 radio.openWritingPipe(pipe); // Gönderim yapacağımız kanalın ID'sini tanımladık.
 pinMode(buton, INPUT);
 pinMode(buton2, INPUT);
} 

void loop()
{
 if (digitalRead(buton) == HIGH)
 { 
 bilgi[0] = 111; // bilgi değişkenine "1" yazılsın
 radio.write(bilgi, 1); //Sonra da bu bilgi gönderilsin.
 } 

  if (digitalRead(buton2) == HIGH)
 { 
 bilgi[0] = 000; // bilgi değişkenine "0" yazılsın
 radio.write(bilgi, 1); //Sonra da bu bilgi gönderilsin.
 } 
}

Alıcı devre kodları:
Kod:
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
int bilgi[1];
RF24 radio(9,10);
const uint64_t pipe = 0xE8E8F0F0E1LL;
int lamba = 3;

void setup()
{
 Serial.begin(9600);
 radio.begin();
 radio.openReadingPipe(1,pipe);
 radio.startListening();
 pinMode(lamba, OUTPUT);
}

void loop()
{
 if (radio.available())
 {
   bool done = false;    

     done = radio.read(bilgi, 1);      
     if (bilgi[0] == 111)
     {
      digitalWrite(lamba, HIGH);
     }

     if (bilgi[0] == 000)
     {
      digitalWrite(lamba, LOW);
     }

  }

}
 

Ekli dosyalar

  • alici_verici.rar
    218.1 KB · Görüntüleme: 4
Hocam ben bunlardan gram anlamıyorum iş alanımda olmadığı için ama ortada güzel bir çalışma ve emek görüyorum, ellerinize sağlık....
 
Merhabalar, güzel çalışma olmuş elinize sağlık, güncel bilgilere ulaşmak için aşağıdaki linkede göz atabilirsiniz.
Gerekli dosyalar ve kodlar videonun açıklama kısmında mevcuttur.

 
Hocam elinize sağlık. Ben iki ayrı vericiden tek alıcıya mesaj göndermek isytiyorum. Bunun için gönderi kanllarını nasıl farklı olarak oluşturabilirim. teşekkürler
 
bilgi[0] = 111; ve bilgi[0] = 000; yazan yerler 2 farklı komut için. Farklı değerler girerek başka vericiler ile aynı alıcıya komut gönderilebilir.
 

Forum istatistikleri

Konular
128,196
Mesajlar
915,753
Kullanıcılar
449,974
Son üye
umitseyhan

Yeni konular

Geri
Üst