Online Data Manager: XBee Modülü Konfigürasyonu ve Haberleşmesi

Serinin üçüncü yazısında XBee modüllerinin konfigürasyonundan ve iki tane XBee modülünün nasıl haberleştiğinden bahsedeceğim. Daha önce neler yaptık derseniz, yazdığımı iki makaleye buradan ulaşabilirsiniz.

Son yazımızda iki tane XBee modülünün önce X-CTU yazılımı ile sonrada PIC 16F877 ile haberleştireceğimizi söylemiştik, şimdi bunun ilk adımı olan X-CTU yazılımı ile iki XBee modülü arasında veri alış/verişi yapalım.

X-CTU yazılımını kurup açtığımızda karşımıza aşağıdaki gibi bir ekran gelecektir.

X-CTU Ana Sayfa

“Select Com Port” menüsünden XBee Dongle’ın takılı olduğu portu seçiyoruz ve “Test / Query” butonuna basıyoruz. Burada dikkat edilmesi gereken nokta “Baud” ayarı. XBee modülleri “default” olarak 9600 baud ile konfigüre edilmiş şekilde gelir. Elbette bu baud’u kendinizde değiştirebilirsiniz. Baud’u doğru seçmenizi gerektiren bir başka nedende bu ayar ile modeme data yazıp/okuyacaksınız. Demek istediğim bu sayfada 115200 baud’u seçtiğiniz, sonra gidim diğer bir sekmede işlem yapmaya kalktınız. Bu durumda hata alacaksınız, burada seçtiğiniz baud’un anlamı şu; “Bütün sekmelerde XBee modülüne erişirken bu baud ile işlem yap.”

“Test / Query” butonuna doğru baud seçip bastığınızda aşağıdaki uyarı penceresi çıkacaktır.

X-CTU Bağlantı Başarılı

Aşağıdaki uyarı penceresi ise yanlış baud’u seçtiğinizde çıkacaktır.

X-CTU bağlantı başarısız

Yukarıdaki pencereyi ilk gördüğümde çok korkmuştum ve XBee modülünün bozulduğunu düşündüm açıkçası ama sonradan anladım ki basit bir baud hatasıymış  🙂 Ben korkmuştum siz görünce korkmayın… Programın ikinci sekmesinde ise “Range Test” menüsü. Bu menüden iki tane XBee modülünün ne kadar uzaklıktan birbiri ile haberleşebilir test edebilirsiniz.

X-CTU Range Test

Start tuşuna bastığınız andan itibaren 012345…. diye giden 32 byte’lık karakter dizisini gönderip aynı karakter setini cevap olarak bekliyor, cevap geldikten sonra tekrar aynı karakter setini sonsuz bir döngü içinde gönderiyor. İki bilgisayardan bu yazılımı açıp her iki bilgisayardan da “START” tuşuna basılarak mesafe kontrolünü yapabilirsiniz. 

X-CTU Range Test

Her iki yazılımda da aynı karakter setini gönderdiğimizde yukarıdaki gibi bir sonuç alıyoruz. Tabi ben bu testi aynı bilgisayarda farklı COM bağlantı noktalarında yaptığım için sonuç %100 çıktı, ikinci bir XBee modülünü laptop’da deneyerek iki XBee’nin haberleşme mesafesini görebilirsiniz.

X-CTU Range Test

Eğer iki XBee arasında yukarıdaki gibi farklı bir veri alış-verişi yaparsanız sonuç başarısız çıkacaktır. Sol taraftaki yazılımda “BURAK” verisini gönderdim, sağ taraftaki yazılımda ise “ÖZKAN” verisini gönderdim bundan dolayı Alınan (Receive) datayı tam tersi olarak programda görüyoruz. Uygulamanın üçüncü sekmesi ise “Terminal” kısmı. Bir çok seri port dinleme programlarında olan bir sekme.

X-CTU Terminal

Bu menüden yazdığınız veriyi ağınızdaki tüm XBee modüllerine gönderilir, konfigürasyonuna göre uygun olan daha doğrusu alması gereken tüm XBee’ler veriyi alırlar. Yine iki tane X-CTU yazılımı açalım ve veri alış-verişi nasıl oluyor görelim.

X-CTU Terminal

Terminal penceresinde giden veriler mavi renkte, alınan datalar ise kırmızı renkte gösterilmektedir. Bu dataların Hexadecimal karışlığınıda görmek isterseniz “Show Hex” butonuna basarak görebilirsiniz. 

X-CTU Terminal

X-CTU yazılımının en can alıcı menüsüne geldik; “Modem Configuration”. Bu menüden XBee modülümüzü konfigüre edebiliyoruz, şimdi bu sekmeyi inceleyelim; 

X-CTU Modem Configuration

Bu menüye baktığımızda 4 tane grup görüyoruz;

  1. Modem Parameters and Firmware: Burada Read butonuna bastığınız zaman XBee modülünün hangi konfigürasyonlara sahip olduğunu görebiliyorsunuz. Aşağıda konfigürasyonu okunmuş (Read butonuna basılmış) bir XBee modülünün X-CTU yazılımında nasıl göründüğünün resmi mevcut. Write butonu ise aşağıdaki konfigürasyonları XBee modülünüze yazmayı sağlıyor. Restore ise XBee modülünüzü fabrika ayarlarını yüklüyor.
  2. Paramater View: “Clear Screen” dediğiniz zaman yaptığınız tüm konfigürasyon değerlerini sıfırlar. “Show Defaults” ise Restore butonuna bastığınızda hangi ayarların yükleneceğini gösterir. Restore butonuna bastıktan sonra ne olduğunu görmek istiyorsanız bu butona basabilirsiniz 🙂
  3. Profile: “Save” butonu ile yaptığınız konfigürasyon ayarlarını bilgisayarınıza kaydedebilirsiniz. Örnek vermek gerekirse projenizde birden fazla kordinatör ve “end device” olabilir tüm hepsine tek tek aynı ayarları yapmak yerine bu ayar dosyasını önce kaydedip, ardından “Load” ile yükleyerek hızlıca XBee modüllerinizin ayarlarını yapmış olursunuz.
  4. Version: Buradaki “Update” işlemi X-CTU yazılım güncellemesi değil onu hemen söyleyeyim. XBee modüllerinin versiyonu, her XBee modülünün farklı farklı versiyonu ve konfigürasyon ayarları olabiliyor.

X-CTU Modem Configuration2

Program konfigürasyon işlemlerini yedi sekme altında toplamış;

  1. Networking & Security
  2. RF Interfacing
  3. Sleep Modes (NonBeacon)
  4. Serial Interfacing
  5. I/O Settings
  6. Diagnostics
  7. AT Command Options

 

 

 

 

Elimde iki tane XBee var bir tanesi kordinatör bir tanesi “end device”. Bunların konfigürasyonlarına bakalım ve üzerinde biraz konuşalım;

X-CTU Modem Configuration

Networking & Security başlığında bazı parametreleri incelemek gerekirse;

ID-PAN ID: Buradaki değer ağınızdaki tüm XBee’ler için aynı olması lazım, aksi takdirde XBeelerin haberleşmesi mümkün değil. PAN ID demek iki tane XBee’nin aynı sınıfta olması demek şeklinde de özetleyebiliriz.

DH – Destination Address High & DL Destination Address Low: Kordinatör olan XBee’de bu değer 0x0000 – 0xFFFF aralığında, bunun sebebi kordinatör cihaz bütün cihazlara veri gönderebilir. End Device ise sadece kordinatör cihaza veri gönderebileceği için bunu 0x0000 – 0x0000 şeklinde ayarlıyoruz.

MY – 16 bit Source Address: Cihazının 16 bitlik (2byte) adresini belirleyebilirsiniz, bu adresi ile kordinatör cihazınız belirli bir end device ile irtibata geçebilir. Hemen ufak bir dipnot belirtelim, kordinatör cihaz “Broadcast” veri gönderebileceği gibi spesifik olarak bir cihaza’da veri gönderebilir. 

CE – Coordinator Enable: Ağınızdaki kordinatör cihaz hangisiyse onun konfigürasyonunda bu ayarı “1” olarak ayarlamanız lazım.

Serial Interfacing başlığında ise şu iki tane özelliği inceleyelim; 

BD – Interface Data Rate: Konunun başında bahsettiğimiz Baud ayarını buradan yapabiliyoruz.

AP – API Enable: XBee’ler iki şekilde haberleşebiliyorlar; birincisi normal seri port haberleşmesi gibi UART üzerinden Ascii karakterleri göndererek. Bu haberleşme protokolü Point-To-Point için uygun olabilir fakat bizim uygulamamızda olduğu gibi Point-To-Multipoint uygulamalarda uygun değil. Bunun sebebi kordinatör spesifik olarak bir cihazdan veri almak isteyebilir. Bunun içinde yapması gereken hangi cihazdan veri alıp-göndermek istiyorsa o cihazın 16 bitlik source adresini girmesi gerekiyor, işte tam bu noktada API haberleşmesi devreye giriyor. 

Ne demek bu API Haberleşmesi? Bu aslında AT komutlarının gönderim biçimine benziyor, normalde seri port’dan biz “Merhaba” yazdığımızda bu verinin Ascii karşılığı seri porttan gönderilir karşı taraf bu datayı alır. API haberleşmesinde ise belli bir komut formatı vardır. Bu format şu şekildedir;

API Mode

Data gönderme formatını incelersek; Göndereceğimiz verinin başında 0x7E adından 2 byte datanın uzunluğu gelecek, ondan sonra API Identifier (0x01 sabit) ve Frame ID byte’ı gelecek. Ben Frame ID byte’ını 0x00 olarak set ediyorum. Ardından 2 byte hangi XBee’ye veri göndereceksek o XBee’nin adresini giriyoruz. Buradaki adres yukarıda bahsettiğimiz MY – 16 bitlik source address eğer kordinatör tüm XBee’lere veri göndermek isterse burada 0xFFFF yazabilirsiniz. Bu durumda tüm XBee’ler veriyi almış olur. 8. byte ise Options byte’ı. 0x01 verdiğimizde ACK’yı kapatmış oluruz. Ardından 100 byte’a kadar göndereceğimiz veriyi giriyoruz ve son olarak Checksum byte’ı ekliyoruz.

Checksum hesabı ise; 0xFF’den 0x7E ve uzunluk byte’ları hariç diğer byte’ları 0xFF’den çıkartarak hesaplanıyor. Örnek vermek gerekirse biz XBee’ya 01234 datasını göndermek isteyelim, bunun için şu veriyi göndermemiz lazım;

"7E000A0100FFFF01303132333405"
Start Delimiter: [0x7E]
Length: [0x000A] 
API Identifier: [0x01] 
Frame ID: [0x00] 
Destination Address: [0xFFFF] 
Options: [0x01] 
Göndermek istediğimiz veri (01234): [0x30, 0x31, 0x32, 0x33, 0x34] 
Checksum: [0x05]

Checksum hesabı ise; 0xFF - (0x30 - 0x31 - 0x32 - 0x33 - 0x34 - 0x01 - 0xFF - 0xFF - 0x00 - 0x01) = 0x05

 

Hadi gelin makalenin sonunda bu data formatında nasıl veri göndereceğiz? Nasıl test edeceğiz ona bakalım. Yine terminal menüsüne gidiyoruz, o menüde bir buton daha vardı; “Assemble Packet” o butona basıp yukarıdaki veriyi kordinatörden -> end device’a göndermeye çalışalım.

Terminal - API

Mavi ile gönderilen veriyi yukarıda inceledik, orada anlatacağım bir şey yok, dikkatinizi çekmek istediğim kısım kırmızı yani end device’ın aldığı veri. Dikkat ettiyseniz orada 0x81’den sonra iki byte 0x00, 0x00 geliyor bu veri size hangi adresten datanın geldiğini söylüyor. O zaman ben End Device’dan veri gönderdiğimde bu kısmın 0x00, 0x03 olmasını beklerim. Bakalım öyle olacak mı? (Elbette olacak önceden denedim 🙂 )

Terminal API1

Sanırım baya bir şey öğrendik, benim içinde iyi oldu bazı şeyleri unutma noktasına gelmişimn 🙂 Pek tabi bir çok konfigürasyon ayarlarını anlatmadım, bunun için en ciddi kaynak data sheet. Onu da buradaki adresten indirebilirsiniz.

Bir sonraki başlıkta ise bu verileri X-CTU yazılımından değil PIC mikro işlemcisi ile yapacağız.

Kolay Gelsin, İyi Çalışmalar…

13 Responses to Online Data Manager: XBee Modülü Konfigürasyonu ve Haberleşmesi
  1. [...] http://www.burakozkan.net/online-data-manager-xbee-modulu-konfigurasyonu-ve-haberlesmesi/ [...]... ceng314station.wordpress.com/2013/03/03/xbee-ile-ilgili

Bir cevap yazın

Your email address will not be published. Please enter your name, email and a comment.