Bluetooth İle Haberleşme

Slides:



Advertisements
Benzer bir sunumlar
Hazırlayan ve Sunan Ali Yasin Çakılcı HUNROBOTX
Advertisements

Bölüm 2 C Dilinin Temelleri
PORT ve KONNEKTÖRLER SAMSUNG AKADEMİ İstanbul Emin CELİLOĞLU
Bölüm 2 C Dilinin Temelleri Genel Kavramlar
EMİN CELİLOĞLU - IT Eğitmeni SAMSUNG AKADEMİ Emin CELİLOĞLU IT Eğitmeni KONNEKTÖRLER.
ARDUINO İLE ANALOG ÇIKIŞ VERMEK
16F628 TANIMLAMA KISMI Devrenizi çalıştırmak için 16F628 mikrodenetleyicisini programlarken kullanacağınız tanımlama kısmı verilmiştir. Defterinize not.
ARDUINO DİJİTAL PİN KONTROLÜ
İSTANBUL İLİNDEKİ ENDÜSTRİ MESLEK LİSELERİN KONUMUNU BELİRTEN HARİTA
1) ÖZELLİKLER 120 FRAME/SEWC OUTPUT HIGH SPEED PCI 2.1 INTERFACE MAX 16CH VIDEO INPUT WINDOWS 98 SDK / WIN2000 / WINXP NTSC/PAL VIDEO FORMAT YUV422 FORMAT.
ARDUINO DİJİTAL GiRİŞ KONTROLÜ
C# ile Seri İletişim Aslı Ergün.
ARDUINO RÖLE KONTROLÜ.
Nesneye Dayalı Programlama
DÖNGÜLER(Loop) while, for döngüleri Break ve continue işlevleri
KALITIM Yılmaz Kılıçaslan.
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
Dijital Çıkış Mantığı.
MİKRODENETLEYİCİ TABANLI KABLOSUZ HABERLEŞME ve MULTIMEDYA KULLANIMI
Arduino Uno R3 ile Merhaba Dünya Yrd. Doç. Dr. Deniz DAL
ARDUINO DİJİTAL PİN KONTROLÜ
Seri Port ile İletişim.
BİLGİSAYAR programlama II
AB’15 Arduino ile sensörler dersi
BİLGİSAYAR programlama II
Sensörler Ders2 Aslı Ergün.
USB Universal Serial Bus Evrensel Seri veriyolu. Tak çalıştır aygıtların sistemlerde daha kolay bir şekilde kullanımını sağlamak amacıyla geliştirilmiş.
ARDUİNO PLATFORMU BÖLÜM2:Arduino platformu Arduino kurulumu ve test
Seriport String İletimi
PWM (Pulse Width Modulation- Sinyal Genişlik Modülasyonu)
GPS 301 A Akıllı Çocuk Telefonu Hızlı Kurulum
2N® SingleTalk Lift Communicator
GAZİ ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ
Fonksiyonlar.
C Programlama Dili Bilgisayar Mühendisliği.
Motor Sürücü Devresi ile Kontrol
ARDUİNO PLATFORMU Arduino Çeşitleri.
ARDUİNO Arduino Eğitimleri Bölüm 6 Analog Giriş – Çıkış İşlemleri
GAZİ ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ
Arduino Uno R3 ile Merhaba Dünya Yrd. Doç. Dr. Deniz DAL
Arduino ve Gaz Sensörü.
(Bircom Ergin BOYACI – Müşteri Deneyimi ve Ürün Geliştirme)
Doğu Akdeniz Üniversitesi Bilgisayar Ve Teknoloji Yüksek Okulu
Doğu Akdeniz Üniversitesi Bilgisayar Ve Teknoloji Yüksek Okulu
Arduino Uno R3 ile Merhaba Dünya Yrd. Doç. Dr. Deniz DAL
Bölüm 2 C Dilinin Temelleri
Sevgi gibi bilgi de paylaşıldıkça çoğalır
EETE233 Mikrodenetleyiciler ArduIno ile Programlama
GAZİ ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ
GAZİ ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ
GAZİ ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ
ARDUİNO Arduino Eğitimleri Bölüm 6 Analog Giriş – Çıkış İşlemleri
GAZİ ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ
GAZİ ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ
Fonksiyonlar.
Doğu Akdeniz Üniversitesi Bilgisayar Ve Teknoloji Yüksek Okulu
Arduino Eğitimleri Bölüm 5 Dijital Giriş – Çıkış İşlemleri
ARDUİNO Arduino Eğitimleri Bölüm 3 Programlama Dili Temelleri
ARDUİNO Arduino Eğitimleri Bölüm 2 Arduino’ya Giriş
GAZİ ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ
Arduino Programlama Dili
Bilgisayar Bilimi Problem Çözme Süreci-2.
MBLOCK ile Arduino ve Robotik Kodlama
Arduino Uno R3 ile Merhaba Dünya Dr. Öğr. Üyesi Deniz DAL
Bölüm 2 C Dilinin Temelleri
Bilişim Teknolojileri Öğrt.
C ile Programlamaya Giriş
ENGEL ALGILAYAN ÇİZGİ İZLEYEN ROBOT HAZIRLANMASI.
Interrupts.
Sunum transkripti:

Bluetooth İle Haberleşme Aslı Ergün

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.

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.

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

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

HC-05 Bağlantı

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 1234 şeklindedir. Eşleşme sırasında modülün parolası sorulduğunda, bu şifre girilmelidir.

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.

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.

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': }

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.

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.

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);

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.

Ö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();

Ö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();

Telefon Kontrollü Işık Projesi

#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 */