Merhaba.Bu gün kablosuz haberleşmede sıkça kullanılan modüllerden NRF24L01 RF modülünün kullanımı hakkında bahsedeceğim.Bu modülün kullanımı kolay ve menzili (1km) gayet iyi olduğundan projelerinizde rahatlıkla kullanabilirsiniz.Ayrıca fiyatı da gayet uygundur.Düşük güç tüketimi ayrıca 2.4GHz frekans da çalışması bize kolaylık ve kullanış sağlamaktadır.
Arduino ile ilgilenmeye başlayan neredeyse herkes, bir döneminde uzaktan kontrollü araba, uzaktan kontrollü bot veya menzili yüksek olan bir quadrocopter yapmak istemiştir. Bu makalemizde yüksek menzilli uzaktan kontrollü projeler yapmak isteyen arkadaşlar için servoya uzak olan potansiyometre ile servoyu nasıl kontrol edebileceğimizi anlatacağım.
Yani bu makalede iki Arduino’yu NRF24L01 modülü aracılığı ile haberleştireceğiz ve bahsettiğim gibi potansiyometre ile servoyu uzaktan kontrol edeceğiz. Bizim yaptığımız işin basit kısmı fakat RC Car yaparsanız yine aynı mantıkta kalacaksınız ve potansiyometre joystick, servo ise dc motor olacak. Biz burada sadece bir Arduino’dan diğerine veri yollamayı anlatacağız. Veriyi aldıktan sonra işlemek size kalmış.
İki Arduino’yu kablosuz haberleştirmenin bir çok yolu var. Bunlar, gerçekten çok uzak mesafede haberleşebilen fakat fiyatı biraz yüksek olan X-bee modülleri, fiyatları daha da pahalı olan GPS veya GSM modülleri olabilir. Ancak bence bu projede kalite, para ve kullanım olarak güncel zamanlarda çıkmış ve kısa sürede internet üzerinde birçok proje ve alışverişi olan NRF24L01 isimli kablosuz modülü kullanacağım.
- NRF24L01 2.4GHz Transceiver Modül
- Modülün değişik (harici ve pcb) ve de (harici )antenli versiyonu bulunmaktadır.Pcb olanlarda menzil 250 m ,harici modelinde ise menzil 1000 m’ye kadar çıkabiliyor.
- Modülü alıcı ve verici olarak kullanabilirsiniz.
- Ben projemde 1000 m menzili olan harici antenli Radyo Frekans modülünü kullandım.
- Siz isterseniz 250 m menzilli pcb versiyonunu da tercih edebilirsiniz.
KULLANILACAK MALZEMELER
- 2 ADET NRF24L01
- JUMPER KABLO
- 2 ADET KONDANSATÖR (HER İKİ BACAĞINDA V+ PİNİ İLE(BİRLEŞİK) 3V3’E)
- 2 ADET ARDUİNO UNO
- 1 ADET SERVO
- 1 ADET POTANSİYOMETRE
Malzemeleri Satın Al
nRF24L01 | Arduino Uno |
VCC | 3.3 V |
GND | GND |
CS | 7 |
CE | 8 |
MOSI | 11 |
MISO | 12 |
SCK | 13 |
pot=A0 servo=9
Kütüphaneleri buradan indirebilirsiniz.
Kodlar
Verici Kodu
#include <SPI.h>
#include "RF24.h"
int msg[1];
//SCK -> 13//MISO -> 12//MOSI -> 11//CSN -> 7//CE -> 8
RF24 radio(8,7);
const uint64_t pipe = 0xE8E8F0F0E1LL;
int potpin = 0;
int val;
void setup(void){
radio.begin();
radio.openWritingPipe(pipe);
}
void loop(void){
val = analogRead(potpin);
val = map(val, 0, 1023, 0, 179);
msg[0] = val;
radio.write(msg, 1);
}
Alıcı Kodu
#include <Servo.h>
#include <SPI.h>
#include "RF24.h"
Servo myservo;
//SCK -> 13//MISO -> 12//MOSI -> 11//CSN -> 7//CE -> 8
RF24 radio(8,7);
const uint64_t pipe = 0xE8E8F0F0E1LL;
int msg[1];
void setup()
{
myservo.attach(9);
radio.begin();
radio.openReadingPipe(1,pipe);
radio.startListening();
}
void loop()
{
if (radio.available()){
bool done = false;
while (!done){
done = radio.read(msg, 1);
myservo.write (msg[0]);
}
}
}
done = radio.read(msg, 1);
hata veriyor