Bluetooth kontrollü RGB lamba; HC-05 Bluetooth modülü, WS2812B (NeoPixel) LED halka ve Arduino Uno ile yapılır. Telefondaki bir Bluetooth terminal uygulamasından "255,0,0" gibi bir renk komutu gönderilir, Arduino bu sayıları okuyup halkayı o renge boyar. Proje USB'nin 5V gerilimiyle çalışır.
Telefonunuzdan renk seçtiğiniz bir masa lambası, kablosuz haberleşmeyi ve renk karışımını aynı anda öğreten bir öğrenci projesidir. Bu yazıda HC-05 Bluetooth modülü, WS2812B LED halka ve Arduino Uno ile Android telefondan kontrol edilen bir RGB lamba yapıyoruz. Malzeme listesi, gerilim bölücülü bağlantı, açıklamalı kod, güvenlik notları ve TÜBİTAK 4006 sergisi için sunum önerileri yazıda yer alıyor.
Bluetooth kontrollü RGB lamba nedir?
Bluetooth kontrollü RGB lamba, kırmızı, yeşil ve mavi ışığı farklı oranlarda karıştırarak istenen rengi üreten ve bu rengi telefondan kablosuz olarak alan bir aydınlatma projesidir. Telefon komutu Bluetooth ile HC-05'e gönderir, HC-05 komutu seri haberleşmeyle Arduino'ya aktarır, Arduino da LED'leri boyar.
Her renk 0 ile 255 arasında bir sayıyla ifade edilir. "255,0,0" kırmızı, "0,0,255" mavi, "255,255,255" beyazdır. Bu, bilgisayar ekranlarının da kullandığı RGB renk modelidir.
Hangi malzemeler gerekir?
Arduino Uno, HC-05 Bluetooth modülü, 12'li WS2812B halka, gerilim bölücü için iki direnç ve jumper kablolar yeterlidir. Lamba gövdesi için buzlu bir kavanoz ya da yarı saydam bir kutu kullanılabilir.
Malzeme listesi
| Malzeme | Adet | Ne işe yarar? |
|---|---|---|
| Arduino Uno R3 (CH340, USB kablolu) | 1 | Komutu çözer, LED'leri boyar |
| HC-05 Bluetooth seri modül kartı | 1 | Telefondan gelen komutu alır |
| NeoPixel 12'li halka (WS2812B) | 1 | Lambanın ışık kaynağı |
| Direnç: 1 kΩ, 2 kΩ (ya da 2,2 kΩ), 330 Ω | 1'er | Gerilim bölücü ve veri hattı koruması |
| Erkek-dişi jumper kablo ve breadboard | 1 set | Bağlantılar için |
| Buzlu cam kavanoz ya da yarı saydam kutu | 1 | Işığı yayar, lamba görünümü verir |
Hangi Bluetooth modülü ve hangi LED seçilmeli?
Android telefon için HC-05, iPhone için HM-10 seçilmelidir; LED olarak tek veri kablosuyla çok sayıda LED süren WS2812B halka en pratik çözümdür. HC-05 klasik Bluetooth kullanır ve iPhone'larla seri bağlantı kuramaz.
| Seçenek | Artısı | Dikkat edilecek nokta |
|---|---|---|
| HC-05 (klasik Bluetooth) | Android'de kolay eşleşir, çok sayıda terminal uygulaması var | iPhone ile çalışmaz |
| HM-10 (Bluetooth 4.0 BLE) | iPhone ve Android ile çalışır | BLE destekli bir terminal uygulaması gerekir |
| WS2812B halka | Tek veri pini, her LED ayrı renk alabilir | Veri hattına 330 Ω direnç önerilir |
| 5 mm RGB LED (ortak katot) | Ucuz, kütüphane gerektirmez | 3 PWM pini ve 3 adet 220 Ω direnç gerekir, ışığı zayıftır |
İki modülün farkları HM-10 BLE modülü yazımızda ayrıntılı anlatılıyor. HM-10 kullanırsanız bu yazıdaki kod değişmeden çalışır; yalnızca modülün RX ucu için aynı gerilim bölücü yine gerekir.
Devre nasıl bağlanır?
HC-05'in TXD ucu doğrudan D10'a, RXD ucu ise 1 kΩ / 2 kΩ gerilim bölücü üzerinden D11'e bağlanır; LED halkanın DIN ucu 330 Ω direnç üzerinden D6'ya gider. Gerilim bölücü, Arduino'nun 5V sinyalini HC-05'in kabul ettiği yaklaşık 3,3V'a düşürür: 5 V × 2 / (1 + 2) ≈ 3,3 V.
- HC-05'in VCC ucunu 5V'a, GND ucunu GND'ye bağlayın.
- HC-05'in TXD ucunu D10'a bağlayın. Arduino 3,3V'luk bu sinyali sorunsuz okur.
- D11'den 1 kΩ direncin bir ucuna gidin. Direncin diğer ucunu HC-05'in RXD ucuna, aynı noktayı 2 kΩ direnç üzerinden GND'ye bağlayın.
- LED halkanın 5V (ya da VCC) ucunu 5V'a, GND ucunu GND'ye, DIN ucunu 330 Ω direnç üzerinden D6'ya bağlayın.
- Arduino IDE'de "Adafruit NeoPixel" kütüphanesini kurun, kodu yükleyin. HC-05 D10 ve D11'e bağlı olduğu için kod yüklerken modülü çıkarmanız gerekmez.
#include <SoftwareSerial.h>
#include <Adafruit_NeoPixel.h>
SoftwareSerial bt(10, 11); // D10 = HC-05 TXD, D11 = HC-05 RXD
const byte LED_PIN = 6, LED_SAYI = 12;
Adafruit_NeoPixel halka(LED_SAYI, LED_PIN, NEO_GRB + NEO_KHZ800);
String satir = "";
byte r = 0, g = 0, b = 0, parlaklik = 60; // parlaklik en cok 100
bool gokkusagi = false;
uint16_t ton = 0;
unsigned long sonKare = 0;
void boya() {
halka.setBrightness(parlaklik);
halka.fill(halka.Color(r, g, b));
halka.show();
}
void komut(String s) {
s.trim();
if (s == "K") { r = g = b = 0; gokkusagi = false; boya(); }
else if (s == "G") gokkusagi = true;
else if (s.startsWith("P")) { // P40 = parlaklik 40
parlaklik = constrain(s.substring(1).toInt(), 5, 100);
if (!gokkusagi) boya();
} else { // "255,120,0" gibi
int v1 = s.indexOf(','), v2 = s.indexOf(',', v1 + 1);
if (v1 < 1 || v2 < 0) { bt.println(F("Hatali komut")); return; }
r = constrain(s.toInt(), 0, 255);
g = constrain(s.substring(v1 + 1).toInt(), 0, 255);
b = constrain(s.substring(v2 + 1).toInt(), 0, 255);
gokkusagi = false;
boya();
}
bt.print(F("Tamam: "));
bt.println(s);
}
void setup() {
bt.begin(9600); // HC-05 varsayilan hizi
halka.begin();
boya();
}
void loop() {
while (bt.available()) {
char c = bt.read();
if (c == '\n') { komut(satir); satir = ""; }
else if (c != '\r' && satir.length() < 20) satir += c;
}
if (gokkusagi && millis() - sonKare > 20) {
sonKare = millis();
halka.setBrightness(parlaklik);
halka.rainbow(ton); // halka boyunca renk tekerlegi
halka.show();
ton += 256;
}
}
Telefondan renk nasıl gönderilir?
Android telefonda bir Bluetooth seri terminal uygulamasıyla (ör. Serial Bluetooth Terminal) HC-05'e bağlanıp her komutu ayrı satır olarak gönderirsiniz. İlk eşleşmede HC-05 için şifre genellikle 1234 ya da 0000'dır. Uygulamanın ayarlarında satır sonu olarak "LF" ya da "CR+LF" seçin; kod iki biçimi de kabul eder.
| Komut | Sonuç |
|---|---|
255,0,0 | Kırmızı |
0,255,0 | Yeşil |
0,0,255 | Mavi |
255,120,0 | Turuncu (kırmızı + biraz yeşil) |
255,180,80 | Sıcak beyaza yakın ton |
G | Gökkuşağı modu (renkler halkada döner) |
P40 | Parlaklığı 40 yapar (5-100 arası) |
K | Lambayı kapatır |
Uygulamadaki makro düğmelerine bu komutları kaydederseniz renkleri tek dokunuşla değiştirebilirsiniz. Arduino her komuttan sonra "Tamam" yanıtı gönderir; böylece komutun ulaştığını telefonda görürsünüz. HC-05'in temel bağlantısı için Bluetooth kontrollü araba projemize de göz atabilirsiniz.
Hangi güvenlik kurallarına dikkat edilmeli?
Lamba yalnızca USB'nin 5V gerilimiyle çalışır; 220V'luk bir abajurun içine ya da prize doğrudan bağlanmaz.
- Her WS2812B LED tam beyazda yaklaşık 60 mA çekebilir; 12 LED en kötü durumda yaklaşık 720 mA eder. Koddaki parlaklık sınırı (100/255) bu akımı yaklaşık 280 mA'e indirir ve USB'yi zorlamaz.
- Daha büyük halka ya da şerit kullanacaksanız LED'leri ayrı bir 5V adaptörle besleyin ve GND'leri birleştirin.
- Kavanoz ya da kutu içinde kabloların birbirine değmemesi için devreyi bir karton bölmeye sabitleyin.
- Gökkuşağı modundaki hızlı renk değişimi bazı kişileri rahatsız edebilir; sergide yavaş bir mod seçin.
Projeyi nasıl sunarsınız?
Projeyi, ziyaretçilerin kendi telefonlarından renk göndermesine izin verip RGB renk karışımını bir tabloyla açıklayarak sunabilirsiniz.
- Problem: "Ekranlar milyonlarca rengi yalnızca üç renkle nasıl üretir?"
- Deney: Kırmızıyı 255'te sabit tutup yeşili 0, 60, 120, 180 ve 255 yapın; oluşan renkleri fotoğraflayıp tabloya ekleyin.
- Haberleşme şeması: Telefon → Bluetooth → HC-05 → seri hat (9600 baud) → Arduino → LED zinciri akışını oklarla çizin.
- Enerji hesabı: Parlaklık 40 ile 100 arasında akımın nasıl değiştiğini hesaplayıp grafikle gösterin.
Sık sorulan sorular
HC-05 telefonla eşleşiyor ama renk değişmiyorsa ne yapmalıyım?
Önce terminal uygulamasında "Connected" yazısını görmeniz gerekir; yalnızca eşleşmek yetmez, uygulamadan bağlanmalısınız. Bağlantı varsa HC-05'in TXD ucunun D10'a gittiğini ve satır sonu ayarının LF ya da CR+LF olduğunu kontrol edin. Hiç yanıt gelmiyorsa D11 ile RXD arasındaki gerilim bölücüyü kontrol edin.
iPhone ile bu lamba kontrol edilebilir mi?
HC-05 ile kontrol edilemez, çünkü iPhone klasik Bluetooth seri bağlantıyı uygulamalara açmaz. HC-05 yerine HM-10 BLE modülü kullanın ve App Store'dan BLE destekli bir terminal uygulaması indirin. Bağlantı ve kod aynı kalır; HM-10'un varsayılan hızı da 9600 baud'dur.
LED'lerin bazıları yanlış renkte yanıyorsa sorun nedir?
Genellikle veri hattında gürültü ya da yanlış renk sırası vardır. DIN hattındaki 330 Ω direnci ve GND bağlantısını kontrol edin. Kırmızı istediğinizde yeşil yanıyorsa halkanız farklı renk sırası kullanıyordur; koddaki NEO_GRB ifadesini NEO_RGB yapın.
Halka yerine şerit LED kullanılabilir mi?
Evet, 5V WS2812B şerit de kullanılabilir. Koddaki LED_SAYI değerini şeritteki LED sayısıyla değiştirin. 30'dan fazla LED için ayrı bir 5V adaptör ve LED'lerin besleme uçlarına 1000 µF bir kondansatör önerilir. 12V RGB şeritler ise bu kodla değil, MOSFET'li bir sürücüyle kontrol edilir. Ayrıntılar WS2812B bağlantı rehberimizde.
Özet
- Bluetooth kontrollü RGB lamba; HC-05, WS2812B halka ve Arduino Uno ile yapılır.
- HC-05 TXD → D10, RXD ← D11 (1 kΩ / 2 kΩ bölücüyle ≈ 3,3V); halkanın DIN ucu 330 Ω ile D6'ya bağlanır.
- Telefondan "R,G,B" biçiminde komut gönderilir; "G" gökkuşağı, "P40" parlaklık, "K" kapatma komutudur.
- Parlaklık sınırı 12 LED'in akımını yaklaşık 280 mA'de tutar; proje USB ile güvenle çalışır.
- iPhone için HC-05 yerine HM-10 kullanılır; kod değişmez.
