8.06.2013

Arduino Wireless Communication - Wixel and Arduino

Arduino Wireless Communication


Herkese merhaba yeniden. Kablosuz haberleşme çalışmalarımla ilgili olan bir önceki yazımda Wixel'den genel olarak bahsetmiştim. Wixel hakkında bir bilginiz yoksa bu yazımı okumanızı şiddetle tavsiye ediyorum. Arduino kablosuz projesi ile amacım Arduino'yu bilgisayar ile kablosuz olarak haberleşmesini sağlamak. Bunun için iki adet kablosuz haberleşme modülü kullanıyorum. Projenin amacı oldukça basit. Bilgisayardan kablosuz haberleşme modülü aracılığı ile seri port üzerinde bir değer göndereceğim. Bu değer diğer kablosuz modül aracılığı ile okunacak ve Arduino'ya seri haberleşme protokolü aralığı ile aldığı veriyi gönderecek. Arduino eğer aldığı veri "1" ise led ışık vermeye başlayacak. Eğer değer "1" den başka bir değer ise led sönecek. Kısacağı benim açımdan Arduino ile kablosuz haberleşme dünyasına giriş yani bir nevi "Hello World" uygulaması. Fakat bir geçek var ki bu uygulamayı başarı gerçekleştirebiliyorsanız artık kablosuz modülleri her türlü amaç için kullanabilirsiniz.

Gerekli Malzemeler

Wixel
1 Adet Arduino Mega 2560 ya da diğer Arduino boardlarından biri
1 Adet Breadboard
- Arduino Yazılımı
- Wixel Yazılımı

Diğer Arduino projelerime de bakmak isterseniz technologylaboratory.blogspot.com/search/label/Arduino

Projeye başlamadan önce Wixel ile ilgili yapılması gereken kurulumlar var. http://www.pololu.com/docs/0J46. Linkteki kaynak bu konuda oldukça yardımcı. Her adım görsel olarak çok güzel bir şekilde gösterildiği için bu konu hakkında bir Türkçe kaynak oluşturmayacağım. 

Kurulum işlemi tamamlandıktan sonra modülleri programlamak gerekiyor.
Bunun için öncelikle yüklenecek olan programı indirmeniz gerekli. 
http://www.pololu.com/docs/0J46/9.b linkteki sayfadan wireless-serial-v1.3.wxl dosyasını indiriyorsunuz ya da varsa daha yeni sürümünde indirebilirsiniz.


Ardından Wixel'li usb ile bilgisayara bağladıktan sonra id numarası ekranda belirecek. Open butonun tıklayıp indirdiğiniz dosyayı seçmeniz gerekli. Ardından da Write to Wixel butonuna tıklamak Wixeli programlama için yeterli olacak. Bunu her iki modül içinde tekrarlamanız gerekli. Bu hazır kod iki modül arasında kablosuz haberleşmeye olanak veriyor.


Şimdi işin Arduino kısmına gelelim. 

Devre aşağıdaki şekildeki gibi olacak. Bu proje Arduino'nun sadece Wixel modülden gelen veriyi okuması üzeredir. Arduino'dan bilgisayara veri göndermeyeceğim. Çünkü wixel seri portları 3 volt ile haberlemeyi destekliyor. Arduino ise TX pininde 5 volt. gerilim var. Bunun anlamı eğer ben voltajı bölmez isem ve direk olarak bu iki pini (Arduino TX ve Wixel RX) haberleşmek için birine bağlarsam Wixel bozulur kısacası yanar :D Neden projede kullanmadım çünkü şuanda elimde hiç direnç yok :) evet haklısınız acınası bir durumdayım :)


Arduino ile seri portlar üzerinden haberleşme oldukça kolaymış. Neden böyle diyorum çünkü ben daha önce hiç Mega üzerindeki rx tx pinlerini haberleşmek için kullanmamıştım. Hep usb port üzerinden bilgisayar ile haberleşiyordum. Fakat korkucak birşey yok mantık aynı. Sadece Serial dediğimiz zaman usb port anlamına geliyor. Diğer portları kullanmak için Serail1. Serial2. ya da Serial 3  demek ve haberleşmek mümkün. Fakat bu projede usb portu sadece enerji kaynağı olarak kullanacağım. Gönül isterdi harici güç kaynağı kullanmak ve tamamen bilgisayardan uzak bir konumda haberleşmeyi denemek ama şuan elimde güç kaynağı ya da pilde yok :) 

Yazdığım kod aşağıda.

Arduino : 

int incomingByte = 0; // okunan verinin saklanacağı değişken
int ledPin = 13;
void setup() {
        Serial1.begin(9600); // seri portu ayarlıyoruz. Bu değeri unutmayın.
        pinMode(ledPin, OUTPUT);  // Arduino üzerindeki ledi kullanacağız
}
void loop() {
        if (Serial1.available() > 0) { // eğer gelen veri varsa
                incomingByte = Serial1.read(); // gelen veriyi değişkene at
                if(incomingByte == 49){ // eğer değişkendeki veri 49 ise bunun anlamı "1"
                digitalWrite(ledPin, HIGH);  // led ışık versin
                }
                else{ // başka bir değerse
                digitalWrite(ledPin, LOW); // ledi söndür
                }
        }
}

Sıra geldi bilgisayardan wixel'in bağlı olduğu porta veri göndermek. Bunu yapmak için bir seri port emulatörü lazım. https://sites.google.com/site/terminalbpp/. Adresteki program oldukça kullanışlı ve ücretsiz. İndirdikten sonra .exe uzantılı dosyayı çalıştırmak yeterli. Ardından Com Port bölümünden Wixelin bağlı olduğu portu seçmek, baude rate olarak 9600 seçili olması çünkü Arduino'yu o şekilde ayarladık ve son olarak connect butonuna tıklamanız gerekiyor. Ardından alt kısımdaki kutucuğa göndermek istediğimiz değerleri yazmak ve send butonuna tıklamak yeterli. Sıra Arduino üzerindeki led'i gözlemlemekte. Eğer her şey yolundaysa "1" gönderdiğinizde ledin ışık vermesi ör; "9" gönderdiğiniz de ise ledin sönmesi gerekli. 

Projenin son hali. 




Proje ile ilgili videoyu yükleyince burada paylaşacağım. Görüşmek dileği ile :)



Diğer Arduino projelerime de bakmak isterseniz technologylaboratory.blogspot.com/search/label/Arduino


Hiç yorum yok:

Yorum Gönder