
Merhaba Arkadaşlar,
NRF24L01 kablosuz modül,2,4 GHz frekansında kablosuz haberleşme yapılmasını sağlayan düşük güç tüketimli bir modüldür.NRF24L01 SPI arabirimini desteklemektedir.Yaptığı işe göre fiyatı da gayet uygun bir ürün olmasıyla dikkat çekiyor.
Özellikleri
- 1,9-3,6 voltaj beslemesi
- Düşük güç tüketimi
- Dünya çapında lisans gerektirmeyen 2.4GHz ISM band işletimi
- Açık alanda 250 m haberleşme mesafesi
- Boyutları:15×29 mm
- Alıcı hassasiyeti<90dB
- Verici sinyal gücü:+7dB
Uygulama Alanları
- Ev ve ticari otomasyonlar
- Oyuncaklar
- Hobi elektroniği
- Gelişmiş medya merkezlerinde uzaktan kontrol
- Mouse,klavye
- Oyun konsolları
Uygulamanın Çalışması
Devrede temel olarak,iki buton ile iki tane led kablosuz olarak kontrol edilmektedir.Bu uygulama temel teşkil etmektedir.Dilerseniz,butonlarla motor kontrol edebilirsiniz,evinizin lambalarını veya casus robotunuzu kontrol edebilirsiniz.Bu uygulamayı geliştirmek size kalmış 🙂
Kullanılan Malzemeler
- 2 adet Arduino
- 2 adet NRF24L01
- 2 adet led
- 2 adet buton
- 2 adet 10k direnç
- Bağlantılar için kullanılan jumper kablolar
- 2 adet küçük bread board
Arduino ile NRF24L01 Bağlantısı
Arduino NRF24L01
9 no’lu pin —–> CE
10 no’lu pin —–> CS
11 no’lu pin —–> MOSI
12 no’lu pin —–> MISO
13 no’lu pin —–> SCK
3,3 volt —–> Vcc
GND —–> GND
Buton bağlama mantığı şekilde gösterilmektedir.İkinci butonda bu şekilde Arduino’nun 6 no’lu pinine bağlanacaktır.
Ledler bu şekilde bağlanacaktır.Diğer Led Arduino’nun 3 no’lu pinine bağlanacaktır.
NRF24L01’in Çekim Gücünü İki Katına Çıkartmak
Arduino Kodları
Kodlamaya geçmeden önce eklememiz gereken 2 adet kütüphane dosyası mevcuttur.Bunları,diğer kütüphane dosyalarını olduğu yere kopyalamanız gerekmektedir.Kütüphanelere buradan ulaşabilirsiniz.
Alıcı Kodları
#include <SPI.h>
#include “nRF24L01.h”
#include “RF24.h”
int msg[1];
RF24 radio(9,10);
const uint64_t pipe = 0xE8E8F0F0E1LL;
int LED1 = 3;
int LED2 = 5;
void setup(void){
Serial.begin(9600);
radio.begin();
radio.openReadingPipe(1,pipe);
radio.startListening();
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);}
void loop(void){
if (radio.available()){
bool done = false;
while (!done){
done = radio.read(msg, 1);
Serial.println(msg[0]);
if (msg[0] == 111){delay(10);digitalWrite(LED1, HIGH);}
else if (msg[0] == 112) {digitalWrite(LED1, LOW);}
else if (msg[0] == 113) {delay(10);digitalWrite(LED2,HIGH);}
else {digitalWrite(LED2, LOW);}
delay(10);}}
else{Serial.println(“bos”);}}
Verici Kodları
#include <SPI.h>
#include “nRF24L01.h”
#include “RF24.h”
int msg[1];
RF24 radio(9,10);
const uint64_t pipe = 0xE8E8F0F0E1LL;
int SW1 = 7;
int SW2 = 6;
void setup(void){
Serial.begin(9600);
radio.begin();
radio.openWritingPipe(pipe);}
void loop(void){
if (digitalRead(SW1) == HIGH){
msg[0] = 111;
radio.write(msg, 1);}
if (digitalRead(SW1) == LOW){
msg[0] = 112;
radio.write(msg, 1);}
if (digitalRead(SW2) == HIGH){
msg[0] = 113;
radio.write(msg, 1);}
if (digitalRead(SW2) == LOW){
msg[0] = 114;
radio.write(msg, 1);}}
Eğer bu çalışma için PCB yapmayı düşünürseniz yaptığınız baskı devrenin çıktısını almak için PCBWAY’i kullanabilirsiniz. Oldukça uygun fiyatlara, hızlı ve kaliteli çözüm 🙂 5$ ödeyip 10 PCB alabiliyorsunuz. Her yeni üye de 5$ bonus kazanıyor. Hızlı gönderi seçeneği ile 1-2 güç içerisinde PCB’niz hazır olabiliyor.
ömer faruk özcan
26 Ağustos 2015 at 12:57
selamlar, uygulamayı kurdum fakat çalışması şöyle , butonlara basmıyorken ledler kendi kafasına göre yanıp sönüyor basınca da sürekli yanıyor.yani sıkıntı olan ledler low olmuyor sürekli butona basınca high oluyor çekince flaşör gibi yapıyor
Bilal Kaya
27 Ağustos 2015 at 10:11
Ömer Merhabalar,
Uygulama videoda gösterildiği gibi çalışıyor.Eksik bir şey yapmadığınızdan emin misiniz?
gürkan
12 Eylül 2015 at 11:58
alıcı ve verici devresinin fotoğrafları yenilenebilir mi fotoğraf doğru bir şekilde açılmamakta.
Kadir
18 Eylül 2015 at 07:02
Kardeş pull up pull down direncleri kullanmayı dene
gürkan
12 Eylül 2015 at 11:59
alıcı ve verici devresinin fotoğrafları yenilenebilir mi fotoğraf doğru bir şekilde açılmamakta.
Bilal Kaya
1 Şubat 2016 at 17:12
Fotoğraflar yenilenmiştir.
berat akcan
29 Ocak 2016 at 12:25
done = radio.read(msg, 1);
bu kodda hata veriyor acil yardımm…
Bilal Kaya
29 Ocak 2016 at 13:59
2 problem olabilir.Biri yanlış kopyalamak diğeri ise Arduino IDE sürüm farkı.
MEHMET
31 Mart 2016 at 17:28
Merhaba malesef aynı yerde bende hata aldım. Sürüm güncel. Kopyalamayıda doğru yaptım.
Böyle bir hata veriyor.
exit status 1
void value not ignored as it ought to be
MEHMET
31 Mart 2016 at 17:48
Sözümü geri alıyorum. 🙂 Bugün bir güncelleme gelmiş sanırım. Şimdi indirip, kurup, deneyip, tekrar yazarım 🙂
MEHMET
31 Mart 2016 at 18:12
Malesef aynı yerde hata devam ediyor.
AppData\Local\Temp\arduino_modified_sketch_63118\sketch_mar31a.ino: In function ‘void loop()’:
sketch_mar31a:22: error: void value not ignored as it ought to be
done = radio.read(msg, 1);
^
exit status 1
void value not ignored as it ought to be
MEHMET
31 Mart 2016 at 18:36
Birde böyle bir hata daha veriyor. Neden olabilir. Yardımlarınızı bekliyorum. Arduinoyu güncelledim ve paylaşmış olduğunuz kütüphane dosyasını library e ekledim.
MEHMET
31 Mart 2016 at 18:37
Derleme seçenekleri değiştirildi, tümü yeniden derleniyor.
C:\Users\RAVZANUR\AppData\Local\Temp\arduino_modified_sketch_268423\sketch_mar31a.ino: In function ‘void loop()’:
sketch_mar31a:22: error: void value not ignored as it ought to be
done = radio.read(msg, 1);
^
“nRF24L01.h” için birden fazla library bulundu
Kullanılıyor: C:\Users\RAVZANUR\Documents\Arduino\libraries\RF24
Kullanılmıyor: C:\Program Files\Arduino\libraries\nFR24L01
exit status 1
void value not ignored as it ought to be
MEHMET
31 Mart 2016 at 18:42
Tüm sorunların sebebi Belgelerim içerisinde bulunan arduino programıymış. Yani bir pc ye kurulanını indirip kurmuştum. Birde portable olanını indirmiştim. İkisindede kütüphane olunca ikisi birden görüyormuş. Portable olanını pcde sildim. sorun çözüldü. Teşekkür ederim. 😀
MEHMET
2 Şubat 2016 at 20:55
Merhaba hocam burada kullanmış olduğunuz 111 112 113 ne ifade ediyor. Ben 2 buton 2 led değilde 8 buton 8 led kullanmak istiyorum. Nasıl yapabilirim. yardımınızı rica ederim. şimdiden teşekkürler
Bilal Kaya
3 Şubat 2016 at 10:35
Merhaba,ilk olarak 8 adet led,8 adet buton şeklinde kullanacaksanız Arduino’nun farklı versiyonunu kullanmalısınız.Arduino Mega bunun için kullanılabilir.Arduinolarda SPI bağlantıları da değişiklik gösteriryor.Buna da dikkat etmelisiniz.O sayılara gelince de seri haberleşme yaparken bir mantık olarak bu şekilde kullanılıyor.
MEHMET
20 Şubat 2016 at 01:04
Teşekkür ederim hocam. Yani o sayıları eklediğimiz buton sayısına göre (115, 116, 117….) artıracağız değilmi. Peki bu kablosuz modüller açık alanda 250 metreyi görüyormu gerçekten? Birde pull up, pull down için direnç yerine kod ile yapsak hangisi daha sağlıklı olur? Ve son sorum 100 metre mesabede 8 adet lamba yakıcam. 8 li röle kullaayı düşünüyorum. Vericiyi 9v pille beslesem olurmu ve olursa şarzı kaç gün gider? Günde ortalama 2 saat aç kapa yaptığımı varsayarsak?
Turker
3 Şubat 2016 at 09:41
Hocam bu sistemin 5 km olanına ihtiyacım var yardimci olabilirmisiniz
Bilal Kaya
3 Şubat 2016 at 09:53
Kablosuz RS485 Data aktarım sistemlerini inceleyebilirsiniz.
http://www.audioguvenlik.com/index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=49&virtuemart_category_id=2
Beran
25 Şubat 2016 at 21:24
Merhabalar, öncelikle emeğiniz için teşekkürler. Benim sorum 1 verici 2 farklı alıcı üzerine. uzaktan kumandadan ilk butona bastığımda ilk alıcı bağlı olan devrenin işlem yapması, uzaktan kumandanın ikinci butonuna bastığımda ikinci alıcı bağlı olan devrenin işlem yapması. tek tek aralarında bağlantı şekli kurmaksızın istediğimde istediğim butona basar basmaz karşıdaki alıcı devrenin çalışması sağlanabilir mi? Teşekkürler…
Bilal Kaya
8 Mart 2016 at 13:26
Merhabalar Beran,
https://www.reddit.com/r/arduino/comments/2xuw7n/nrf24l01_one_transmitter_multiple_receivers/
bu adresten yararlanabilirsin.
emre
7 Mart 2016 at 21:31
Merhaba, ben kodlarını yazdım fakat boş mesajı alıyorum sürekli neden olabilir.
Bilal Kaya
8 Mart 2016 at 13:20
Merhabalar kodları derleme işlemini yaptıysanız çalışması gerekiyor.Yapılması gerekenleri tekrar kontrol eder misiniz?
Batuhan
10 Mart 2016 at 11:42
Merhabalar,
Çok güzel anlatmışsınız en kısa zamanda uygulayacagım. Fakat ben kafamdaki proje için 1 adet arduino uno r3 ve 1 adet nrf24l01 wireeles almıştım amacım telefonumdan arduinoya baglanıp arduino üzerindeki ledi yakmaktı. Böyle bir işlemi yapmam için bana yol gösterebilir misiniz ?
Bilal Kaya
10 Mart 2016 at 20:41
Merhabalar,
http://roboturka.com/2015/03/22/arduino-ve-android-ile-ses-kontrolu/
projesi ile telefonunuzdan bir ledi kontrol edebilirsiniz.Bu konuyla ilgili farklı uygulamalara arduino kategorimizden ulaşabilirsiniz.
MEHMET
31 Mart 2016 at 19:18
Hocam bir sorum olacak. İki leonardoyu birbiriyle haberleştirmek için pinlerini nasıl bağlamamız lazım. Yardımcı olursan sevinirim
Bilal Kaya
30 Nisan 2017 at 10:42
verdiğim linkte anlatımı mevcut.
http://bit.ly/2piKbIF
MEHMET
31 Mart 2016 at 20:12
O kadar ugraştım yapamadım. 2 adet leonardo ile deniyorum. Buradaki pinleri denedim olmadı. Leonardoda 0 ve 1 Pinlerinde Rx Tx yazıyordu onlara taktım kodu 9 10 yerine 0 1 yaptım gene olmadı. 3 numaralı pine bağlı olan led sürekli yanıyor. diğer led sönük. Düğmeler işlemiyor. Rx lambasıda sürekli yanıp sönüyor. Kafayı yicem. 🙁
Bilal Kaya
31 Mart 2016 at 20:17
https://arduinoexamples.wordpress.com/2012/11/11/nrf24l01-com-arduino-leonardo-nrf24l01-with-arduino-leonardo/
Bu örneği inceleyebilirsiniz.
MEHMET
31 Mart 2016 at 20:54
Teşekkür ederim. Bu şemaya görede yaptım ama yine haberleştiremedim. Led yanıyor bi süre sonra sönüyor biraz bekliyor sonra yine yanıyor. Yani ben düğmeye basmadan kendi kendine yanıp sönüyor. Serial ekrandan izledim. Alt alta “boe&” yazıyor arasıra 255 yazıyor. Çok canım sıkıldı. Niye olmadıki şimdi bu? 🙁
Ali Çetinkaya
9 Nisan 2016 at 08:59
Hocam NRF24L01 kullanılarak çift yönlü haberleşmenin nasıl yapılacağı ile ilgili bilginiz var mı?
Bilal Kaya
9 Nisan 2016 at 10:19
Malesef Ali Bey
Burak Ablay
24 Nisan 2016 at 16:24
Merhabalar ,
Şuanda bu çalışmayla alakalı değil de ben nrf modülünün başka bir kütüphane üzerinde çalıştım ve orada hem alma hem veri gönderme yapılabiliyor. nRF24L01p.h isimli kütüphaneyi indirebilirsiniz. Bu kütüphaneyi kendi arduino dosyanızın içerisini attıktan sonra orada bulunan örneklerinde array(dizi) örneğinden yararlanabilirsiniz. Bu örneğin içerisinde PRX VE PTX örnekleri olacaktır. Yani alıcı ve verici örnekleridir. Bunların ikisini mix yaparak yani karıştırarak hem alma hem gönderme işlemini gerçekleştirebilirsiniz. Tek dikkat edilmesi gerek nokta alici.RXaddress(“Oda 1”); alici.TXaddress(“Oda 2”); tx ve tx adreslerini void setup kısmında tanımanız gerekmektedir.
İyi günler iyi çalışmalar..
Ali Çetinkaya
25 Nisan 2016 at 19:14
Hocam cevabınız için teşekkürler… Ancak adres isimlerinin aynı olması gerekmiyor mu? yani alici.RXaddress(“Oda 1″); verici.TXaddress(“Oda 1″); şeklinde olmayacak mı?
fatih
9 Nisan 2016 at 22:33
hocam bu kanal adresini neye göre veriyoruz const uint64_t pipe = 0xE8E8F0F0E1LL; ben aynı mekanda farzedelim 10 çift kullanmayı düşünüyorum çakışmasını istemiyorum birbirleriyle
Burak Ablay
24 Nisan 2016 at 16:32
Merhabalar ,
Bu modül üzerinde bir çok çalışmalarda bulundum. Bu kütüphane üzerinden değil ama başka bir kütüphane üzerinden size yardımcı olabilirim. nRF24L01p.h isimli kütüphane biraz bu kütüphaneye göre farklı ve daha anlaşılır olduğunu düşünüyorum. Oraya kanal ayarlarını kolaylıkla yapabiliyorsunuz. 0-125 arasında kanal bulunmaktadır. Bu kanalları değiştirerek istediğiniz çalışmayı yapabileceğinizi düşünüyorum.
İyi günler , iyi çalışmalar dilerim..
Talha
15 Nisan 2016 at 09:50
hocam merhaba bende aynı oda yada salon içersinde 15 ayrı adet kullanmak istiyorum çakışmaması gerekiyor nasıl yapabiliriz yani frekans yada kanal değişikliğini ?
Burak Ablay
24 Nisan 2016 at 16:32
Bu modül üzerinde bir çok çalışmalarda bulundum. Bu kütüphane üzerinden değil ama başka bir kütüphane üzerinden size yardımcı olabilirim. nRF24L01p.h isimli kütüphane biraz bu kütüphaneye göre farklı ve daha anlaşılır olduğunu düşünüyorum. Oraya kanal ayarlarını kolaylıkla yapabiliyorsunuz. 0-125 arasında kanal bulunmaktadır. Bu kanalları değiştirerek istediğiniz çalışmayı yapabileceğinizi düşünüyorum.
İyi günler , iyi çalışmalar dilerim..
Haluk Erdoğan
19 Mayıs 2016 at 16:32
Merhaba, öncelikle basit ve güzel anlatımınız için teşekkür ederim.
Bende de done değişkeni ile ilgili hatalar verdi fakat oradaki algoritmayı değiştirip o kısmı atladım.
Fakat bununla ilgili olmadığını düşündüm farklı bir sıkıntı var bende.
Vericinin radio.write komutundan sonrasına geçmiyor verici kodları.
radio.write komutu alıcıdan haber mi bekliyor devam edebilmek için ?
Baran yeni
15 Ekim 2016 at 16:11
Hocam ben iki farkli kanaldan iki farkli potansiyometre ile iki farkli servoyu kontrol etmek istiyorum nasıl yaparım bir el atsanız
Bilal Kaya
15 Ekim 2016 at 19:00
Bu modül üzerinde bir çok çalışmalarda bulundum. Bu kütüphane üzerinden değil ama başka bir kütüphane üzerinden size yardımcı olabilirim. nRF24L01p.h isimli kütüphane biraz bu kütüphaneye göre farklı ve daha anlaşılır olduğunu düşünüyorum. Oraya kanal ayarlarını kolaylıkla yapabiliyorsunuz. 0-125 arasında kanal bulunmaktadır. Bu kanalları değiştirerek istediğiniz çalışmayı yapabileceğinizi düşünüyorum.
İyi günler , iyi çalışmalar dilerim..
Adem İspir
2 Mart 2017 at 06:32
Merhaba Bilal Bey
yapmiş oldugunuz uygulama, kablosuz yerine eternet üzerinden yapılabilirmi,
tşk.
Bilal Kaya
30 Nisan 2017 at 10:37
merhabalar Adem Bey,
Evet yapılabilir.
idris
25 Mayıs 2017 at 20:15
due ile derlenmiyor. fikri olan var mı?
Furkan
14 Eylül 2017 at 16:10
Söylediğiniz aşamaları yaptım yalnız alıcı devresinden tepki gelmemekte ne yapmalıyım . Yardımcı olursanız sevinirim.
Seda
6 Nisan 2018 at 17:42
Ben bu modülü başka bir şey de kullancam board kullanmadan bağlantı kurabilir miyim?
Ve tek arduino yeterli midir?
brk123
17 Nisan 2018 at 11:47
Mega ile nano arasında bağlantı kurmak istiyorum. Mega alıcı nano verici olacak şekilde nasıl düzenleyebilirim /Acil yardım edebilir misiniz!!!(nanoya buton taktim mega alıcı)
ali doğru
2 Nisan 2019 at 03:19
2 buton 1 led nasıl kontrol edebirim amacım buton 1 e bastığımda yanması buton 2 ye bastığım da sönmesi