Arduino UNO: Bluetooth Bağlantısı

Burcu S
4 min readApr 5, 2019

--

Bu yazımda Arduino tarafında Bluetooth modülü aracılığıyla veri alma ve gönderme işlemlerini anlatacağım. (Arduino modelini UNO; Bluetooth modülünü HC-06 varsayıyorum.) Eğer zaten yeterince araştırdım ve işlemlerin mantığını biliyorum ancak istediğim sonucu elde edemedim diyorsanız yazının sonunda özet olarak bulunan kablo bağlantılarının ve kodların olduğu bölüme geçebilirsiniz.

Başlayalım…

Bluetooth modülümüzün 4 pinini (GND, 3.3V, TX, RX) arduino ile bağlamak aralarındaki fiziki bağlantıyı sağlamak için yeterli olacaktır. Herhangi bir sensöre güç vermek için sensörlerin GND (toprak) ve 3.3/5V (güç) pinlerinin bağlı olması gerekiyor. Dolayısıyla bluetooth sensöründeki 3.3V’yi arduino’nun 3.3v sine (Çünkü bluetooth sensörü bu voltajda çalışmakta) ve GND pinini de arduino GND’sine bağladıktan sonra sensörün ışığının yandığını göreceksiniz.

Seri haberleşmede: TX pini (Transmit pin) dışarı veri aktarımı için; RX pini (Receive pin) dışarıdan veri alımı için kullanılır.
Bluetooth ve Arduino RX, TX’lerinin arasındaki ilişki mantığını anlamak için aşağıdaki görseli inceleyebilirsiniz.

Bluetooth modülü bir veri yollarken bunu TX pinine aktarır, Arduino ise verilerini RX pininden okur. O halde Bluetooth’un TX’i Arduino’nun RX’ine veri aktarımı yapmalı. Arduino’dan Bluetooth sensörüne veri gönderiminde de aynı mantık mevcut.

Görseldeki mantığı anladıysak yapmamız gereken kısaca: Arduino ve Bluetooth modülünün TX ve RX’lerini çapraz şekilde bağlamak.

Bu durumda pin bağlantıları özetle:

Pin Bağlantıları

Ancak eğer Arduino bilgisayara usb kablosu ile bağlıysa Arduino’nun TX ve RX pinleri doludur demektir. Çünkü bu pinler o an PC ile seri haberleşmek için kullanılır. UNO modelinde tek bir TX ve RX mevcut. Bu durumda yapmamız gereken arduinonun diğer herhangi 2 pinini alıp sanal bir TX ve RX pini oluşturmak, daha sonra bluetooth TX ve RX’inin bağlantısını yaparken arduino TX’i ve RX’i olarak bu belirlediğimiz pinleri kullanmaktır.

SANAL TX VE RX PİNİ OLUŞTURMA

Arduino üzerinde herhangi 2 pini TX ve RX olarak belirtmek için SoftwareSerial kütüphanesini kullanabiliriz. Bu kütüphane Arduino’nun diğer pinlerinin de seri haberleşme iletişimi için kullanılmasını sağlar.

Örnek olarak Arduino’nun 8 pininİ RX; 7 pinini TX olarak belirleyelim.

Bunun için yapmamız gereken tek şey (Kütüphaneyi indirip kurduktan sonra) SoftwareSerial bluetoothSerial(8, 7); komutunu çalıştırmak. Artık Arduino’nun 7 pini TX ve 8 pini RX olarak kullanılabilir. Ve bluetoothSerial nesnesi üzerinden bluetooth’un TX ve RX’ine erişilebilir. Gelelim bluetooth bağlantısına Bluetooth’un RX pini Arduino’nun TX pinine yani 7'ye; TX pini ise Arduino’nun RX pinine yani 8'e takılacak. Artık aralarındaki fiziksel bağlantıyı tam anlamıyla tamamlamış olduk diyebiliriz.

KODLAMA
Fiziksel bağlantıyı tamamladığımıza göre aralarındaki veri alışverişini sağlayacak kodlamaya geçebiliriz.

Gerekli kütüphaneyi tanımladık. Bluetooth için RX ve TX pinini oluşturduk. Başka pinler de kullanılabilir ben örnek olarak 7 ve 8 kullandım. (4,5; 3–7… gibi ikililer de kullanabilirsiniz.)

Setup Fonksiyonu Arduino programı yüklendiğinde sadece bir kez çalışır. Adından da anlaşıldığı gibi ilk kurulumlarımızı yapabiliriz. Burada önemli 2 unsur seri portun ve bluetooth portunun başlatılması. (Ben 9600 baud tercih ettim her ikisinde de ancak farklı da olabilir ayrıca ikisi aynı baud olmak zorunda değil. Baud rate saniyede gönderilecek bit miktarını tanımlar.) İkisini de başlattıktan sonra bir başlangıç yazısı yollayabiliriz örnek olarak.

Loop fonksiyonu sürekli olarak çalışan fonksiyondur. Ve asıl işlerimizi bu fonksiyona yazarız. Kodları açıklamaya gelince:

.available() -> “kontrol edilen değişkende mevcut bir girdi olup olmadığı” durumunun kontrolünü sağlama.

  • Bluetooth portunda bir veri girişi varsa .read ile bunu okuyup data değişkenine aktarırız. Seri porta ise yani Arduino portuna ise bu datayı yazarız. Böylece Bluetoothdaki veriler Arduino’ya verilmiş olur.
  • Bluetooth’dan Arduino’ya veri aktarımında da aynı algoritma işler.

KODLAR:

BAĞLANTI:

Uygulamada HC-06 bulunmadığından temsili olarak HC-05 bulunmakta.

Kodları ve bağlantıyı test etmek için Bluetooth Console applerinden faydalanabilirsiniz.

--

--

Burcu S
Burcu S

Written by Burcu S

Flutter Developer, Lover & Learner | Computer Engineer | For contact: linkedin.com/in/burcus/

Responses (2)