Kablolardan tamamen kurtulup tasarladığımız ekran projelerini uzaktan kontrol etmek, akıllı ev sistemlerinden taşınabilir göstergelere kadar her projenin kalbini oluşturur. En popüler ve bütçe dostu kablosuz haberleşme modülleri olan HC-05 ve HC-06, telefonunuz ile Arduino arasında görünmez bir köprü kurar. Bu sayede akıllı telefonunuza yükleyeceğiniz herhangi bir seri terminal uygulamasından yazdığınız mesajları veya komutları anlık olarak ekranınızda görüntüleyebilirsiniz.
Haberleşme Güvenliği ve RX/TX Uyarısı: Arduino yükleme yaparken bilgisayarla donanımsal RX/TX (D0 ve D1) pinleri üzerinden haberleşir. Bluetooth modülünü bu pinlere bağlamak hem yükleme hatalarına yol açar hem de kararsız çalışır. Bu sorunu aşmak için sanal seri port kütüphanesi kullanarak Bluetooth'u tamamen bağımsız pinlere yönlendiriyoruz.

Aşağıdaki kod, telefonunuzdan gönderilen verileri tek tek karakter olarak toplamak yerine, tüm mesajın bittiğini gösteren satır sonu (\n) karakterini bekler. Bu yaklaşım, kelimelerin bölünmesini veya ekranda yarım yamalak görünmesini engeller:
#include <SoftwareSerial.h>
// Bluetooth Modülü Bağlantı Pinleri
// Arduino RX -> Bluetooth TX pinine bağlanacak
// Arduino TX -> Bluetooth RX pinine bağlanacak (Gerilim bölücü ile 3.3V seviyesine düşürülmesi önerilir)
const int bluetooth_rx_pin = 10;
const int bluetooth_tx_pin = 11;
SoftwareSerial bluetoothModulu(bluetooth_rx_pin, bluetooth_tx_pin);
// Gelen verileri biriktireceğimiz tampon bellek (string)
String gelen_mesaj = "";
bool mesaj_tamamlandi = false;
void setup() {
Serial.begin(9600); // Bilgisayar ekranı için seri portu başlat
bluetoothModulu.begin(9600); // Bluetooth modülünün standart hızı genellikle 9600'dür
Serial.println("Bluetooth Baglantisi Hazir. Telefonda eslesme yapabilirsiniz.");
// Ekran ilk açılış görselleştirmesi burada tetiklenebilir
// tft.fillScreen(BLACK);
// tft.drawString(10, 10, "KABLOSUZ BAGLANTI BEKLENIYOR...", WHITE, 1);
}
void loop() {
// Bluetooth hattında okunmayı bekleyen veri var mı kontrol ediyoruz
while (bluetoothModulu.available()) {
char gelen_karakter = (char)bluetoothModulu.read();
// Eğer satır sonu veya yeni satır karakteri geldiyse, mesajın bittiğini anlıyoruz
if (gelen_karakter == '\n' || gelen_karakter == '\r') {
if (gelen_mesaj.length() > 0) {
mesaj_tamamlandi = true;
}
} else {
// Mesaj bitmediyse, gelen her karakteri mevcut stringin sonuna ekliyoruz
gelen_mesaj += gelen_karakter;
}
}
// Eğer tüm mesaj başarıyla alındıysa eyleme geçiyoruz
if (mesaj_tamamlandi) {
Serial.print("Telefondan Gelen Mesaj: ");
Serial.println(gelen_mesaj);
// --- EKRAN GÜNCELLEME ALANI ---
// Burada gelen_mesaj içeriğini ekran kütüphanenize göre yazdırabilirsiniz.
// Örnek kullanım:
// tft.fillRect(0, 50, tft.width(), 40, BLACK); // Eski mesaj alanını temizle
// tft.drawString(10, 60, gelen_mesaj, GREEN, 2);
// Basit komut kontrolü simülasyonu:
if (gelen_mesaj == "isik_ac") {
// digitalWrite(isik_pini, HIGH);
Serial.println("Komut Algilandi: Isiklar Acildi.");
}
// Bir sonraki mesaj için tampon belleği sıfırlıyoruz
gelen_mesaj = "";
mesaj_tamamlandi = false;
}
}
Arduino Uno gibi kartlar 5V lojik seviyesiyle çalışırken, HC-05 ve HC-06 modüllerinin RX/TX sinyal pinleri 3.3V hassasiyetindedir. Bluetooth modülünün besleme pini (VCC) 5V ile beslense bile, Arduino'nun TX pininden çıkan 5V'luk sinyal doğrudan Bluetooth'un RX pinine girerse zamanla Bluetooth modülünün bozulmasına veya bağlantının sürekli kopmasına sebep olur.
Bunu önlemek için Arduino TX ile Bluetooth RX arasına iki adet basit dirençle (örneğin 1K ve 2K) küçük bir gerilim bölücü kurarak sinyali güvenli bir şekilde 3.3V seviyesine düşürmek kararlılık açısından son derece kritiktir.
Henüz yorum yapılmamış. İlk yorumu siz yapın!