Ana Sayfa Arduino Arduino & NRF24L01 Kablosuz Uzaktan Kontrol

Arduino & NRF24L01 Kablosuz Uzaktan Kontrol

5 min read
45
0
16,179

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ı

N

 

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

 

fix

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 &lt;SPI.h&gt;
#include &quot;nRF24L01.h&quot;
#include &quot;RF24.h&quot;
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(&quot;boş&quot;);}}

Verici Kodları


#include &lt;SPI.h&gt;
#include &quot;nRF24L01.h&quot;
#include &quot;RF24.h&quot;
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);}}


Buna Benzer Yazılar Göster !
Daha Fazlasını Yükle - Bilal Kaya
Daha Fazla Göster -  Arduino

45 Yorumlar

  1. ö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

    Reply

    • Bilal Kaya

      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?

      Reply

      • 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.

        Reply

    • Kadir

      18 Eylül 2015 at 07:02

      Kardeş pull up pull down direncleri kullanmayı dene

      Reply

  2. 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.

    Reply

  3. berat akcan

    29 Ocak 2016 at 12:25

    done = radio.read(msg, 1);
    bu kodda hata veriyor acil yardımm…

    Reply

    • Bilal Kaya

      Bilal Kaya

      29 Ocak 2016 at 13:59

      2 problem olabilir.Biri yanlış kopyalamak diğeri ise Arduino IDE sürüm farkı.

      Reply

      • 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

        Reply

        • 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 🙂

          Reply

      • 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

        Reply

      • 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.

        Reply

        • 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

          Reply

          • 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. 😀

  4. 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

    Reply

    • Bilal Kaya

      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.

      Reply

      • 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?

        Reply

  5. Turker

    3 Şubat 2016 at 09:41

    Hocam bu sistemin 5 km olanına ihtiyacım var yardimci olabilirmisiniz

    Reply

  6. 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…

    Reply

  7. emre

    7 Mart 2016 at 21:31

    Merhaba, ben kodlarını yazdım fakat boş mesajı alıyorum sürekli neden olabilir.

    Reply

    • Bilal Kaya

      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?

      Reply

  8. 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 ?

    Reply

  9. 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

    Reply

  10. 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. 🙁

    Reply

  11. 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ı?

    Reply

    • Bilal Kaya

      Bilal Kaya

      9 Nisan 2016 at 10:19

      Malesef Ali Bey

      Reply

    • Burak Ablay

      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..

      Reply

      • 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ı?

        Reply

  12. 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

    Reply

    • Burak Ablay

      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..

      Reply

  13. 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 ?

    Reply

    • Burak Ablay

      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..

      Reply

  14. 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 ?

    Reply

  15. 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

    Reply

    • Bilal Kaya

      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..

      Reply

  16. Adem İspir

    2 Mart 2017 at 06:32

    Merhaba Bilal Bey
    yapmiş oldugunuz uygulama, kablosuz yerine eternet üzerinden yapılabilirmi,

    tşk.

    Reply

    • Bilal Kaya

      Bilal Kaya

      30 Nisan 2017 at 10:37

      merhabalar Adem Bey,

      Evet yapılabilir.

      Reply

  17. idris

    25 Mayıs 2017 at 20:15

    due ile derlenmiyor. fikri olan var mı?

    Reply

  18. 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.

    Reply

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bak Bakalım ?

Akıllı Röle (Zelio) Nedir ve Nasıl Çalışır?

Piyasada farklı firmalara ait çeşitli akıllı röle kartları bulunuyor.Bu uygulamamızda , Sc…