Arduino ile RF Kullanımı

Udea’dan aldığım RF Verici Modül ATX-34S ve RF Alıcı Modül NRX-34U ile Arduino Mega’ları hatta bilgisayarı konuşturabiliriz. Ben e-bay’den aldığım usb-serial converter’ı Arduino Mega’yla bilgisayarı konuşturmak için kullanacağım. Bu linkten bakabilirsiniz. Ancak bu yazıda Arduino Mega’lar birbirleriyle iletişime geçecekler. Aslında bakarsak  bu yazıda herkes birbiriyle konuşuyor. Giriş-Çıkışları değiştirerek istediğiniz gibi iletişim kurabilirsiniz. Veri okumak ve göndermek için “Serial COM Port Terminal v1.7” programını kullanabilirsiniz.

Modüllerin datasheetlerini ve picle yapılmış örneklerini Udea’nın sitesinde bulabilirsiniz. Bu modülleri beğendiğimi söyleyebilirim. Birde bu modüllere 17cm’lik helix antenleri taktım. Yurdun en alt katındaki verici ile sürekli gönderdiğim veriyi 4.kattaki alıcı ile saniyede 3-4 defa alabiliyorum (veri uzunluğuna göre değişir).

Sistemin mantığını anlamak için basit bir diyagram;

Udea’nın verdiği datasheetten yani klavuzdan faydalanacağız. İlk olarak verici kısmına bakalım…

Yukarıdaki resimden de anlaşılacağı gibi;

1-Arduino’dan 5v bağlayınız.

2-Arduino’nun ‘TX’ bacaklarından TX3’ü kullanacağız.

3-Arduino’dan çektiğimiz toprağa bağlıyoruz.

4-En ideal menzil ve hız için 17.3 cm’lik 50 ohm empedanslı lambda/4 whip anten önerilmektedir.

Ek olarak bu verici 300-2400 arasındaki baud rate hızlarında kullanılabilir.

Veri gönderirken standart data protokolü şu şekildedir;

TX : preamble + sencron + data1+…..+dataX

Preamble donanımsal senkronu sağlar. Gönderilmesi gereken preamble değeri 5 byte 0x55 veya 0xAA‘dır. Gönderilen 1 ve 0’ların süreleri eşit olmalıdır.

Senkron ise yazılımsal senkronu sağlar. Bu yüzden istediğiniz bir değeri kullanabilirsiniz. Senkron kullanımı zorunlu değildir ancak senkron kullanılmadığı takdirde alınan veriler gürültülü olacaktır. Ben genelde alfabeden bir harf seçiyorum. Kullanım ve kontrol rahatlığı açısından iyi olmakla beraber daha hızlı bir iletişim sağlanmış oluyor. Tek bir harf’in yetmeyeceğini düşünenler olabilir ancak yetiyor. Hiçbir gürültü size engel olmuyor. Senkron için daha uzun bir veri kullanılması performansı düşürdüğünden dolayı tavsiye etmiyorum.

Senkrondan sonra artık göndermek istediğimiz veri’yi gönderebiliriz. Veri gönderirken araya boşluk veya satır girerse preamble ve senkronun tekrar gönderilmesi gerekmektedir.

Aşağıdaki kod verici’nin bağlı olduğu arduino’nun kodlarıdır. Veri’yi istediğiniz şekilde ayarlayabilirsiniz. Ben bu yazıda analog girişe bağlı potansiyometreden gelen veriyi gönderiyorum.

char pre='Q';
int veri;
int i;

void setup() {
Serial.begin(2400);
Serial3.begin(2400);
Serial.flush();
Serial3.flush();
}

void loop() {
if (Serial3.available())
{
for(i=0; i<5; i++)
{
Serial3.print(0xAA);
}
Serial3.print(pre);
veri = analogRead(7);
Serial3.print(veri);
}
}

Alıcı kısmının pinlerine bakarsak;

Yukarıdaki resimden de anlaşılacağı gibi;

1- Vericideki antenin aynısı kullanılabilir.

2-Arduino’dan çektiğimiz toprağa bağlıyoruz.

3-Arduino’dan 5v bağlayınız.

4-RSSI : Sinyal şiddetini analog olarak okuyabileceğimiz pindir. EN : Uyku modunu çalıştırır.

5-Arduino’nun RX’ bacaklarından RX3’ü kullanacağız.

Ek olarak bu alıcı 200-4800 arasındaki baud rate hızlarında kullanılabilir.

Veri gönderirken standart data protokolü şu şekildeydi;

TX : preamble + sencron + data1+…..+dataX

Alıcı tarafında veri nasıl gönderildiyse o sırayla okumalıyız. Preamble’ın kullanıcı tarafında bir görevi olmadığı için sadece senkron ve gönderdiğimiz veri’yi okuyacağız.

Alıcı tarafındaki Arduino Mega’da da kodlar aşağıdaki şekildeki gibidir;

int veri;
char pre;
void setup() {
Serial.begin(2400);
Serial3.begin(2400);
Serial.flush();
Serial3.flush();
}

void loop() {
if(Serial3.available()>1)  // Veri ve senkron gelince okumaya başlıyoruz.
{
pre = Serial3.read();
if(pre == 'Q')
{
veri = Serial3.read();
Serial.print(veri);
}
}
}

Seri iletişim kullanan bu RF’lerin kullanımı epey basit. Menzilleri de beni tatmin etti.

Birde bu yazının yayınlanma tarihinin Heinrich Rudolf Hertz‘in doğum günüyle çakışması hoş tesadüf oldu 🙂

6386 Total Views 1 Views Today

Yorumu formunu geç

  1. Hocam direkt RF Shield almayı neden düşünmediniz? Belki biraz pahalı olurdu ama daha kolay prototiplenirdi diye tahmin ediyorum.

    1. Şimdiye kadar 10 tane shield yaptım. Ben gereksiz harcama olarak görüyorum basit şeyleri ki elimde modüller varsa değerlendirmeye çalışırım. 🙂 Bu modüllere baskı devreyle projem için shield yapmıştım. Yakın bir zamanda onları da paylaşırım…

    • Erkan on 23 Şubat 2014 at 21:33
    • Cevapla

    Merhaba sayın sıte sahibi size bir sorum olucak verici ve alıcı çiftlerinden elimizde 5 takım oldugunu var sayar isek vericilerden bir adetini kullanarak 5 alıcıyı kontrol etme gibi bir şansımız varmıdır var ise nasıldır? şimdiden cevap için teşekkürler.

    1. Yapabilirsiniz. Hatta bu konuda yapılmış örnekler mevcut.
      http://www.instructables.com/id/RF-315433-MHz-Transmitter-receiver-Module-and-Ardu/#step0

Bir cevap yazın

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.