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'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ı

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
#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
}
}
Common Course Links
Common Course Files
İhtiyacın olabileceğini düşünüyor
-
Amazon
-
eBay
-
AliExpressPurchase WS2812 LED strip from AliExpresss.click.aliexpress.com
-
AliExpressPurchase WS2812 LED strip from AliExpress-2s.click.aliexpress.com
-
BanggoodPurchase WS2812 LED strip from Banggoodbanggood.com
Kaynaklar ve referanslar
Henüz kaynak yok.
Dosyalar📁
Dosya mevcut değil.