Kod Ara

ESP32 Eğitimi 12/55 - SunFounder'ın ESP32 IoT Öğrenme Kiti ile WS2812 RGB Şerit 4 Projesi

ESP32 Eğitimi 12/55 - SunFounder'ın ESP32 IoT Öğrenme Kiti ile WS2812 RGB Şerit 4 Projesi

Bu eğitimde, ESP32 mikrodenetleyicisini kullanarak bir WS2812 LED şeridini nasıl kontrol edeceğimizi keşfedeceğiz. Bu proje, çeşitli renkler oluşturmanıza ve her LED'i ayrı ayrı kontrol etmenize olanak tanır; programlama ve elektronik hakkında öğrenmenin eğlenceli ve görsel olarak çekici bir yolunu sunar. Bu eğitimin sonunda, renkleri ve desenleri dinamik olarak değiştirebilen tamamen işlevsel bir kuruluma sahip olacaksınız.

SunFounder-ESP32-Lesson-12-LED-Strip.mp4_snapshot_00.02.422

SunFounder'dan, yerleşik Wi-Fi ve Bluetooth özelliklerine sahip ESP32 mikrodenetleyicisini kullanarak WS2812 RGB LED şeridini kolayca bağlayabilir ve kontrol edebiliriz. Bu LED şeridinin esnekliği, dekoratif aydınlatma veya eğitim projeleri için yaratıcı uygulamalara olanak tanır. İlgili adımları daha iyi anlamak için videoya (videoda 00:00'da) başvurabilirsiniz.

Donanım Açıklaması

Bu projenin ana bileşenleri ESP32 mikrodenetleyicisi ve WS2812 LED şeridini içerir. ESP32, Arduino'ya benzer görevleri yerine getirebilen, ancak ek bağlantı seçenekleri sunan güçlü bir mikrodenetleyicidir. Buluta bağlanmasını sağlayan ve uzaktan kontrol ile veri kaydına olanak tanıyan zengin bir özellik setine sahiptir.

WS2812 LED şeridi, ayrı ayrı adreslenebilir RGB LED'lerden oluşur; bu, her LED'in farklı renkler gösterecek şekilde kontrol edilebileceği anlamına gelir. Şerit, tek telli bir protokol üzerinde çalışır ve birden fazla LED'in sinyal kalitesini kaybetmeden zincirlenmesine olanak tanır. Her LED, giriş sinyalini alan ve zincirdeki bir sonraki LED için yükselten yerleşik bir sürücü içerir.

Veri Sayfası Ayrıntıları

Üretici Worldsemi
Parça numarası WS2812
Mantık/G/Ç voltajı 3,5–5,3 V
Besleme voltajı 5 V
Çıkış akımı (kanal başına) 20 mA maks.
Tepe akımı (kanal başına) 60 mA maks.
PWM frekansı kılavuzu 400 Hz
Giriş mantık eşikleri 0,3 x VDD ila 0,7 x VDD
Gerilim düşümü / RDS(on) / doyum 0,5 V maks.
Termal sınırlar -25 ila 80 °C
Paket 5050
Notlar / varyantlar Daha uzun şeritler için zincirlenebilir

 

  • LED hasarını önlemek için doğru güç kaynağını (5 V) sağlayın.
  • Güç kaynağı terminalleri arasına voltaj dalgalanmalarını yumuşatmak için bir kapasitör (100 µF) kullanın.
  • Sinyal bozulmasını azaltmak için veri kablolarını kısa tutun.
  • LED sıcaklığına dikkat edin; uygun ısı dağılımını sağlayın.
  • Güç ve toprağı bağlarken doğru polariteyi gözlemleyin.
  • Uzun şeritler kullanıyorsanız veri hattında bir çekme yukarı direnci kullanın.

Bağlantı Talimatları

ESP32-12-WS2812-wiring

WS2812 LED şeridini ESP32'ye bağlamak için güç kaynağını bağlayarak başlayın. LED şeridindeki +5V teli ESP32'deki 5V pinine, toprak (GND) teli ise ESP32'deki GND pinlerinden birine bağlanmalıdır.

Ardından, LED şeridindeki veri giriş telini ESP32'deki 14 numaralı pine bağlayın. Doğru veri iletimini sağlamak için bağlantıların güvenli olduğundan emin olun. Birden fazla şerit veya daha uzun mesafeler kullanıyorsanız, sinyal bütünlüğünü sağlamak için bir seviye kaydırıcı kullanmayı düşünün. Bu kurulum, LED şeridini doğrudan ESP32'den kontrol etmenizi sağlayacaktır.

Kod Örnekleri ve Açıklaması

Kod, WS2812 LED şeridini kontrol etmek için Adafruit NeoPixel kitaplığını kullanır. LED şeridini başlatarak ve başlangıç rengini siyaha ayarlayarak başlar. Koddaki anahtar tanımlayıcılar, LED şeridinin veri hattına bağlı pini tanımlayan LED_PIN ve şeritteki LED sayısını belirten NUM_LEDS içerir.

#include  // Adafruit NeoPixel kitaplığını ekleyin

#define LED_PIN 14 // NeoPixel LED şeridi
#define NUM_LEDS 8 // LED sayısı

Kurulum fonksiyonunda, şerit strip.begin() kullanılarak başlatılır ve başlangıç rengi strip.show() ile siyaha ayarlanır. Bu, program çalıştığında şeridi renk değişiklikleri için hazırlar.

void setup() {
  strip.begin(); // NeoPixel şeridini başlat
  strip.show(); // Başlangıç rengini siyaha ayarla
}

Programın ana döngüsü iki for döngüsünden oluşur. İlk döngü, her LED'in rengini ayarlayarak ve şeridi güncelleyerek her LED'i tek tek açar. İkinci döngü, her LED'i aynı şekilde kapatır. Bu, basit ama etkili bir ışık animasyonu oluşturur.

void loop() {
  // LED'leri tek tek aç
  for (int i = 0; i < NUM_LEDS; i++) {
    strip.setPixelColor(i, 100, 45, 0); // i. LED'in rengini kırmızıya ayarla
    strip.show(); // LED şeridini yeni renklerle güncelle
    delay(100); // 100 milisaniye bekle
  }
  
  // LED'leri tek tek kapat
  for (int i = 0; i < NUM_LEDS; i++) {
    strip.setPixelColor(i, 0, 0, 0); // i. LED'in rengini siyaha ayarla (kapat)
    strip.show(); // LED şeridini yeni renklerle güncelle
    delay(100); // 100 milisaniye bekle
  }
}

Farklı renk efektlerini ve animasyonları nasıl uygulayacağınıza dair daha fazla ayrıntı için makalenin altındaki tam kod yüklemesini izleyin.

Gösterim / Ne Beklemeli

Kablolamayı tamamladıktan ve kodu yükledikten sonra, şerit üzerindeki LED'lerin belirtilen renkte tek tek yandığını ve ardından aynı sırayla söndüğünü görmelisiniz. Bu, bir "akan ışık" efekti oluşturur. LED'ler beklediğiniz gibi yanmazsa, kablo bağlantılarınızı tekrar kontrol edin ve güç kaynağının yeterli olduğundan emin olun. Ayrıca, kodda doğru pinin tanımlandığını doğrulayın (videoda 12:30'da).

Video Zaman Damgaları

  • 00:00 Başlangıç
  • 1:40 WS2812 LED'e Giriş
  • 7:25 Proje dokümantasyon sayfası
  • 9:16 RGB Rengi açıklandı
  • 13:16 Kablolama açıklandı
  • 13:48 Arduino Kodu-1 açıklandı
  • 19:03 Arduino IDE'de ESP32 kartı ve Port seçimi
  • 20:45 Kod-1 Demo
  • 22:00 Bireysel LED kontrolü
  • 24:16 Yürüyen ışık LED'i
  • 25:41 İleri geri ışık

Görseller

ESP32-12-WS2812-wiring
ESP32-12-WS2812-wiring
ESP32-12-WS2812-schematic
ESP32-12-WS2812-schematic
SunFounder-ESP32-Lesson-12-LED-Strip.mp4_snapshot_00.02.422
SunFounder-ESP32-Lesson-12-LED-Strip.mp4_snapshot_00.02.422
811-ESP32 Tutorial 12/55- Arduino code for WS2812 RGB LED stripe using ESP32
Dil: C++
#include <Adafruit_NeoPixel.h> // Include the Adafruit NeoPixel library

#define LED_PIN 14 // NeoPixel LED strip
#define NUM_LEDS 8 // Number of LEDs

// Create an instance of the Adafruit_NeoPixel class
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800); 

void setup() {
  strip.begin(); // Initialize the NeoPixel strip
  strip.show(); // Set initial color to black
}

void loop() {
  // Turn on LEDs one by one
  for (int i = 0; i < NUM_LEDS; i++) {
    strip.setPixelColor(i, 100, 45, 0); // Set the color of the i-th LED to red
    strip.show(); // Update the LED strip with the new colors
    delay(100); // Wait for 100 milliseconds
  }
  
  // Turn off LEDs one by one
  for (int i = 0; i < NUM_LEDS; i++) {
    strip.setPixelColor(i, 0, 0, 0); // Set the color of the i-th LED to black (turn it off)
    strip.show(); // Update the LED strip with the new colors
    delay(100); // Wait for 100 milliseconds
  }
}

İhtiyacın olabileceğini düşünüyor

Kaynaklar ve referanslar

Henüz kaynak yok.

Dosyalar📁

Dosya mevcut değil.