Print this page
nRF24L01 Wireless Modül ve Adaptörü Kullanımı, arduino ve mblock kodları (Arduino Dersleri, 25)

nRF24L01 Wireless Modül ve Adaptörü Kullanımı, arduino ve mblock kodları (Arduino Dersleri, 25) Featured

Rate this item
(2 votes)

Bu dersimizde  nRF24L01 Wireless Modül  ile 8 Pin nRF24L01 Wireless Modül Adaptörü kullanarak kablosuz bir iletişim kuran bir sistem tasarlayacağız.

Uygulamada arduinonun birine bir buton, diğer arduinoya ise bir led bağlayacağız. nRF24L01 Wireless Modül ve Adaptörü her iki arduinoyada da olacak. Butona bastığımızda kablosuz haberleşerek diğer sistemde takılı olan led yanacaktır. Bu sistemde butonun bağlı olduğu arduino Transmitter (Sinyal gönderen, transfer eden), ledin takılı olduğu arduino sistemi ise Receiver (sinyal alıcı) olarak tanımlanmaktadır.

Yani bu uygulamızda iki adet arduino ve nRF24l01 modülü kullanarak iki ayrı sistem tasarlayıp, iki ayrı kod yazacağız. Karışıklık olmaması ve daha rahat anlaşılması için  Transmitter - Receiver kelimeleri yerine, sistem ve kodları Gönderen ve Alan şeklinde tanımlayacağız. Dolayısıyla buton gönderen kısımda, led ise alan kısımda alacak.

Önemli Not: nRF24L01 Wireless Modülü ve adaptörü ayrı ayrı satılmaktadır. Adaptörü olmadan kullanımda bir takım sıkıntılar olduğu için biz bu uygulamamızda 8 Pin nRF24L01 Wireless Modül Adaptörüyle birlikte kullanacağız. Eğer siz de kablosuz haberleşme yapan bir uygulama yapmayı düşünüyorsanız nRF24L01 ile mutlaka adaptörünü alabilirsiniz. Hatta antenli adaptörü çekim gücü açısından daha güçlü olduğu için onu tercih edebilirsiniz.

 

Gerekli Malzemeler

2 adet Arduino Uno R3
2 adet breadboard
2 adet nRF24L01 Wireless Modülü
2 adet 8 Pin nRF24L01 Wireless Modül Adaptörü
1 adet direnç (220 ohm)
1 adet direnç (10K)
1 adet buton
22 adet jumper kablo (8 EE, 14DE)

RF24 Kütüphanesini İNDİR

RF24 Kütüphanesini İNDİR Github


nRF24L01 Wireless Modül ve Adaptörü nedir?

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

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. SPI arabirimini destekler. (Robotistan)
Ö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

NRF24l01 Wireless(Kablosuz) Modülü Adaptörü

NRF34L01 modüllerini kullanmak genellikle pinlerin yakın olması ve arduino voltaj uyumsuzlukları sebebiyle zordur.
Modülü bu karta oturtarak daha rahat pin yapısı ile kullanabilirsiniz. Üzerindeki voltaj regülatörü sayesinde 5V girişi yapabilirsiniz.
Arduino kartlarında 3.3V çıkış gücü düşük olduğu için 5V ile beslediğinizde güç problemi yaşamazsınız. Ayrıca modülün ihtiyaç duyduğu bypass kapasitörler de kart üzerinde mevcuttur.
Bu şekilde stabil ve kolay bir kullanıma sahip olabilirsiniz. (F1depo)

nRF24L01 Wireless Modül ve Adaptörü  Devresi  Hakkında

SPI pinleri Arduino türüne göre değişiklik gösterir. Arduino türlerine göre bu pinleri aşağıdaki tabloda gösterilmiştir.

Arduino türü

MOSI

MISO

SCK

Arduino UNO

11 veya ICSP4

12 veya ICSP1

13 veya ICSP3

Arduino Mega

51 veya ICSP4

50 veya ICSP1

52 veya ICSP3

Arduino Leonardo

ICSP-4

ICSP-1

ICSP-3

Arduino Due

ICSP-4

ICSP-1

ICSP-3

 CE pinini arduinoda herhangi bir dijital pine bağlayabiliriz. Biz bu örnekte 5 numaralı pine bağladık.
CSN pini de aynı şekilde herhangi bir dijital pine bağlanabilir. Biz 10 numaralı pine bağladık.
Diğer pinler tabloda göründüğü gibi bağlandı ve IRQ pinini bağlamadık arduinoya. SCK 13 numaralı pine, Mo  11 numaralı pine, MI 12 numaralı pine bağlandı.

 

nRF24L01 Wireless Modül ve Adaptörü  Devresi (Transmitter - Sinyal Gönderen Kısım)


nRF24L01 Wireless Modül ve Adaptörü Kodları (Transmitter - Sinyal Gönderen Kısım)

 

/*
---- Transmitter Code
Gönderen Kodu ----
*/

#include <SPI.h>                      
#include "RF24.h"                    
#define buton 7   // butonu 7 numaralı pine bağladık 
int msg[1];    // kablosuz mesaj gönderecek olan değişken

RF24 radio(5,10);                     //Ce CSN pinlerinin bağlı olduğu pinler
                                      
const uint64_t pipe = 0xE8E8F0F0E1LL; //Sinyal gönderen ve alan iki modül için de aynı adres tanımlanmalıdır. Bir nevi kanal tanımlıyoruz


void setup(void){
  pinMode(buton,INPUT);        //butonu giriş olarka tanımladık
  radio.begin();                      //Kablsozu haberleşmeyi aktif ediyoruz
  radio.openWritingPipe(pipe);        //İletişim kanalında sinyal gönderici olarka tanımlama yapıyoruz
}

void loop(void){
  
  msg[0] =  digitalRead(buton);    // butonun durumunu msg değişkinie atıyoruz
  radio.write(msg, 1);  // msg değişkeni aynı iletişim kanalındaki diğer alıcı sisteme sinyal gönderiyor.
}

 

 

Şimdi diğer devreyi kuralım ve kodları yazalım.

 

nRF24L01 Wireless Modül ve Adaptörü  Devresi (Transmitter - Sinyal Alıcı Kısım)

 

nRF24L01 Wireless Modül ve Adaptörü Kodları (Receiver- Sinyal Alıcı Kısım)

 

/*
---- Receiver Code ----
Alıcı Kod
*/

 
#include <SPI.h>      
#include "RF24.h"     
#define led 3


RF24 radio(5,10);     //Ce ve CSN pinleri

const uint64_t pipe = 0xE8E8F0F0E1LL; //iletişim kanalı adresi, gonderen sistemle aynı adres olmalı.

int msg[1];

void setup(){
   Serial.begin(9600);  // sinyalleri seri port ekranında okumak için 

 pinMode (led, OUTPUT);
  radio.begin();                    //Kablosuz iletişimi başlat
  radio.openReadingPipe(1, pipe);   //İlgili iletişim kanalında alıcı olarak tanımlandı
  radio.startListening();           //sinyal alma aktif ediliyor
  }

void loop()
{
  if(radio.available())
  {            //Herhangi bir sinyalin gelip gelmediğini kontrol et
    bool done = false;              //done değişkenine varsayılan değer false atanmış ve boolen tanımlanmış. Sinyal varsa true, yoksa  false değerleri alır sadece.
    while (!done)    
    {
      done = radio.read(msg, 1);
      Serial.println(msg[0]);
      delay(100);
      if (msg[0]==1)
      {
        digitalWrite(led,1);
      }     
      else
      {
        digitalWrite(led,0);
      }
    }
  }
}

 

nRF24L01 Wireless Modül ve Adaptörü Kullanımı Mblock Kodları

 

Konuyla ilgili önerilen videolar

Mert Arduino
http://mertarduinotutorial.blogspot.com/2017/02/arduino-tutorial-27-nrf24l01-wireless.html
https://www.youtube.com/watch?v=oIobOWXOJJg

Meraklı Maymun
https://www.youtube.com/watch?v=luNlEAhpL7U
Lezzetli Robot Tarifleri
https://lezzetlirobottarifleri.com/nrf24l01-kablosuz-alici-verici-haberlesme-modulu/

Share:

Latest from RAM