Arduino İle NRF24L01 Rf Modül Kullanımı

Kapat
Önemli Konu
X
X
 
  • Zaman
  • Gösterim
Clear All
yeni mesajlar
  • ozkandonmez
    Administrator

    • 30-12-2002
    • 47227

    Arduino İle NRF24L01 Rf Modül Kullanımı


    Kablosuz haberleşmede sıkça kullanılan modüllerden NRF24L01 Rf modül kullanımı hakkında bahsedeceğim.Bu modülün kullanımı kolay ve menzili
    gayet iyi olduğundan projelerinizde rahatlıkla kullanabilirsiniz.Ayrıca fiyatı da uygundur.Düşük güç tüketimi ve 2.4GHz frekans da çalışması bize avantaj sağlamaktadır.


    nrf24L01.jpg
    2-4G-NRF24L01-antenli-e1443177055216.jpg
    • NRF24L01 2.4GHz Transceiver Modül
    • Modülün pcb ve harici antenli modeli mevcuttur.Pcb modellerde menzil 250 m iken harici antenli modelinde menzil 1000 m’ye kadar çıkabiliyor.
    • Modülü projenize göre çift yönlü haberleşme yaptırmak için hem alıcı hem verici olarak kullanabilirsiniz.
    • Modülün Pin Bağlantıları:


    nRF24L01.png


    Modül SPI protokolünü kullanarak haberleşmektedir.Bundan dolayı pin bağlantılarını arduino modelinin SPI pinlerine bakarak yapmalısınız.
    Örnek olarak arduino uno ile pin bağlantılarını gösterelim.
    nRF24L01 Arduino Uno
    VCC 3.3 V
    GND GND
    CS 7
    CE 8
    MOSI 11
    MISO 12
    SCK 13
    Kablosuz haberleşme yaparken modüllerden birini alıcı diğerini ise verici olarak ayarlamamız gerekiyor.İstenirse projenin durumuna göre bir modül hem alıcı hem de verici olarak da kullanılabilmektedir.Modülün alıcı veya verici durumunda olması kablo bağlantılarını değiştirmez.Bu bağlantılar tüm durumlar için aynıdır.

    Örnek Kod:

    Verici kodu:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    #include <SPI.h>
    #include <nRF24L01p.h>

    nRF24L01p verici(7,8);//CSN,CE

    void setup(){
    delay(150);
    Serial.begin(115200);
    SPI.begin();
    SPI.setBitOrder(MSBFIRST);
    verici.channel(90);
    verici.TXaddress("kontrol");
    verici.init();
    }

    String message;

    void loop(){
    if(Serial.available()>0){
    char character=Serial.read();
    if(character=='\n'){
    verici.txPL(message);
    verici.send(SLOW);
    message="";
    }else{
    message+=character;
    }
    }
    }
    Alıcı Kodu:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    #include <SPI.h>
    #include <nRF24L01p.h>

    nRF24L01p alici(7,8);//CSN,CE

    void setup(){
    delay(150);
    Serial.begin(115200);
    SPI.begin();
    SPI.setBitOrder(MSBFIRST);
    alici.channel(90);
    alici.RXaddress("kontrol");
    alici.init();
    }

    String message;

    void loop(){
    if(alici.available()){
    alici.read();
    alici.rxPL(message);
    Serial.println(message);
    message="";
    }
    }
    Fonksiyonların Açıklamaları:
    • Modülün nRF24L01p.h adında kütüphanesini buradan indirelim. >>nRF24L01p
    • Yazılımda öncelikle CE ve CSN pinlerini tanımlamamız gerekiyor.
    • nRF24L01p alici(7,8); >> Burdaki komutla 7.pin CSN, 8.pin CE pini olarak tanımlanmış.Bu fonksiyonda alıcı modül adına “alici” ismini verdik.
    • nRF24L01p verici(7,8); >> Burdaki komutla 7.pin CSN, 8.pin CE pini olarak tanımlanmış.Bu fonksiyonda verici modül adına “verici” ismini verdik.
    • SPI protokolü ile haberleştiği için SPI kütüphanesi eklenip SPI.begin(); fonksiyonu setup’ın içine yazılarak haberleşme başlatılır.
    • alici.channel(90);>> Alıcı modülde setup’ın içinde tanımlanarak haberleşme kanal değerini 90 yaptık.Bu değer iki modülde de aynı değer olmalıdır.0 ile 125 arası değer yazılabilir.
    • verici.channel(90);>> Verici modülde setup’ın içinde tanımlanarak haberleşme kanal değerini 90 yaptık.Bu değer iki modülde de aynı değer olmalıdır.0 ile 125 arası değer yazılabilir.
    • alici.RXaddress(“kontrol”); >> Bu fonksiyon ile modülü alıcı olarak ayarladık ve adres ismine de “kontrol” adını verdik.
    • verici.TXaddress(“kontrol”);>>Bu fonksiyon ile de modülü verici olarak ayarladık ve adres ismine de “kontrol” adını verdik.
    • İki modülün de adres ismi ve haberleşme kanal değeri aynı olmalıdır.

    Önemli Not:Modüller arası haberleşme sağlanamıyorsa her iki modülün de vcc ve gnd pinleri arasına 3.3 uF ile 10 uF arası değerde kondansatör yerleştirerek tekrar deneyiniz.

    Örnek Uygulama:

    Potansiyometre ile Kablosuz Servo Motor Kontolü




    pot-rf-servo.png


    RF24 Kütüphanesini buradan indirelim.

    Şekildeki alıcı ve verici devrelere bakarak gerekli bağlantıları yapabilirsiniz.

    Yazılım kısmında bir modülü alıcı diğer modülü de verici olarak tanımlayarak kablosuz olarak veri transferini gerçekleştireceğiz.

    Verici Yazılımı:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #include <SPI.h>
    #include "RF24.h"
    int msg[1];
    //SCK -> 13//MISO -> 12//MOSI -> 11//CSN -> 7//CE -> 8
    RF24 radio(8,7);
    const uint64_t pipe = 0xE8E8F0F0E1LL;
    int potpin = 0;
    int val;
    void setup(void){
    radio.begin();
    radio.openWritingPipe(pipe);
    }
    void loop(void){
    val = analogRead(potpin);
    val = map(val, 0, 1023, 0, 179);
    msg[0] = val;
    radio.write(msg, 1);
    }
    Alıcı Yazılımı:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    #include <Servo.h>
    #include <SPI.h>
    #include "RF24.h"
    Servo myservo;
    //SCK -> 13//MISO -> 12//MOSI -> 11//CSN -> 7//CE -> 8
    RF24 radio(8,7);
    const uint64_t pipe = 0xE8E8F0F0E1LL;
    int msg[1];
    void setup()
    {
    myservo.attach(9);
    radio.begin();
    radio.openReadingPipe(1,pipe);
    radio.startListening();
    }
    void loop()
    {
    if (radio.available()){
    bool done = false;
    while (!done){
    done = radio.read(msg, 1);
    myservo.write (msg[0]);

    }
    }
    }
    Ekli Dosyalar
    Son düzenleme ozkandonmez; 13-12-2017, 02:32.
    Üyelere Özel Konuları Görebilmek İçin Lütfen ÜYE GİRİŞİ Yapınız

    Yatırım, bilgi, yorum ve tavsiyeleri yatırım danışmanlığı kapsamında değildir. Yatırım danışmanlığı hizmeti, Sermaye Piyasası Kurulu tarafından yayımlanan Seri:V, No:52 Sayılı "Yatırım Danışmanlığı Faaliyetine ve Bu Faaliyette Bulunacak Kurumlara İlişkin Esaslar Hakkında Tebliğ" çerçevesinde aracı kurumlar, portföy yönetim şirketleri, mevduat kabul etmeyen bankalar ile müşteri arasında imzalanacak yatırım danışmanlığı sözleşmesi çevresinde sunulmaktadır.
    Burada ulaşılan sonuçlar tercih edilen hesaplama yöntemi ve/veya yorum ve tavsiyede bulunanların kişisel görüşlerine dayanmakta olup, mali durumunuz ile risk ve getiri tercihlerinize uygun olmayabileceğinden sadece burada yer alan bilgilere dayanılarak yatırım kararı verilmesi sağlıklı sonuçlar doğurmayabilir.
    Yatırımcıların verecekleri yatırım kararları ile bu sitede bulunan veriler, görüş ve bilgi arasında bir bağlantı kurulamayacağı gibi, söz konusu yorum/görüş/bilgilere dayanılarak alınacak kararların neticesinde oluşabilecek yanlışlık veya zararlardan www.ozmena.net web sitesi ve/veya yöneticileri sorumlu tutulmaz.

    HAYDI IPTV YAPALIM

    TBS 6991 Dual Tuner Dual CI Tv kartı linux sürücü yükleme

    LÜTFEN OKUYUN
İşlem Yapılıyor