ESP32 ile LED şeridi (LED Strip) kontrolu

ESP32 Hareket Sensörlü LED Şerit Kontrolü

Bu projenin temel amacı LED şeridi kontrol etmektir.

Gerekli Donanımlar

  • ESP32 Dev Module
  • LED Şerit (WS2812B)
  • 12V Güç Kaynağı (LED şeridi beslemek için)

Led Şerit Nedir

LED şerit (LED tape veya LED ribbon olarak da bilinir), üzerine ışık yayan yüzey montajlı LED’lerin (SMD) yerleştirildiği esnek bir devre kartıdır. Bu şeritler çok yönlüdür ve çeşitli uygulamalarda yaygın olarak dekoratif aydınlatma amacıyla kullanılırlar. LED şeritler birçok farklı renk seçeneğiyle sunulur; genellikle ortam aydınlatması, vurgu aydınlatması veya dekoratif ışık efektleri sağlamak için tercih edilirler.

LED şeritler temelde iki ana türe ayrılır:

  • Adreslenebilir LED Şeritler (Addressable LED Strips): Bu türde, şerit üzerindeki her bir LED’in rengi ve parlaklığı bağımsız olarak kontrol edilebilir. Bu özellik, her bir LED’e özel bir adres atanmış olması sayesinde mümkündür.
  • Adreslenemeyen LED Şeritler (Non-Addressable LED Strips): Aksine, adreslenemeyen şeritlerde de renk ve parlaklık kontrolü yapılabilir; ancak bu kontrol şerit üzerindeki tüm LED’lere aynı anda ve tek tip olarak uygulanır.

Adreslenemeyen tek renkli led şeritler genel olarak doğrudan 12 Volt bağlanarak sürülür. Bu durum maliyet açısından önemlidir. Aşağıdaki resimde ESP32, röle ve Led sürücü kullanılarak bir bağlantı yapılmıştır. Bu aşamada kod yazımı oldukça kolay olup sadece herhangi bir çıkış pinin ON/OFF yapılması ile LED şeritin ışık üretmesi sağlanabilir.

Adreslenebilir Led Şerit WS2812B

Adreslenebilir led şerit aşağıdaki şekilde gösterilmiştir. Bu ürünün kodu WS2812B olarak geçmektedir. Her led için bir adres bulunmaktadır. Bu adres ESP32 ile ayarlandığı takdirde her ledin rengini ayarlamak mümkündür.

ESP 32 Bağlantısı

Aşağıdaki bağlantıda WS2812B led şeritinin bağlantısı gösterilmiştir. Kodların düzgün çalışabilmesi için ilgili kütüphanenin yüklenmiş olması gerekir.

3. ESP32 Kod Örneği

Aşağıdaki kod, hareket algılandığında LED’i yakar ve hareket bittikten sonra belirlediğiniz süre boyunca açık tutar.

/*
 * Bu ESP32 kodu esp32io.com tarafından oluşturulmuştur.
 *
 * Bu ESP32 kodu kamu malı (public domain) olarak yayınlanmıştır.
 *
 * Daha fazla detay (talimatlar ve bağlantı şeması) için şu adresi ziyaret edin: 
 * https://esp32io.com/tutorials/esp32-ws2812b-led-strip
 */

#include <Adafruit_NeoPixel.h>

#define PIN_WS2812B 16  // WS2812B'ye bağlı olan ESP32 GPIO16 pini
#define NUM_PIXELS 30   // WS2812B LED şeridindeki LED (piksel) sayısı

Adafruit_NeoPixel ws2812b(NUM_PIXELS, PIN_WS2812B, NEO_GRB + NEO_KHZ800);

void setup() {
  ws2812b.begin();  // WS2812B şerit nesnesini başlat (ZORUNLU)
}

void loop() {
  ws2812b.clear();  // Tüm piksel renklerini 'kapalı' olarak ayarlar. Sadece pixels.show() çağrıldığında etkili olur.

  // Pikselleri her piksel arasında gecikme olacak şekilde tek tek yeşile çevirir
  for (int pixel = 0; pixel < NUM_PIXELS; pixel++) {         // Her bir piksel için
    ws2812b.setPixelColor(pixel, ws2812b.Color(0, 255, 0));  // Sadece pixels.show() çağrıldığında etkili olur
    ws2812b.show();                                          // WS2812B LED Şeridini güncelle

    delay(500);  // Her piksel arasında 500ms duraklama
  }

  // Tüm pikselleri iki saniye boyunca kapat
  ws2812b.clear();
  ws2812b.show();  // WS2812B LED Şeridini güncelle
  delay(2000);     // 2 saniye kapalı kalma süresi

  // Tüm pikselleri aynı anda kırmızıya çevir ve iki saniye açık tut
  for (int pixel = 0; pixel < NUM_PIXELS; pixel++) {         // Her bir piksel için
    ws2812b.setPixelColor(pixel, ws2812b.Color(255, 0, 0));  // Sadece pixels.show() çağrıldığında etkili olur
  }
  ws2812b.show();  // WS2812B LED Şeridini güncelle
  delay(1000);     // 1 saniye açık kalma süresi

  // Tüm pikselleri bir saniye boyunca kapat
  ws2812b.clear();
  ws2812b.show();  // WS2812B LED Şeridini güncelle
  delay(1000);     // 1 saniye kapalı kalma süresi
}

Leave a Reply

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir