Arduino NRF24L01 Kullanımı

Arduino NRF24L01 Kullanımı

Arduino ile kablosuz veri transferinde kullanılan bu modül için bu yazı devamında arduino nrf24l01 kullanımı detayları ve çift yönlü olarak karşılıklı kesin veri iletimine ulaşabileceksiniz. Uygun anten kullanımı ile metrelerce hatta kilometre mesafesinde komut gerçekleştirebilirsiniz.

Arduino NRF24L01 Kullanımı Çift Yönlü Garantili Haberleşme

Kablosuz veri iletiminde transferde sorun olması gibi sorunlar nedeniyle bazen stabil çalışma söz konusu olmuyor. Bunun önüne geçmek ve kontrol sağlamak için en azından mesajın karşıya gidip gitmediğini kontrol eden ve bize ileten bir kodlama ile çözüm bulmaya çalıştım.

Bu yazımda hem çift taraflı yani alıcı verici olarak tek yönlü değil iki arduino’nun da birbirine mesaj gönderebildiği yazılımı sizlerle paylaşacağım. Böylece komut gönderdiğimizde karşı tarafa komut geldi mi sorup cevap alabileceğimiz bir yazılım olacak.

Denemelerini yaptım ve sizlerle görseller ile paylaşıyorum. Aklınıza takılanları yazı devamındaki yorum alanından sorabilirsiniz.

Kodlamanın iç kısmında açıklamaları görebilirsiniz bunun yanında detaylı olarak hangi kod kısmının ne işe yaradığını da size anlatmaya çalışacağım.

Arduino NRF24L01 Kullanımı
nrf24l01 verici

 

Arduino NRF24L01 Kullanımı
nrf24l01 alıcı
Arduino NRF24L01 Kullanımı
Alıcı kısım komut alıyor ve led yanıyor

 

Arduino NRF24L01 Kullanımı
İlk komut gidiyor ve led yanıyor. Alıcı taraf ledin yandığını mesaj olarak vericiye gönderiyor ve ekranımıza yazısı çıkıyor.

 

Arduino NRF24L01 Kullanımı
İkinci mesaj gidiyor ve yanan led söndürülüyor. Tekrar vericiye mesaj gönderiyor ve ledin söndüğü bilgisini teyit edip ekrana yazdırıyor.

NRF24L01 Çift Yönlü Haberleşme

Verici Kodları:

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#define button 4
RF24 radio(7, 8); // CE, CSN
const byte addresses[][6] = {"00001", "00002"};

int butonDurum = 0;
int rapor=0, kontrol=0, gelen=0;
void setup() {
Serial.begin(9600);
pinMode(button, INPUT);
radio.begin();
radio.openWritingPipe(addresses[0]); // 00002
radio.openReadingPipe(1, addresses[1]); // 00001
radio.setPALevel(RF24_PA_MIN);
}
void loop() {

delay(5);
radio.stopListening();
butonDurum = digitalRead(button);
//Serial.print("buton durum=");
//Serial.println(butonDurum);
delay(75);
if(butonDurum == HIGH){
  rapor=1;
  gonder();
}
  
if (kontrol ==1 ){
  
delay(5);
radio.startListening();
if ( radio.available()) {
while (radio.available()) {
radio.read(&gelen, sizeof(gelen));
Serial.print("Gelen Mesaj= ");
Serial.println(gelen);
delay(100);
}
}

if (gelen==1){
  Serial.println("Komut İletildi. Led Yandı!");
  kontrol=0;
  gelen=0;
  delay(10);
}
if (gelen==2){
  Serial.println("Komut İletildi. Led SÖNDÜ!");
  kontrol=0;
  gelen=0;
  delay(10);
}
}
}

void gonder(){
  radio.stopListening();
  radio.write(&rapor, sizeof(rapor));
  Serial.print("Gönderilen Mesaj= ");
  Serial.println(rapor);
  kontrol=1;
  delay(5);
  
}



 

Alıcı Kodları:

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#define led 4
RF24 radio(7, 8); // CE, CSN
const byte addresses[][6] = {"00001", "00002"};

int butonDurum = 0;
int rapor=0, gelen=0;
int ac=0;

void setup() {
Serial.begin(9600);
pinMode(led, OUTPUT);
digitalWrite(led, LOW);
radio.begin();
radio.openWritingPipe(addresses[1]); // 00002
radio.openReadingPipe(1, addresses[0]); // 00001
radio.setPALevel(RF24_PA_MIN);
}
void loop() {
  

delay(5);
radio.startListening();
if ( radio.available()) {
while (radio.available()) {
radio.read(&rapor, sizeof(rapor));
Serial.print("butonDurum=");
Serial.println(rapor);
}
}
if (rapor==1){
  Serial.println("Led yak mesajı geldi.");

 
  if(ac==0){
  digitalWrite(led, HIGH);
  ac=1;
  gelen=1;
  led_yandi();
  }
  else if(ac==1){
    digitalWrite(led, LOW);
    ac=0;
    gelen=2;
    led_yandi();
  }
  
  delay(50);
}

}

void led_yandi(){
  
  radio.stopListening();
  radio.write(&gelen, sizeof(gelen));
  delay(10);
  gelen=0;
  rapor=0;
  
}

 

Günlük çalışmalarım ve paylaşımlarım için beni youtube ve instagramdan takip edebilirsiniz.

SENDE YORUM EKLE..

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

The maximum upload file size: 5 MB. You can upload: image. Links to YouTube, Facebook, Twitter and other services inserted in the comment text will be automatically embedded. Drop file here