Arduino Dersi 10: NRF24L01 Kablosuz Radyo Frekans Alcı Verici Diziler Size Of Komutu

Merhaba arkadaşlar. Bugün sizlere dizilerden ve benim en çok sevdiğim oyuncak olan NRF24L01 RF alıcı verici modülden bahsedeceğim. Bu modül fiyatı ve kullanım kolaylığından dolayı arduinoda en çok kullanılan rf alıcı verici modülüdür. Uzantan kumandalı araba, multikopter, tekne vb. yapabilmek için bu modüle ihtiyaç duyulmaktadır. Ya da bir akıllı ev projesinde evin farklı yerlerinde farklı görevleri olan arduinoları birbirleri ile haberleştirebilirsiniz. İnternette bu modül genel olarak tek led açıp kapatmak amacı ile kullanıldığı için birden fazla farklı veriyi aynı anda nasıl göndereceğiniz pek anlatılmamıştır. Kodlarımızda dizileri kullanacağımız için ilk önce size dizilerin ne olduğunu ve nasıl kullanıldığını anlatmak istedim.
Diziler programlamada kümeleri ifade etmektedir. Çok fazla elemanı kısa bir şekilde yazarak bize kolaylık sağlamaktadır. İlk önce dizinin kaç elemanlı olduğu tanımlanır ve bu elemanlar sırasıyla yazılır. Daha sonra bir elemanı çağırmak istediğimizde dizinin kaçıncı elemanı olduğunu belirterek çağırırız. Programlama dilinde sıralama ve sayma 0 dan başlar. Yani atıyorum üç elemanlı bir küme olsun, bunun ilk elemanı sıfırıncı, sonraki birinci, en sonuncu ikinci eleman olarak adlandırılır. Dizi kodunu diziadı[dizi eleman sayısı]={sıfırıncı eleman, birinci eleman, .....vb} şeklinde yazarız. Örnek vermek gerekirse 4 elemanlı X adında bir dizimiz olsun ve elemanları sırayla A,B,C,D olsun. Bunu X[4]={A,B,C,D,} şeklinde tanımlarız. Daha sonra buradan bir eleman çağırmak istersek kaçıncı elman olduğunu belirterek çağırıyoruz. Mesala örneğimizdeki A elemanını çağırmak için kodlarımız arasında X[0], B elemanı için X[1] gibi kaçıncı elman olduğunu söyleyerek çağırıyoruz. Dizimizin elemanlarını daha sonra da tanımlayabiliriz. Mesela dizimizin ilk elemanı bir A0 pininden okunacak analog değerler olabilir ve bunu X[0]=analogRead(A0); şeklinde daha sonra tanımlayabiliriz. Eğer tüm elemanları birden çağırmak isteseydik sizeof(X) komutu ile çağırabilirdik.

Dizileri iyice anladığımıza göre şimdi NRF24L01 entegresini ve dizileri kullanarak iki arduino nasıl haberleşir onu öğrenelim. Ben haberleşme kodlarının ana kısmını hep kopyala yapıştır şeklinde kullanıyorum. Bu kodlar ileri düzey olduğu için neyin ne olduğunu ileri düzey eğitim kısmında anlatacağım. Kodlardan önce NRF24L01 entegresini kullanabilmek için NRF24L01 kütüphanesini indirip kurmamız gerekiyor. Kütüphaneler arduinonun yaygınlaşmasındaki en önemli faydalarından biridir. Normalde satırlar boyu süren yazılımlar paket haline getirilip basit kodlarla çalıştırılabilir hale getiriliyor. Arduinonun ana programı bile kütüphane ile çalışmaktadır. Mesela digitalWrite komutu yazdığınızda arkada birçok kod aktif olmaktadır. Siz hepsini digitalWrite yazarak kullanmış olursunuz. Bazı kütüphaneler arduinonun kendi programında hazır olarak var. Olmayanları da indirip arduinonun alt dosyaları arasında libraries klasörüne kopyalayarak eklemiş oluyoruz. NRF24L01 kütüphanesi 2 parçadan oluşmaktadır. https://drive.google.com/drive/folders/0B00q2cG-Cm4sRTNiOXA2VW1xR0k?usp=sharing adresinden indirip libraries klasörüne atmalısınız. Kütüphanelerimizi çağırmak için de #include komutunu kullanmaktayız. Aşağıdaki örnekle daha iyi anlayacaksınız. Daha sonra kodlarımız iki arduino için farklı olacağı için alıcı verici şeklinde paylaşacağım. Örnek olarak da vericide A0 ve A1 pinlerinden gelen analog veriyi diğer arduinoya gönderip vericide D3 ve D5 e bağlı iki motor süreceğim. Bir tanede vericinin A2 pinine buton bağlayıp alıcıda D4 e led bağlayıp ledi yakacağım. Kodların yanına da açıklamalarını bırakıyorum. Bağlantıyı da aşağıdaki resime göre yapabilirsiniz. Not: Entegre 3.3v ile çalışmaktadır. Eğer arduinonuzda 3.3v çıkışı yoksa PWM verebilen bacaklardan analogWrite(pin numarası, 168); kodu ile 3.3v elde edebilirsiniz.


--------------------------------VERİCİ(Kumanda)--------------------------------------

#include  <SPI.h> // SPI  entegrenin iletişim protokollerini çağırdık. Arduino kendi kütüphanesin mevcut
#include <nRF24L01.h> // nRF24L01 kütüphanesini çağırdık.
#include <RF24.h> // RF24 kütüphanesini çağırdık.
int mtr[3]; //Göndereceğimiz mesaj değişkenini 3 elemanlı bir dizi olarak tanımladık.
RF24 radio(7,8); //RF24 kütüphanesi tarafından kullanılacak olan 2 pinin 9. ve 10. pinlerin olduğunu belirttik.
const uint64_t pipe = 0xE8E8F0F0E1LL; // Başka arduinolar ile karışmasın diye kendimiz bir kanal belirliyoruz.

void setup(){
 radio.begin(); // Kablosuz iletişimi başlattık.
 radio.openWritingPipe(pipe); // Kablosuz iletişimin kanalını açtık.
 pinMode(A0, INPUT);  // A0 pinini giriş olarak tanımladık
 pinMode(A1, INPUT);  // A1 pinini giriş.
 pinMode(A2, INPUT);  // A2 pinini giriş.
 }

void loop(){
mtr[0] = analogRead(A0); // mtr dizisinin 0. elamanına A0 dan gelen analog veriyi atadık.
mtr[1] = analogRead(A1);  // mtr dizisinin 1. elamanına A1 dan gelen analog veriyi atadık.
mtr[2] = digitalRead(A2);  // mtr dizisinin 2. elamanına A2 dan gelen digital veriyi atadık.
 radio.write(mtr, sizeof(mtr));   // mtr dizisinin tüm elemanlarını gönderdik.
 } 

-----------------ALICI(Motor ve Ledin Bağlı Olduğu Arduino----------------------

#include  <SPI.h> // SPI  entegrenin iletişim protokollerini çağırdık. Arduino kendi kütüphanesin mevcut
#include "nRF24L01.h" // nRF24L01 kütüphanesini çağırdık.
#include "RF24.h" // RF24 kütüphanesini çağırdık.
int mtr[3]; //Alacağımız mesaj değişkenini 3 elemanlı bir dizi olarak tanımladık.
RF24 radio(7,8); //RF24 kütüphanesi tarafından kullanılacak olan 2 pinin 9. ve 10. pinlerin olduğunu belirttik.
const uint64_t pipe = 0xE8E8F0F0E1LL; // Başka arduinolar ile karışmasın diye kendimiz bir kanal belirliyoruz.

void setup(){
 radio.begin(); // Kablosuz iletişimi başlattık.
 radio.openWritingPipe(pipe); // Kablosuz iletişimin kanalını açtık.
 pinMode(3, OUTPUT);  // 3 pinini giriş olarak tanımladık
 pinMode(5, OUTPUT);  // 5 pinini giriş.
 pinMode(4, OUTPUT);  // 4 pinini giriş.
 }

void loop(){

//Önce radyo dinlemesini ve mtr verisini alırsa belitrlen işlemleri yapmasını söylüyoruz. Ben kopyala yapıştır yapıyorum. Almak istediğiniz değişken dizi ismini değiştirmeyi unutmayınız.
 if (radio.available()){
   bool done = false;    
   while (!done){
     done = radio.read(mtr, sizeof(mtr)); }}

// Buraya arduinoya yaptıracağımız işleri yazdırıyoruz.
if(mtr[2]==HIGH){digitalWrite(4, HIGH);} // Kumandadan gelen verinin üçüncü, program dilinde ikinci bileşeni olan buton verisi HIGH ise ledimizi yak dedik.
mtr[0]=map(mtr[0],0,1023,0,255); // Kumandadan gelen 10 bitlik veriyi çıkış yapabilmek için 8 bitlik hale getirdik.
mtr[1]=map(mtr[1],0,1023,0,255); // Kumandadan gelen 10 bitlik veriyi çıkış yapabilmek için 8 bitlik hale getirdik.
analogWrite(3, mtr[0]); // 0. elemanı 3. pindeki motora yazdırdık.
analogWrite(5, mtr[1]); //1. elemanı 5. pindeki motora yazdırdık.
}
--------------------------------------------------------------------------------------------

Sizde bu kodları anlayıp kendi projenize göre düzenleyerek uzaktan kumandalı araba, multikopter gibi projeler yapabilirsiniz. Anlamadığınız yerleri, ekleyip çıkarmak istediğiniz her şeyi yorum kısmından veya iletişim formundan bize iletebilirsiniz...

COMMENTS

BLOGGER: 3
Loading...
Ad

Başlangıç Seviye,10,Ders,10,Hakkımda,1,İletişim,1,Orta seviye,3,Proje,1,Püf Nokta,2,
ltr
item
Arduino Dersleri: Arduino Dersi 10: NRF24L01 Kablosuz Radyo Frekans Alcı Verici Diziler Size Of Komutu
Arduino Dersi 10: NRF24L01 Kablosuz Radyo Frekans Alcı Verici Diziler Size Of Komutu
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMv-cCUCKM5ZWiEXIAOC-eaAcnbKvtNKhdHcoZZmLn0Wy4PVz_0TxuQOPKJwzfPx1NYwdqUQbUlpUQ_QhvW1x_rFAMggHEVtrPEOunrWv2SzX8nllPLyHFP46LDlCeBWQk6xQphlrt7X9h/s320/DERS10.png
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMv-cCUCKM5ZWiEXIAOC-eaAcnbKvtNKhdHcoZZmLn0Wy4PVz_0TxuQOPKJwzfPx1NYwdqUQbUlpUQ_QhvW1x_rFAMggHEVtrPEOunrWv2SzX8nllPLyHFP46LDlCeBWQk6xQphlrt7X9h/s72-c/DERS10.png
Arduino Dersleri
http://arduinodersi.blogspot.com/2017/03/arduino-dersi-10-nrf24l01-kablosuz.html
http://arduinodersi.blogspot.com/
http://arduinodersi.blogspot.com/
http://arduinodersi.blogspot.com/2017/03/arduino-dersi-10-nrf24l01-kablosuz.html
true
3083925267398540913
UTF-8
Tüm Yayınlar Yüklendi Başka Yayın Bulunamadı Tüm Yayınları Görüntüle Daha Fazla Oku Yanıtla Yanıtı İptal Et Sil By Ana Sayfa Sayfada Yayında üm Yayınları Görüntüle Sizin İçin Önerilen Etiket Arşiv Site İçinde Ara Tüm Yayınlar Aramanızla İlgili Yazı Bulunamadı Anasayfaya Dön Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Takipçiler Bizi Takip Edin THIS CONTENT IS PREMIUM Please share to unlock Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy