Xbee ve Zigbee'ye giriş - Tundra blog

Feel the cooling sensation of knowing things...


It is a programming blog btw

Hot

23 Kasım 2013 Cumartesi

Xbee ve Zigbee'ye giriş

Merhaba, bu yazıda Xbee hakkında birşeyler bulacaksınız. Hafif ve eğlenceli bir konu olması için gerekeni yapacağım.
Yazı 3 kısımdan oluşuyor:
1-Xbee hakkında bilgiler
2-"at" komutları (Xbee programlama için)
3-örnek program
Soru ve görüşleriniz varsa, lütfen yorum bırakın :)
1-XBEE hakkında bilgiler
Xbee'yi bilen bilir, kişisel-kurumsal herhangi bir kablosuz ağ kurabilirsiniz. Oldukça da ekonomiktir. Tabi bunlar işin teferruatı. Xbee modüllerini kullandıkça, onun gerçek yeteneklerini açığa çıkaracaksınız. Ve eğer ilgiliyseniz, gerçekten sıkılmayacağınız bir konu.



Xbee/Zigbee'nin tarihinden bahsetmek istemiyorum. Onun yerine Xbee  modüllerini kullanmak hakkında birşeylerden söz edeceğim.
Her Xbee modülü programlanmaktadır. Bu ister bir grafik arayüz, ister bir terminalle olabilir. Neyi programlıyoruz? Başlıca şunları:
1-Tabi ki Xbee modülüne bir isim veriyoruz,
2-Kablosuz ağımızı tanımlayıp numaralandırıyoruz. Bu, diğer XBEE ağları ile karışmaması için yapılmaktadır.
3-Her modülün veri aktaracağı diğer modülü tanımlıyoruz. Normalde, bir modül sadece başka bir modülle haberleşebilir. Tabi ki broadcasting (çoklu yayım)için özel bir parametre girmek gerekiyor.
Bir hatırlatma: Yeni tip XBEE modülleri (versiyon 2.0 ve üstü) kullanılarak bir Mesh ağı oluşturulabilir. Benim kullandığım tip modüller, birazcık ilkel :) version 1.1 Version 2 olmayan modüller için "digimesh" adlı bir yazılıl kullanılmaktadır. Digimesh ile ilgili bir yazı hazırlamaktayım. Sizle paylaşacağım yakın zamanda.
4-Modülün iletişim hızını belirleriz. (baudrate olarak)
Xbee modülünün başlıca programlanma başlıkları bunlardır. Her modül tek tek programlanır. Bu işlem, modülün veri giriş bacağına gönderdiğimiz bir dizi veriden ibarettir. Ve gerekli konfigürasyonları yapılır.

Bir Xbee Explorer

Bu işlemi yapmak için birkaç seçeneğimiz var tabi ki:
1-Öncelikle, Xbee modülünün bağlanacağı bir explorer, veya kendi kuracağınız bir devre gerekiyor. (Modülün besleme voltajları ve bazı pinler kritik derecede hassastır. Bu yüzden bir explorer devresi almanızda fayda var. Yoksa modül zarar görebilir.)
2-Programlamak için "X- CTU" programını kullanabilirsiniz. Bu program bir terminalin aksine, grafiksel bir arayüzle modülü kolayca programlamanızı sağlıyor.

X-CTU arayüzü

3-X-CTU'ya alternatif olarak herhangi bir hiperterminal programı kullanabilirsiniz. Bu programlar, sizin istediğiniz porttan, sizin istediğiniz protokolde iletişim sağlar. Örnek olarak "PuTTy" çok sık kullanılır. Putty programını kullanırken yapmanız gereken: gerekli konfigürasyonları girmek ve açılan terminalde, "at" komutlarını girmektir.

putty3

Her komuttan sonra, modülden "OK" cevabı almak farzdır. :)
 2-"AT" komultarı 
Bu komutlar, xbee modüller için oluşturulan resmi komutlardır. Terminalden direkt olarak konfigüre etmek için bu komutlar kullanılır. Temel 7 tane komut vardır.
+++: Modülü programlamaya hazırlamak için gönderilir.
ATMY: Modülün numaralandırılması için kullanılır.
ATDL: Modülün Haberleşeceği diğer modül için kullanılır. Buna göre bir modül yalnızca bir adrese veri gönderebilir.
(Tabi yeni çıkacak versiyonlarda bu konuda çalışmalar yapılmaktadır.)
ATID: Modüllerin kullanacağı PAN (Kişisel alan ağı) numarası. Ortamdaki tüm modüller aynı ağı kullanmalıdır.
ATBD: Baudrate ayarlamak için kullanılır. Her rate için farklı bir numara vardır.
0:1200 bps
1:2400 bps
2:4800 bps
3:9600 bps
4:19200 bps
5:38400 bps
6:57600 bps
7:115200 bps
ATWR: Gönderdiğiniz verileri( yaptığınız değişiklikleri) kalıcı hafızaya yazar.
ATCN: Konfigürasyonu sonlandırır.
Terminalden gönderdiğiniz her veri olumlu sonuçlanmayacaktır. Ama olumlu sonuçlanan her komuttan sonra, modül size "OK" mesajı gönderir.

Bir deneme programı yazalım. Şuan 2 modülümüz var.
modül 1:
+++
ATMY 1
ATDL 2
ATID 1000
ATBD 3
ATWR
ATCN
modül 2:
+++
ATMY2
ATDL1
ATID1000
ATBD3
ATWR
ATCN
Dikkat edilmesi gereken noktalar
her komuttan sonra ekranda "OK" yazısı görünmelidir.
Her komut dizisine "+++" yazarak başlanır.
HER modülün "ATID" değeri aynı olmalıdır. Yoksa aynı ağda konuşamazlar.
Her modülün baudrate'i aynı olmak zorundadır. Yani ATBD değerleri daima aynı olmalıdır.
Değiştirmeleri yaptıktan sonra Mutlaka "ATWR" ile Bu bilgiler belleğe yazılmalıdır.
Her oturum "ATCN" ile kapatılmalıdır.
Modül numarası: 0000- FFFE(hexadecimal) arası herhangi bir numara olabilir.
Bu durumları gözönünde bulunmanız gerekiyor. Bir ek bilgi de şu: Eski versiyon modüllerde iletişim point-to-point yapılıyor. Yani bunun anlamı, bir modül sadece tek modüle veri gönderebilir.
Birden fazla modüle veri gönderebilme işlemi için özel oluşturulmuş bir adres var. ATDL (destination address) yerine "FFFF" yazdığımızda, bu modül public bir kanalla diğer tüm modüllere verisini gönderir. Bunu "BroadCasting" olarak düşünebilirsiniz.
Hatta size bir büyük-ağ örneği de vereyim. Elimizde 3 modül var ve bunlardan biri merkez olsun. Merkezdeki modül diğer 2 modüle veri gönderiyor ve alıyor.

Modül M:
+++
ATMY 0
ATDL FFFF
ATID 20
ATBD 4
ATWR
ATCN

Modül 1:
+++
ATMY 1
ATDL 0
ATID 20
ATBD 4
ATWR
ATCN

Modül 2:
+++
ATMY 2
ATDL 0
ATID 20
ATBD 4
ATWR
ATCN

Gördüğünüz gibi burada ATMY (modül adresleri) değişti.
Ve yine farketmişsinizdir: Merkez modülün ATDL'si FFFF olarak,
Diğer modüllerin ATDL'leri de 0 olarak yazıldı.
Bunun anlamı: Merkez modül diğer 2 modüle veri gönderebilir. Diğer modüller de sadece merkez modüle veri gönderebilir.
Bu yazıyı güncel tutmaya çalışacağım. İlgilenirseniz blogda birkaç güzel yazı da bulabilirsiniz.


Hiç yorum yok:

Yorum Gönder