Arduino
OKUDUĞUNUZ KONU
NRF24L01 Sorunlarının Çözümü
6

NRF24L01 Sorunlarının Çözümü

Yazar : Muhammed Ali Özen22 Eylül 2017

Merhaba maker adayı arkadaşlar bu gün arduinoda çalışması en sıkıntılı ve en güzel modüllerden biri olan nrf24l01 i inceleyip sorunları beraber çözeceğiz. Öncelikle bu modül neden bu kadar sıkıntılı veya ana sıkıntı nedir sorunlarını ele alalım.Bu modülünün en başlıca sorunu yeterli enerji yi(voltaj değerini) alamamasıdır. Yeterli enerji yi alamayınca nrfler arasındaki bağlantı sağlanamıyor ve alış veriş (veri aktarımı ) sağlanamıyor. Buda nrf modülü ile proje yapmamıza engel oluyor. Nrf24l01 uzaktan kumandalı veya uzaktan iletişim için kullanabileceğimiz en az maliyetli üründür. Bu yüzden sürekli tercih edilir.

Peki  çözüm nedir ?

En etkili yöntem NRF24L01 Adaptörünü almaktır ve onunla kullanmaktır. Eğer adaptör almadıysanız ve yinede kullanmak istiyorsanız 100uF lik bir kondansatörü nrf24l01 modülünün GND ve VCC bacaklarına bağlarsanızda nrf modülünüzün çalıştığını göreceksiniz.

Bu kadar NRF24L01 modülünden bahsetmişken haydi beraber bir devre kuralım

Alıcı Devre :

Verici Devre :

 

ARDUINO KODLARI

 Verici Kodları


#include  <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"     //Modül ile ilgili kütüphaneleri ekliyoruz
int mesaj[1];      //mesaj isminde bir dizi tanımlıyoruz

RF24 verici(9,10);     //kütüphane tarafından kullanılacak pinleri tanımlıyoruz
const uint64_t kanal = 0xE8E8F0F0E1LL; //kanalı tanımlıyoruz
int buton = 7;      //butonun bağlı olduğu dijital pin

void setup(void)
{
verici.begin();       //nrf yi başlatıyoruz
verici.openWritingPipe(kanal);  //kanal id sı tanımlanıyor
}

void loop(void)
{
if (digitalRead(buton) == HIGH)
{
mesaj[0] = 123;
verici.write(mesaj, 1);   //mesaj değişkeni yollanıyor

}} 

Alıcı Kodları

#include  <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"  //Modül ile ilgili kütüphaneleri ekliyoruz

int mesaj[1];
RF24 alici(9,10);
const uint64_t kanal = 0xE8E8F0F0E1LL;
int led = 2;

void setup(void){
Serial.begin(9600);
alici.begin();
alici.openReadingPipe(1,kanal);
alici.startListening();
pinMode(led, OUTPUT);
}


void loop(void){
if (alici.available())
{
bool done = false;
while (!done)
{
done = alici.read(mesaj, 1);
if (mesaj[0] == 123)
{
delay(10);
digitalWrite(led, HIGH);
}
else {
digitalWrite(led, LOW);
}
delay(10);

}}}

Devre şemalarını doğru kurup kodlarınızıda bu şekilde yazdıktan sonra 2.devredeki (verici devre) butona basınca 1.devredeki(alıcı devre)led in yandığını göreceksiniz. İyi Çalışmalar !

SİZCE NASIL OLMUŞ?
Beğendim
100%
İlginç
0%
Eh İşte
0%
Anlamadım
0%
Kötü
0%
Berbat
0%
YAZAR HAKKINDA
Muhammed Ali Özen
Muhammed Ali Özen
Adnan Menderes Üniversitesi Mezunuyum Hazerfen Bilim Akademisinde Eğitmen olarak çalışıyorum Arduino Bey youtube kanalının Editörüyüm Zaman Buldukça Aydın bilim sanat merkezinde üstün zekalı çocuklara makeblock eğitimi veriyorum
6 YORUMLAR
  • erhan ak
    26 Eylül 2017 at 09:14

    hocam gerçekten yararlı olmuş. fritzing sema dosyası varmı indirebileceğimiz ? yada hangi pinlerin nereye takıldığını gösteren bir şema ?

  • yakup eses
    26 Eylül 2017 at 13:01

    yine çalışmadı

  • Nazmi
    29 Eylül 2017 at 18:37

    Hocam paylaşım için teşekkürler. DS18B20 ile kablosuz sıcaklık devresi yaptım. Devre sorunsuz çalışıyor. Sormak istediğim vericinin enerjisi kesildiğinde veya kapsama alanından çıktığında alıcı aldığı en son değeri gösteriyor. Yapmak istediğim alıcının verici ile bir şekilde iletişimi kesildiğinde alıcıdaki sıcaklık değeri sıfır olsun. Bunu yapmak mümkün mü?

    • Muhammed Ali Özen
      Muhammed Ali Özen
      5 Ekim 2017 at 01:09

      Kodları bana atabilirisen beraber çözüm bulmaya çalışırız

YORUM YAP