Ana Sayfa Gömülü Sistemler Arduino RF İle Uzaktan Kumandalı Tank

RF İle Uzaktan Kumandalı Tank

42
1099

 Merhaba arkadaşlar bu yazımda Rf ile uzaktan kumandalı araba nasıl yapılır kısaca onu anlatacağım. Arabanın mekanik kısmı hakkında durmayacağız. Sadece elektronik kontrol olarak anlatacağım.  Öncelikle controller olarak Pic 16f877 ve programlama dili olarak Pic CCS C kullanacağız.  Kablosuz haberleşme için Udea firmasının ürettiği ATX-34(Verici) ve ARX_34(Alıcı)  RF kitini kullanıyoruz. RF Radio Frequency olarak bilinir.   

Alıcı Verici

 Şimdi bu projede can alıcı kısım tahmin edilen gibi RF kitleri olacak.  Çünkü iki kart arasındaki bilgi alış verişi bu RF kitleri arasında sağlanacaktır. Bunun için RF kitini  sizlere kısaca tanıtmak istiyorum.  RF, dediğimiz gibi Radyo frekensıyla bilgileri taşıyan bir çeşit seri haberleşme kitidir.  Bilgi vericiden alıcıya  kare dalgalar ile taşınır. Verici modül’de, digital data girişi için DIN pini bulunur. DIN pini RF ile gönderilecek sinyallerin kullanıcı tarafından verildiği giriştir.  Gönderilen data formatı şu şekildedir; 

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

ATX-34S

  Burada ki preamble uyandırma kodudur. Yani alıcı data almadığı durumlarda uyku durumundadır. Hiçbir işlem yapmaz. Bunun için öncelikle bir uyandırma kodu gönderilir ve alıcı uyandırılır. Bu kod şu şekil olabilir;  01010101.  Yada kitin datasheet ‘inden farklı uyandırma kodlarıda gönderebilirsiniz.  

  Sencron, bir çeşit şifre niteliği taşır. Mesela biz programda sencron’ u ‘X’ olarak gönderdik.  Bu durumda X in ASC2 codları bir şifre niteliği taşır.  Şifre gönderildikten sonra asıl data gönderilir. Bu data yine istediğiniz şekilde olabilir. Karakter yada sayı. Biz programda data yı yine karakter olarak gönderdik.   

 Geçelim alıcıya;  alıcı modülde, digital data çıkışı için DOUT pini bulunur. DOUT pini RF’ten alınan sinyallerin demodüle edilerek verildiği çıkıştır.

  RF kitinde bilmemiz gereken şimdilik bukadar. Daha fazla bilgi için kitlerin datasheet lerine bakabilirsiniz. Bakabilirsiniz demeyelim mutlaka bakın.  Çünkü genelde bu tür entegrelerin datasheetleri İngizlicedir.  Ama bu firmanın datasheeti Türkçe hazırlanmış. Madem Türkçe hazırlamışlar, okumazsak biz  ayıp etmiş oluruz.   Birde anten boyları ve kitlerin bağlanma şekillerini datasheetlerden öğrenebilirsiniz.   Data sheetler için ;  ARX-34C_3            ATX-34S KILAVUZ         🙂 

  Rf i bu şekilde kısaca anlattıktan sonra sıra tasarlayacağımız elektronik kartlara geldi. İki tane kart tasarlayacağız. Bunlardan birincisi alıcı yani motor sürücü kartı diğeri ise verici yani kumanda kartı olacak.   Alıcı kartta, en önemli entegreler olarak bir adet 16f 877 microcontroller  ve L293d motor sürücü entegresi kullanacağız.  Buradaki motor sürücü entegresinin yaptığı tek şey motora giden akım yönlerini değiştirmektir.   Şu an için size sadece kart tasarımlarının Isıs çizimlerini vereceğim. Eğer  isteyen olursa Arese aktarılmış tasarımları da verebilirim. 

     Kumanda_anakart 

  İki kartımız da kaba taslak proteus çizimi bu şekilde olacak.  Alttaki Pic alıcı üstteki Pic ise verici için kullanılmıştır. Şimdi alıcı ve vericilerinin data uçları içinPic in özel bir pini vardır bu pinler c6 ve c7 pinleridir. Zaten c6 ve c7 pinlerindede  TX ve RX diye yazar. TX (transmitter) yani alıcı bacağı RX(Reciever) alıcı bacağıdır.    ARX ve ATX in paketleri Isısta similasyon olarak tanımlanmadığı için ben Pic lerin alıcı ve verici pinlerini direk birbirlerine bağladım. Similasyonda programı çalıştırmak istiyorsanız başka çareniz yok. 🙂    Eğer RF kitlerinin Microcontrollere nasıl bağlandığını öğrenmek istiyorsanız datasheet’ inden öğrenebilirsiniz. Ve kitleri datasheet’ indeki gibi bağladığınızda her şey gayet güzel bir şekilde çalışacaktır.  Yalnız Ares tasarımına geçerken ARX ve ATX için paket yapmanız gerekiyor.  Yani ayrı bir kroki çizip o şekilde Ares e aktarabilirsiniz. Çünkü dediğim gibi ATX ve ARX Proteus programında tanımlanmamıştır.  

 Şekilde de görüyorsunuz vericide 4 tane düğme bulunuyor.  Bunlar ileri, geri, sağ, sol butonları olacak. Alıcıda ise L293d ye bağlanmış iki motor görüyorsunuz. Bu motorların yön hareketleri ise alıcı pic’ in pin b0, b1, b2, b3 logic bilgileri ile sağlanıyor. Tabi bu logic bilgi dir yani 5V.  

 Şimdi gelelim programa. İki kart ve iki Pic olduğu için iki tane program yazılması gerekiyor. Bu programlardan biri alıcı diğeri ise verici programıdır.   

  Veri Programı; 

"]#include <16f877.h>#fuses xt,nowrt,nowdt,nobrownout,nolvp,nocpd,nodebug,noprotect,noput#use delay(clock=4M)#use rs232(baud=600,parity=N,xmit=pin_c6,rcv=pin_c7,bits=8) // Verici pinin konfigrasyon ayarları belirtiliyor. #use fast_io(a)void main(){while(1){set_tris_a(0xff);if(input(pin_a0)==1){putc(0b01010101);       // Uyandırma kodu gönderiliyorputc('X');                             // sencron gönderiliyorputc('A');                            // data gönderliyordelay_ms(50);}else if(input(pin_a1)==1){putc(0b01010101);      // Uyandırma kodu gönderiliyorputc('X');                            // sencron gönderiliyorputc('B');                            //data gönderiliyordelay_ms(50);}else if(input(pin_a2)==1){putc(0b01010101);putc('X');putc('C');delay_ms(50);}else if(input(pin_a3)==1){putc(0b01010101);putc('X');putc('D');delay_ms(50);}else{delay_ms(2);}}}

 Şimdi bu programda dikkat edilmesi gereken önemli nokta, pic in verici konfigrasyonundaki bound sayısıdır. Bound sayısı bu kit için 2400 e kadar olabilir ve verici ile alıcının aynı bound sayısına sahip olması gerekiyor. 

   Alıcı Programı; 

"]#include <16f877.h>#fuses xt,nowrt,nowdt,nobrownout,nolvp,nocpd,nodebug,noprotect,noput#use delay(clock=4M)#use rs232(baud=600,parity=N,rcv=pin_c7,bits=8, stop=1) // alıcının konfigrasyon ayarları, bound aralığı ve diğer gerekli şeyler belirtiliyor.#use fast_io(b)char e;void main(){set_tris_b(0x00);output_b(0x00);while(1){if(getch()=='X'){e=getch();if(e=='A'){output_high(pin_b0);output_low(pin_b1);output_high(pin_b2);output_low(pin_b3);}if(e=='B'){output_low(pin_b0);output_high(pin_b1);output_low(pin_b2);output_high(pin_b3);}if(e=='C'){output_high(pin_b0);output_low(pin_b1);output_low(pin_b2);output_high(pin_b3);}if(e=='D'){output_low(pin_b0);output_high(pin_b1);output_high(pin_b2);output_low(pin_b3);}}}}

  Bu programda da anlatılandan farklı birşey yapmadık. İki programa göz gezdirirseniz algoritmayı kısa zamanda kavrayabilir ve çözebilirsiniz.    

 Ve böylece Proteus ortamında similasyonu çalıştırdıınızda arabamızı ileri geri, sağa sola hareket ettirmiş olduk.  Teoride tamamlamış olduğunuz projeyi uygulamaya sokmak çok daha kolay olacaktır.  Tek yapmanız gereken uygulama yaparken ne yapmanız gerektiğini bilmek.   Şimdilik benden bu kadar arkadaşlar.

 Uğraşan arkadaşların her türlü yardım talebine açığım ve burada olacağım.  Bu teori meselesini hallettikten sonra uygulamada yardım edeebilirim.  Kolay Gelsin… 

http://www.youtube.com/watch?v=7Wrt3DGHaUk&feature=youtu.be

Ares-Isıs Çizimleri ve programı buradan indirebilirsiniz;   Prototip Araba