Haberler

NRF24L01 Alıcı Verici ile Başlarken: Arduino Rehberi

NRF24L01+, Arduino kullanıcıları arasında popüler bir 2.4GHz RF kablosuz Alıcı-Verici Modülüdür. Maliyet-performans oranı açısından yüksek bir itibara sahiptir ve kendi sınıfındaki en iyi özelliklere sahip modüllerden biridir. Bu blog, NRF24L01’in neler yapabileceğini açıklamayı ve bir NRF24L01 Arduino Kılavuzu sunmayı amaçlamaktadır.

nrf24l01 arduino guide

nRF24L01’in iyi yanları neler?

Uygun fiyatlı ancak güvenilir 2 yönlü RF çözümleri söz konusu olduğunda, nRF24L01’den daha iyi bir iş çıkaran başka bir modül yoktur. İşte nedenleri:

Düşük maliyet – NRF24L01, piyasadaki en ucuz kablosuz alıcı-verici modüllerinden biridir, çevrimiçi olarak 2 USD’den daha az bir fiyata kolayca bulabilirsiniz!

Microcontroller/Arduino Kartı ile Eşleştirme Kolaylığı – nRF24L01, SPI protokolü veya Arduino ile eşleştirirken RF24 kütüphanesi kullanarak çeşitli mikrodenetleyici sistemleri; MCU/ARM/PIC/AVR/STM32 ile kolayca eşleştirilebilir.

2.4Ghz ile kablosuz iletişim esnekliği – 2.4GHz çalışma frekansı, diğer daha düşük çalışma frekanslarına göre daha yüksek bit hızı kullanımlarına olanak tanır. Veri iletimi için GFSK modülasyonu kullanır, bu da veri transfer hızının 250kbps, 1Mbps veya 2Mbps olabileceği anlamına gelir.

Yüksek iletim menzili – nRF24L01, doğru kurulumla kullanıldığında birkaç kilometreye kadar dalga boylarını iletebilir. Ancak, yüksek iletim menziline sahip bağımsız bir modül arıyorsanız, 1000 metreye kadar (engelsiz) kablosuz iletişim için tasarlanmış bir güç amplifikatörü ve IPX anten ile bu nRF24L01+ modülüne göz atabilirsiniz.

Sonsuz Uygulamalar – Kablosuz PC çevre birimlerinden kontrol cihazlarına ve oyuncaklara kadar, nRF24L01 birçok senaryoda kullanılabilir.

İşte uygulamaların kapsamlı olmayan bir listesi:

  • Kablosuz PC Çevre Birimleri
  • Fare, klavyeler ve uzaktan kumandalar
  • 3’ü 1 arada masaüstü paketleri
  • Gelişmiş medya merkezi uzaktan kumandaları
  • VoIP kulaklıkları
  • Oyun kontrol cihazları
  • Spor saatleri ve sensörler
  • Tüketici elektroniği için RF uzaktan kumandalar
  • Ev ve ticari otomasyon
  • Aktif RFID
  • Varlık izleme sistemleri
  • Oyuncaklar

Peki NRF24L01+ hakkında ne?

Piyasada bulunan bazı NRF24L01’lerin “+” işareti taşıdığını ve normal versiyon ile + versiyonu arasındaki farkın ne olduğunu merak etmiş olabilirsiniz.

İşte fark:

NRF24L01+, NRF24L01’in daha yeni bir versiyonudur ve havada ekstra 250kbps veri hızı sunma kapasitesine sahiptir, oysa “+” işareti taşımayan versiyon yalnızca 1Mbps ve 2Mbps sunar.

Bunun dışında, her ikisi de birbirine benzer olarak kabul edilebilir.

Her iki versiyon da veri hızı olarak 1 veya 2 MBps kullanıldığı sürece bir arada kullanılabilir.


nRF24L01+ modülü ile nRF24L01+ PA Modülü

nRF24L01+ çipine dayanan çeşitli modüller mevcuttur, işte göz atmaya değer popüler olanlar:

Birinci Versiyon:

nRF24L01+ Kablosuz Modül

Yukarıdaki kablosuz modül, üzerinde bir anten ile birlikte gelir. Küçük ve kompakt boyutu, dar alanlar için uygun olabilir ancak iletim menzilinde kayıplara neden olur ve modül uygulamalarını sınırlayabilir.

İkinci Versiyon:

2.4G KABLOSUZ MODÜL NRF24L01+PA

Bu versiyon, harici bir IPX anten ile birlikte gelir ve bir güç amplifikatörü ile tasarlanmıştır. Bu, 1000 metreye kadar çok daha geniş bir iletim menzili sağlar. Böylece kablosuz iletim performansı ile maliyet arasında iyi bir denge sağlanır.

Seeed’de, online mağazamızda satın alabileceğiniz NRF24L01 modülünün ikinci versiyonunu taşıyoruz!


NRF24L01 Arduino Kılavuzu

Bu kılavuzda, üzerinde anten bulunan NRF2401’in birinci versiyonunu kullanacağız.

Bir normal kiraz anahtarı kullanarak basit tutacağız; anahtar tıklandığında, başka bir modül tarafından algılanan bir değer gönderecek ve bir WS2812 LED çubuğunu aydınlatacaktır.

Verici + Alıcı Bağlantıları:

Ref

Kullanılan kart: Arduino Nano

Anahtar ve Nano yapılandırması:

Anahtar, Nano üzerindeki GND ve Pin 8’e bağlanır.

Nano ve NRF24L01 pin yapılandırması:

  • MISO, Nano’nun 12 numaralı pinine bağlanır
  • MOSI, Nano’nun 11 numaralı pinine bağlanır
  • SCK, Nano’nun 13 numaralı pinine bağlanır
  • CE, Nano’nun 9 numaralı pinine bağlanır
  • CSN, Nano’nun 10 numaralı pinine bağlanır
  • NRF24L01’in GND ve VCC’si, Nano’nun GND ve 3.3V’una bağlanır

Arduino Nano ve Uno’nun aynı SPI pinlerini paylaştığı için kullanılması önerilir.

Verici Kodu:

Arduino’nuzu programlamak için aşağıdaki sketch kodunu Arduino IDE yazılımınıza kopyalayın.

/*
Created by Yvan / https://Brainy-Bits.com

This code is in the public domain...
You can: copy it, use it, modify it, share it or just plain ignore it!
Thx!

*/

// NRF24L01 Modül Eğitimi - Arduino NANO kullanarak Verici için Kod

//Gerekli Kütüphaneleri başta dahil et
#include "nRF24L01.h" //TMRh20 tarafından oluşturulan NRF24L01 kütüphanesi https://github.com/TMRh20/RF24
#include "RF24.h"
#include "SPI.h"

#define SwitchPin 8 // Arcade anahtarı NANO üzerindeki Pin 8'e bağlı
int SentMessage[1] = {000}; // NRF24L01 üzerinden gönderilmeden önce değeri saklamak için kullanılır

RF24 radio(9,10); // NRF24L01 için kullanılan SPI pinleri + NANO üzerindeki 9 ve 10 numaralı pinler

const uint64_t pipe = 0xE6E6E6E6E6E6; // 2 NRF24L01 arasında iletişim kurmak için aynı olmalıdır


void setup(void){

pinMode(SwitchPin, INPUT_PULLUP); // Arcade anahtarının NANO pinini Giriş olarak tanımlayın ve Dahili Pullup'ları kullanın
digitalWrite(SwitchPin,HIGH); // Başlangıçta Pin'i YÜKSEK olarak ayarlayın

radio.begin(); // NRF24L01'i başlat
radio.openWritingPipe(pipe); // NRF24L01'i iletim için hazırla
}

void loop(void){

if (digitalRead(SwitchPin) == LOW){ // Anahtar Aktif Edildiğinde
SentMessage[0] = 111;
radio.write(SentMessage, 1); // NRF24L01 üzerinden değeri gönder
}
else {
SentMessage[0] = 000;
radio.write(SentMessage, 1);
}
}

Kullanılan kart: Arduino Uno

Alıcı kısmı, Verici tarafından gönderilen bilgileri alan WS2812 LED çubuğuna sahip olacaktır.

WS2812 LED ve Uno Pin Yapılandırması:

  • WS2812 üzerindeki DI pini Uno’nun 8 numaralı pinine bağlıdır
  • WS2812 üzerindeki GND ve VCC, Uno’nun GND ve 5V’una bağlıdır

NRF24L01 ve Uno Pin Yapılandırması:

  • MISO, Uno’nun 12 numaralı pinine bağlanır
  • MOSI, Uno’nun 11 numaralı pinine bağlanır
  • SCK, Uno’nun 13 numaralı pinine bağlanır
  • CE, Uno’nun 9 numaralı pinine bağlanır
  • CSN, Uno’nun 10 numaralı pinine bağlanır
  • GND ve VCC, Uno’nun GND ve 3.3V’una bağlıdır

Alıcı Kodu:

Arduino’nuzu programlamak için aşağıdaki sketch kodunu Arduino IDE yazılımınıza kopyalayın.

/* 
Yvan tarafından oluşturuldu / https://Brainy-Bits.com

Bu kod kamuya açık alandadır...
Bunu: kopyalayabilir, kullanabilir, değiştirebilir, paylaşabilir veya tamamen görmezden gelebilirsiniz!
Teşekkürler!

*/


// NRF24L01 Modül Eğitimi - Arduino UNO kullanarak Alıcı için Kod

// Gerekli Kütüphaneleri başta dahil et
#include "nRF24L01.h" // TMRh20 tarafından oluşturulan NRF24L01 kütüphanesi https://github.com/TMRh20/RF24
#include "RF24.h"
#include "SPI.h"
#include "FastLED.h" // WS2812 RGB Stick için FastLED kütüphanesi http://fastled.io/

#define NUM_LEDS 8 // Stick üzerindeki LED sayısı
#define LED_PIN 8 // RGB Stick'in Dijital Girişi (DI) UNO'nun 8 numaralı pinine bağlı

CRGB leds[NUM_LEDS]; // FastLED Kütüphanesi Başlatma

int ReceivedMessage[1] = {000}; // NRF24L01 tarafından alınan değeri saklamak için kullanılır

RF24 radio(9,10); // NRF24L01 için kullanılan SPI pinleri + UNO üzerindeki 9 ve 10 numaralı pinler

const uint64_t pipe = 0xE6E6E6E6E6E6; // 2 NRF24L01 arasında iletişim için aynı olmalıdır


void setup(void){

FastLED.addLeds<NEOPIXEL,LED_PIN>(leds, NUM_LEDS); // FastLED Kütüphanesini Ayarlama
FastLED.clear(); // RGB Stick LED'lerini Temizle

// Başlangıç LED'lerini yak
for(int x = 0; x != NUM_LEDS; x++) {
leds[x] = CRGB::Red;
}

FastLED.setBrightness(50);
FastLED.show();

radio.begin(); // NRF24L01'i Başlat

radio.openReadingPipe(1,pipe); // NRF24L01'i alıma hazır hale getir

radio.startListening(); // Bilgi alınıp alınmadığını dinle

pinMode(LED_PIN, OUTPUT); // RGB Stick UNO pinini ÇIKTI olarak ayarla
}

void loop(void){

while (radio.available())
{
radio.read(ReceivedMessage, 1); // NRF24L01'den bilgiyi oku

if (ReceivedMessage[0] == 111) // Anahtarın basılı olduğunu gösterir
{
for(int x = 0; x != NUM_LEDS; x++)
{
leds[x] = CRGB::Green;
FastLED.show();
}
}
else
{
for(int x = 0; x != NUM_LEDS; x++) 
{
leds[x] = CRGB::Red;
FastLED.show();
}
}
delay(10);
}
}

Tam eğitim için buraya gidebilirsiniz!


Özet

Genel olarak, nRF24L01, düşük maliyetle kablosuz iletişim sisteminizi kurmak istiyorsanız harika bir seçenektir. Yüksek maliyet-performans oranı ve mikrodenetleyici sistemlerinizle eşleştirme kolaylığı, onu zaten popüler bir seçenek haline getiriyor.

NRF24L01+’ın 2. versiyonu, kablosuz iletişim performansında bir artış arıyorsanız kesinlikle tavsiye edilir.

Leave a Reply

Your email address will not be published. Required fields are marked *