ESP32 Tutorijal 12/55 - WS2812 RGB traka 4. projekat sa SunFounder ESP32 IoT Learning kompletom
U ovom tutorijalu ćemo istražiti kako kontrolisati WS2812 LED traku koristeći ESP32 mikrokontroler. Ovaj projekat vam omogućava da kreirate različite boje i kontrolišete svaku LED diodu pojedinačno, pružajući zabavan i vizuelno privlačan način učenja o programiranju i elektronici. Do kraja ovog tutorijala, imaćete potpuno funkcionalnu postavku koja može dinamički menjati boje i obrasce.
Koristeći ESP32 mikrokontroler kompanije SunFounder, koji ima ugrađene Wi-Fi i Bluetooth mogućnosti, lako možemo povezati i kontrolisati WS2812 RGB LED traku. Fleksibilnost ove LED trake omogućava kreativne primene, bilo za dekorativno osvetljenje ili obrazovne projekte. Za bolje razumevanje koraka, možete pogledati video na (u videu na 00:00).
Objašnjenje hardvera
Glavne komponente za ovaj projekat uključuju ESP32 mikrokontroler i WS2812 LED traku. ESP32 je moćan mikrokontroler koji može obavljati zadatke slične onima kod Arduina, ali sa dodatnim mogućnostima povezivanja. Ima bogat skup funkcija koje mu omogućavaju povezivanje na oblak, omogućavajući daljinsko upravljanje i beleženje podataka.
WS2812 LED traka se sastoji od pojedinačno adresabilnih RGB LED dioda, što znači da se svaka LED dioda može kontrolisati da prikazuje različite boje. Traka radi na protokolu sa jednom žicom, omogućavajući da se više LED dioda poveže u lanac bez gubitka kvaliteta signala. Svaka LED dioda sadrži ugrađeni drajver koji prima ulazni signal i pojačava ga za sledeću LED diodu u lancu.
Detalji iz tehničke dokumentacije
| Proizvođač | Worldsemi |
|---|---|
| Broj dela | WS2812 |
| Logički/IO napon | 3,5–5,3 V |
| Napon napajanja | 5 V |
| Izlazna struja (po kanalu) | 20 mA maks |
| Maksimalna struja (po kanalu) | 60 mA maks |
| Preporuka za PWM frekvenciju | 400 Hz |
| Ulazni logički pragovi | 0,3 x VDD do 0,7 x VDD |
| Pad napona / RDS(on) / zasićenje | 0,5 V maks |
| Termička ograničenja | -25 do 80 °C |
| Pakovanje | 5050 |
| Napomene / varijante | Može se povezivati u lanac za duže trake |
- Osigurajte odgovarajuće napajanje (5 V) da biste izbegli oštećenje LED dioda.
- Koristite kondenzator (100 µF) preko terminala napajanja da biste izgladili naponske šiljke.
- Držite žice za podatke kratkim da biste smanjili degradaciju signala.
- Budite oprezni sa temperaturom LED dioda; osigurajte odgovarajuće odvođenje toplote.
- Obratite pažnju na ispravan polaritet prilikom povezivanja napajanja i uzemljenja.
- Koristite pull-up otpornik na liniji podataka ako koristite duge trake.
Uputstva za povezivanje

Da biste povezali WS2812 LED traku na ESP32, počnite povezivanjem napajanja. +5V žica sa LED trake treba da se poveže na 5V pin na ESP32, a žica za uzemljenje (GND) treba da se poveže na jedan od GND pinova na ESP32.
Zatim povežite žicu za ulaz podataka sa LED trake na pin 14 na ESP32. Uverite se da su veze sigurne kako biste osigurali ispravan prenos podataka. Ako koristite više traka ili duže udaljenosti, razmotrite korišćenje level shifter-a kako biste osigurali integritet signala. Ova postavka će vam omogućiti da direktno kontrolišete LED traku sa ESP32.
Primeri koda i objašnjenje
Kod koristi Adafruit NeoPixel biblioteku za kontrolu WS2812 LED trake. Počinje inicijalizacijom LED trake i postavljanjem početne boje na crnu. Ključni identifikatori u kodu uključuju LED_PIN, koji definiše pin povezan na liniju podataka LED trake, i NUM_LEDS, koji specificira broj LED dioda u traci.
#include // Uključi Adafruit NeoPixel biblioteku
#define LED_PIN 14 // NeoPixel LED traka
#define NUM_LEDS 8 // Broj LED dioda
U setup funkciji, traka se inicijalizuje pomoću strip.begin(), a početna boja se postavlja na crnu sa strip.show(). Ovo priprema traku za promene boja kada program počne da se izvršava.
void setup() {
strip.begin(); // Inicijalizuj NeoPixel traku
strip.show(); // Postavi početnu boju na crnu
}
Glavna petlja programa sastoji se od dve for petlje. Prva petlja uključuje svaku LED diodu jednu po jednu postavljanjem njene boje i ažuriranjem trake. Druga petlja isključuje svaku LED diodu na isti način. Ovo stvara jednostavnu ali efikasnu svetlosnu animaciju.
void loop() {
// Uključi LED diode jednu po jednu
for (int i = 0; i < NUM_LEDS; i++) {
strip.setPixelColor(i, 100, 45, 0); // Postavi boju i-te LED diode na crvenu
strip.show(); // Ažuriraj LED traku sa novim bojama
delay(100); // Sačekaj 100 milisekundi
}
// Isključi LED diode jednu po jednu
for (int i = 0; i < NUM_LEDS; i++) {
strip.setPixelColor(i, 0, 0, 0); // Postavi boju i-te LED diode na crnu (isključi je)
strip.show(); // Ažuriraj LED traku sa novim bojama
delay(100); // Sačekaj 100 milisekundi
}
}
Pogledajte kompletan kod učitavanja ispod članka za više detalja o implementaciji različitih efekata boja i animacija.
Demonstracija / Šta očekivati
Nakon što završite s povezivanjem i prenesete kod, trebali biste vidjeti kako se LED diode na traci pale jedna po jedna u određenoj boji, nakon čega se gase istim redoslijedom. Ovo stvara efekat "trčećeg svjetla". Ako se LED diode ne upale kako se očekuje, provjerite ponovo svoje spojeve i osigurajte da je napajanje adekvatno. Također, provjerite da li je ispravan pin definiran u kodu (u videu na 12:30).
Vremenske oznake videa
- 00:00 Početak
- 1:40 Uvod u WS2812 LED
- 7:25 Stranica s dokumentacijom projekta
- 9:16 Objašnjena RGB boja
- 13:16 Objašnjeno povezivanje
- 13:48 Objašnjen Arduino kod-1
- 19:03 Odabir ESP32 ploče i porta u Arduino IDE-u
- 20:45 Demonstracija koda-1
- 22:00 Upravljanje pojedinačnom LED diodom
- 24:16 LED s hodajućim svjetlom
- 25:41 Svjetlo naprijed i nazad
#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
Stvari koje bi vam mogle zatrebati
-
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
Resursi i reference
Još nema resursa.
Datoteke📁
Nema dostupnih datoteka.