Yazılardaki ürünleri komponentci.net'te inceleyebilir, hemen sipariş verebilirsiniz.komponentci.net →
KomponentciBlog Mağaza
Blog  ›  Projeler

Bluetooth Kontrollü RGB Lamba: HC-05 ve WS2812B Halka

Bluetooth Kontrollü RGB Lamba: HC-05 ve WS2812B Halka
Kısa cevap

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

MalzemeAdetNe işe yarar?
Arduino Uno R3 (CH340, USB kablolu)1Komutu çözer, LED'leri boyar
HC-05 Bluetooth seri modül kartı1Telefondan gelen komutu alır
NeoPixel 12'li halka (WS2812B)1Lambanın ışık kaynağı
Direnç: 1 kΩ, 2 kΩ (ya da 2,2 kΩ), 330 Ω1'erGerilim bölücü ve veri hattı koruması
Erkek-dişi jumper kablo ve breadboard1 setBağlantılar için
Buzlu cam kavanoz ya da yarı saydam kutu1Işığı 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çenekArtısıDikkat edilecek nokta
HC-05 (klasik Bluetooth)Android'de kolay eşleşir, çok sayıda terminal uygulaması variPhone ile çalışmaz
HM-10 (Bluetooth 4.0 BLE)iPhone ve Android ile çalışırBLE destekli bir terminal uygulaması gerekir
WS2812B halkaTek veri pini, her LED ayrı renk alabilirVeri hattına 330 Ω direnç önerilir
5 mm RGB LED (ortak katot)Ucuz, kütüphane gerektirmez3 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.

  1. HC-05'in VCC ucunu 5V'a, GND ucunu GND'ye bağlayın.
  2. HC-05'in TXD ucunu D10'a bağlayın. Arduino 3,3V'luk bu sinyali sorunsuz okur.
  3. 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.
  4. LED halkanın 5V (ya da VCC) ucunu 5V'a, GND ucunu GND'ye, DIN ucunu 330 Ω direnç üzerinden D6'ya bağlayın.
  5. 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.
Bluetooth kontrollü RGB lamba bağlantı şeması: HC-05 Bluetooth modülünün TXD ucu Arduino Uno D10'a doğrudan, RXD ucu D11'e 1 kΩ direnç üzerinden bağlı ve aynı nokta 2 kΩ dirençle GND'ye gidiyor (5 V × 2/3 ≈ 3,3 V); 12 LED'li NeoPixel WS2812B halkanın DIN ucu 330 Ω direnç üzerinden D6'ya, 5V ve GND uçları 5V ve GND'ye bağlı; halka 255,120,0 komutuyla turuncu yanıyor; solda telefondaki Bluetooth terminal ekranında gönderilen komutlar ve Tamam yanıtları; altta 255,0,0 kırmızı, 0,255,0 yeşil, 0,0,255 mavi, 255,120,0 turuncu, 255,180,80 sıcak beyaz, G gökkuşağı, P40 parlaklık ve K kapat komutları
HC-05 TXD → D10, RXD ← D11 (1 kΩ / 2 kΩ bölücü); halkanın DIN ucu 330 Ω ile D6'ya bağlanır; renk "R,G,B" komutuyla gönderilir.
#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.

KomutSonuç
255,0,0Kırmızı
0,255,0Yeşil
0,0,255Mavi
255,120,0Turuncu (kırmızı + biraz yeşil)
255,180,80Sıcak beyaza yakın ton
GGökkuşağı modu (renkler halkada döner)
P40Parlaklığı 40 yapar (5-100 arası)
KLambayı 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.

Bu yazıdaki ürünler

Diğer yazılar

11 Kasım 20266 dk okuma

Pense Çeşitleri: Yan Keski, Kargaburun ve Kombine Pense

Pense çeşitleri arasında seçim işe göre yapılır: tel ve komponent bacağı kesmek için yan keski, dar alanda tutmak ve bükmek için kargaburun,...

Devamını oku →
11 Kasım 20267 dk okuma

Işık Takip Eden Robot Yapımı: Arduino, LDR ve L298N

Işık takip eden robot, önüne takılan iki LDR ile hangi tarafın daha aydınlık olduğunu ölçüp tekerleklerini o yöne süren bir Arduino projesid...

Devamını oku →
11 Kasım 20266 dk okuma

İzoleli Tornavida ve 1000V VDE El Aletleri Nedir?

İzoleli tornavida, IEC 60900 (EN 60900) standardına göre 1000V AC ve 1500V DC gerilime kadar yalıtım için test edilmiş ve üzerinde çift üçge...

Devamını oku →
11 Kasım 20267 dk okuma

ESP8266 Hava Durumu Ekranı: NodeMCU, OLED ve Open-Meteo

ESP8266 hava durumu ekranı, NodeMCU kartının Wi-Fi ile internete bağlanıp Open-Meteo servisinden anlık sıcaklık, nem, rüzgâr ve hava durumu...

Devamını oku →
11 Kasım 20266 dk okuma

Havya Ucu Çeşitleri ve Bakımı: Konik, Keski, Bıçak

Havya ucu, lehimlenecek noktanın boyutuna göre seçilir: ince SMD ve sık bacaklar için konik (I), genel THT lehim için keski (D) ya da eğik k...

Devamını oku →
11 Kasım 20266 dk okuma

Ultrasonik Theremin Projesi: HC-SR04 ile Elle Müzik

Ultrasonik theremin, HC-SR04 sensörüyle elinizin uzaklığını ölçüp bu mesafeyi ses frekansına çeviren bir Arduino projesidir. El sensöre yakl...

Devamını oku →