Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Bluetooth İle Haberleşme

Benzer bir sunumlar


... konulu sunumlar: "Bluetooth İle Haberleşme"— Sunum transkripti:

1 Bluetooth İle Haberleşme
Aslı Ergün

2 Bluetooth Bluetooth kısa mesafeli haberleşmeler için geliştirilmiş, 2,4 – 2,48 GHz ISM bandını kullanan bir haberleşme protokolüdür. Bluetooth modülleri arasındaki iletişim mesafesi eğer arada bir engel yoksa yaklaşık 20 metredir. Geliştirilen yeni teknolojiler ile bu mesafe yaklaşık 100 metreye kadar arttırılmıştır.

3 HC-05 ve HC-06 Arduino projelerinde genellikle HC-05 veya HC-06 Bluetooth modülleri kullanılır. HC-05 ve HC-06 Bluetooth modülleri özellik olarak hemen hemen birbirinin aynısıdır. Tek fark, HC-05 hem kendisine gelen bağlantı isteklerine cevap verirken hem de başka Bluetooth cihazlarına bağlantı isteği yollayabilmesidir. HC-06 Bluetooth modülü ise yalnızca kendisine gelen bağlantı isteklerini cevaplayabilir, başka bir Bluetooth modülüne bağlantı isteği yollayamaz. Kısacası HC-05 hem master (yönetici) hem de slave (köle) modunda çalışabilirken, HC-06 sadece slave (köle) modunda çalışabilmektedir.

4 HC-05 ve HC-06 Bluetooth modüllerinin ortak özellikleri
• 2,4 GHz haberleşme frekansı (ISM) • Hassasiyet: ≤-80 dBm • Çıkış gücü: ≤+4 dBm • Asenkron hız: 2,1 MBps / 160 KBps • Senkron hız: 1 MBps / 1 MBps • Çalışma gerilimi: 1,8 - 3,6 V (Önerilen 3,3 V • Akım: 50 mA • Kimlik doğrulama ve şifreleme

5 Bluetooth Shield Arduino üzerine doğrudan takılabilen Bluetooth Shield

6 HC-05 Bağlantı

7 Bluetooth Eşleştirmesi
Bluetooth modüllerinin bilgisayar veya telefon gibi Bluetooth özelliği bulunan cihazlara bağlanabilmesi için, öncelikle bu cihazların Bluetooth modülüyle eşleştirilmesi gerekmektedir. Akıllı telefonlarda bu işlem normal bir telefon eşleştirir gibi yapılabilmektedir fakat bilgisayar ile eşleşme yapıldığında bilgisayar, Bluetooth modülü için otomatik olarak COM (haberleşme portu) oluşturmaktadır. Haberleşme için kullanacağımız bilgisayar programları da bu port üzerinden Bluetooth modülüne bağlanacaktır. Bluetooth modülünün parolası değiştirilmemiş ise fabrika ayarı parola şeklindedir. Eşleşme sırasında modülün parolası sorulduğunda, bu şifre girilmelidir.

8 Bluetooth Eşletirmesi-2
Eğer eşleştirme işlemini başarıyla tamamlamış ve gerekli yazılımlar indirilmiş ise ilk bağlantımızı kurabiliriz. Bunun için Bluetooth modülünün sadece VCC ve GND pinlerinin takılması yeterlidir. Bu pinler takıldığında Bluetooth modülü üzerinde bulunan ışık yanıp sönmeye başlamaktadır. Bu ışığın hızlı bir şekilde yanıp sönmesi bağlantı isteklerine açık olduğunu göstermektedir. Akıllı cihazımızdaki program aracılıyla Bluetooth modülüne bağlanmayı deneyiniz. Birkaç saniye bekledikten sonra, eğer cihazımız ile Bluetooth modülü başarılı bir şekilde bağlanmış ise, modül üzerindeki ışık yanıp sönmeyi bırakıp sadece yanacaktır.

9 Bluetooth Eşletirmesi-2
Eşleştirilme işlemleri bittikten sonra, Bluetooth ile akıllı cihazların haberleşmesini sağlayacak ara programlara ihtiyaç duymaktayız. Bu programlar, normal bir seri haberleşme yapan bilgisayar programları olarak düşünülebilir. Windows kullanıcıları Bluetooth ile haberleşmek için, ücretsiz olarak 'Tera Term' yazılımını indirebilirler. Veya csharp’ta seriport objesi kullanan bir program yazılabilir.

10 Tx-Rx kullanarak iletişim
void setup() { Serial.begin(115200); pinMode(13, OUTPUT); pinMode(12, OUTPUT); pinMode(11, OUTPUT); pinMode(10, OUTPUT); digitalWrite(11, LOW); digitalWrite(13, LOW); digitalWrite(12, LOW); digitalWrite(10, LOW); } int led = 1; void loop() if(Serial.available()) led=Serial.read(); switch(led) { case 'F': digitalWrite(13, LOW); digitalWrite(10, LOW); digitalWrite(12, HIGH); break; case 'B': digitalWrite(12, LOW); digitalWrite(10, HIGH); case 'L': digitalWrite(13, HIGH); case '4': }

11 SoftwareSerial Kütüphanesiyle Haberleşme
Bilgisayarla seri haberleşme yaptığımız gibi, diğer elektronik elemanlarla da seri haberleşme yapabiliriz. Bunun için haberleşilecek elemanların Tx ve Rx uçlarını çapraz bir şekilde Arduino'nun Tx ve Rx pinlerine takmalıyız. Arduino UNO'da sadece bir çift Tx ve Rx (1. ve 0. pinler) bulunur. Bu pinler aynı zamanda USB üzerinden bilgisayarla haberleşmemizi sağlayan pinlerdir. Yani bilgisayarla haberleşme halinde bulunan Arduino'nun 0 ve 1. pinler kullanılamaz. Arduino MEGA gibi gelişmiş kartlarda birden fazla Tx Rx çifti bulunduğu için bu cihazlar, hem harici olarak başka modüllerle seri haberleşebilirken hem de bilgisayara veri yollayabilir. "SoftwareSerial" kütüphanesi Arduino Uno gibi sadece bir çift Tx Rx pini bulunan kartlar için geliştirilmiştir. Bu kütüphane yardımıyla Arduino'nun diğer pinleri de Tx ve Rx olarak kullanılabilmektedir.

12 SoftwareSerial Kütüphanesi kullanımı
"#include <SoftwareSerial.h>" komutuyla kütüphaneyi kodumuza ekledikten sonra seçeceğimiz iki pini Rx ve Tx olarak tanımlayabiliriz. Bunun için; SoftwareSerial seriHaberlesmeNesnesi(10, 11); Komutu kullanılır. Burada "seriHaberlesmeNesnesi" yerine farklı bir değişken ismi verilebilir. Bu değişken seri haberleşme fonksiyonlarını çağırabilmek için kullanacağımız nesnedir. Nesne kurulumuna yazılan 10 ve 11 numaraları pin sayılarını göstermektedir. Örneğin burada 10. pin Rx olarak, 11. pin ise Tx olarak tanımlanmıştır.

13 SoftwareSerial Kütüphanesi kullanımı-2
#include <SoftwareSerial.h> SoftwareSerial yeniSeriPort(10, 11); /* Arduino -> Diğer Cihaz 10(Rx) -> Tx 11(Tx) -> Rx */ void setup() { Serial.begin(9600); /* bilgisayarla haberleşmeyi başlatıyoruz */ yeniSeriPort.begin(9600); /* Yeni oluşturduğumuz haberleşme portunu açıyoruz */ yeniSeriPort.println("Merhaba Dunya"); /* Yeni porta mesaj yolluyoruz */ } void loop() while(yeniSeriPort.available()){ /* Yeni porta gelen bir mesaj var mı */ Serial.write(yeniSeriPort.read()); /* Yeni porta gelen mesaj var ise mesaj bilgisayara yollanıyor */ delay(1); yeniSeriPort.println("selam"); /* Yeni porta "selam" mesajı yollanıyor */ delay(100);

14 Birden fazla Software Serial nesnesi
"SoftwareSerial" kütüphanesi kullanılarak birden fazla seri port aynı anda açılabilir. Bunun için her bir port için yeni bir nesne oluşturmalıyız. Bu nesnelere de Rx ve Tx için farklı pinler atamalıyız. Arduino donanımsal haberleşme portları için hafızasında buffer denilen özel alanlar bulunur. Porttan gelen mesajlar otomatik olarak bu alanlara kaydedilir. Software Serial kütüphanesi yazılımsal haberleşme oluşturduğu için donanımsal haberleşme kadar başarılı olmamaktadır. Aynı anda iki Software Serial portu dinlenemediği için, portlar arasında geçiş yapmak için listen() fonksiyonu kullanılır. Bu fonksiyon tanımlandığında, tanımlanan nesnenin portu dinlenmeye başlanır. Porta gelen mesajlar otomatik olarak kaydedilir. Dinlenme işlemi bittiğinde listen() fonksiyonu diğer nesneler için kullanılabilir. Böylece tüm Software Serial portları sırayla dinlenir.

15 Örnek-1 #include <SoftwareSerial.h>
SoftwareSerial portbir(10,11); /* Port Bir: Arduino -> Diğer Cihaz 10(Rx) -> TX 11(Tx) -> RX */ SoftwareSerial portiki(8,9); Port İki: 8(Rx) -> TX 9(Tx) -> RX void setup() { Serial.begin(9600); /* Bilgisayar ile haberleşmeyi başlatıyoruz */ portbir.begin(9600); /* birinci yazılımsal haberleşme portu başlatılıyor */ portiki.begin(9600); /* ikinci yazılımsal haberleşme portu başlatılıyor */ } void loop() { /* portbir dinleniyor */ portbir.listen(); Serial.println("Birinci porttan gelen mesaj:"); while (portbir.available() > 0) { char karakter = portbir.read(); Serial.write(karakter); } Serial.println(); /* portiki dinleniyor */ portiki.listen(); Serial.println("ikinci porttan gelen mesaj:"); while (portiki.available() > 0) { char karakter = portiki.read();

16 Örnek-2 switch(led) { case 'F': digitalWrite(5, LOW); digitalWrite(6, LOW); digitalWrite(7, HIGH); Serial.println("pin 12"); break; case 'B': digitalWrite(7, LOW); digitalWrite(6, HIGH); Serial.println("pin 10"); case 'L': digitalWrite(5, HIGH); Serial.println("pin 13"); case '4': } #include <SoftwareSerial.h> #define rxPin 10 #define txPin 11 SoftwareSerial BTSerial(rxPin,txPin); // rx | tx void setup() { //Serial.begin(115200); Serial.begin(9600); BTSerial.begin(9600); //BTSerial.begin(38400); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); digitalWrite(5, LOW); digitalWrite(6, LOW); digitalWrite(7, LOW); } int led = 1; void loop() Serial.println("test1"); if(BTSerial.available()) Serial.println("test2"); led=BTSerial.read();

17 Telefon Kontrollü Işık Projesi

18 #include <SoftwareSerial
#include <SoftwareSerial.h> SoftwareSerial bluetoothModulu(10, 11); /* Arduino -> Bluetooth modulu 10 (Rx) -> Tx 11 (Tx) -> Rx */ const int LED1 = 2; const int LED2 = 3; const int LED3 = 4; void setup() { bluetoothModulu.begin(9600); /* Bluetooth haberleşmesi */ pinMode(LED1, OUTPUT); pinMode(LED2, OUTPUT); pinMode(LED3, OUTPUT); } char okunanKarakter; /* okunan verilerin kaydedileceği değişken */ void loop() while(bluetoothModulu.available()>0){ /* Yeni veri var mı */ okunanKarakter = bluetoothModulu.read(); /* Yeni veriyi okunanKarakter degiskenine kaydet */ switch(okunanKarakter){ /* Okunan karaktere göre işlem yap */ case 'a': /* gelen karakterin işlem karşılığı */ digitalWrite(LED1, HIGH); bluetoothModulu.println("LED 1 yakildi"); break; case 'b': digitalWrite(LED1, LOW); bluetoothModulu.println("LED 1 sonduruldu"); case 'c': digitalWrite(LED2, HIGH); bluetoothModulu.println("LED 2 yakildi"); case 'd': digitalWrite(LED2, LOW); bluetoothModulu.println("LED 2 sonduruldu"); case 'e': digitalWrite(LED3, HIGH); bluetoothModulu.println("LED 3 yakildi"); case 'f': digitalWrite(LED3, LOW); bluetoothModulu.println("LED 3 sonduruldu"); } /* Switch sonu */ }/* While sonu*/ }/* Loop sonu */


"Bluetooth İle Haberleşme" indir ppt

Benzer bir sunumlar


Google Reklamları