Návod na ESP32 12/55 - Projekt 4 s RGB pásikom WS2812 so vzdelávacou súpravou ESP32 IoT od SunFounder
V tomto návode si ukážeme, ako ovládať WS2812 LED pás pomocou mikrokontroléra ESP32. Tento projekt vám umožní vytvárať rôzne farby a ovládať každú LED samostatne, čo poskytuje zábavný a vizuálne príťažlivý spôsob, ako sa naučiť programovanie a elektroniku. Na konci tohto návodu budete mať plne funkčné zapojenie, ktoré dokáže dynamicky meniť farby a vzory.
Pomocou mikrokontroléra ESP32 od SunFounder, ktorý má vstavané Wi-Fi a Bluetooth funkcie, môžeme ľahko pripojiť a ovládať WS2812 RGB LED pás. Flexibilita tohto LED pásu umožňuje kreatívne aplikácie, či už pre dekoratívne osvetlenie alebo vzdelávacie projekty. Pre lepšie pochopenie jednotlivých krokov si môžete pozrieť video na (vo videu o 00:00).
Vysvetlenie hardvéru
Hlavné komponenty pre tento projekt zahŕňajú mikrokontrolér ESP32 a WS2812 LED pás. ESP32 je výkonný mikrokontrolér, ktorý dokáže vykonávať úlohy podobné Arduinu, ale s pridanými možnosťami pripojenia. Má bohatú sadu funkcií, ktoré mu umožňujú pripojiť sa do cloudu, čo umožňuje diaľkové ovládanie a zaznamenávanie údajov.
WS2812 LED pás pozostáva z jednotlivo adresovateľných RGB LED, čo znamená, že každú LED možno ovládať tak, aby zobrazovala rôzne farby. Pás pracuje na protokole s jedným vodičom, čo umožňuje reťaziť viacero LED bez straty kvality signálu. Každá LED obsahuje vstavaný budič, ktorý prijíma vstupný signál a zosilňuje ho pre ďalšiu LED v reťazci.
Podrobnosti z datasheetu
| Výrobca | Worldsemi |
|---|---|
| Označenie súčiastky | WS2812 |
| Logické/IO napätie | 3,5–5,3 V |
| Napájacie napätie | 5 V |
| Výstupný prúd (na kanál) | max. 20 mA |
| Špičkový prúd (na kanál) | max. 60 mA |
| Odporúčaná PWM frekvencia | 400 Hz |
| Vstupné logické prahy | 0,3 x VDD až 0,7 x VDD |
| Pokles napätia / RDS(on) / saturácia | max. 0,5 V |
| Tepelné limity | -25 až 80 °C |
| Puzdro | 5050 |
| Poznámky / varianty | Možno reťaziť pre dlhšie pásy |
- Zaistite správne napájanie (5 V), aby nedošlo k poškodeniu LED.
- Použite kondenzátor (100 µF) cez napájacie svorky na vyhladenie napäťových špičiek.
- Udržujte dátové vodiče krátke, aby sa znížila degradácia signálu.
- Buďte opatrní na teplotu LED; zaistite správny odvod tepla.
- Dodržiavajte správnu polaritu pri pripájaní napájania a uzemnenia.
- Použite pull-up rezistor na dátovom vodiči, ak používate dlhé pásy.
Pokyny na zapojenie

Na zapojenie WS2812 LED pásu k ESP32 začnite pripojením napájania. Vodič +5V z LED pásu by mal byť pripojený na pin 5V na ESP32 a vodič uzemnenia (GND) by mal byť pripojený na jeden z GND pinov na ESP32.
Ďalej pripojte dátový vstupný vodič z LED pásu na pin 14 na ESP32. Uistite sa, že sú pripojenia pevné, aby sa zabezpečil správny prenos údajov. Ak používate viacero pásov alebo dlhšie vzdialenosti, zvážte použitie prevodníka úrovní na zabezpečenie integrity signálu. Toto zapojenie vám umožní ovládať LED pás priamo z ESP32.
Príklady kódu a vysvetlenie
Kód používa knižnicu Adafruit NeoPixel na ovládanie WS2812 LED pásu. Začína inicializáciou LED pásu a nastavením počiatočnej farby na čiernu. Kľúčové identifikátory v kóde zahŕňajú LED_PIN, ktorý definuje pin pripojený k dátovému vodiču LED pásu, a NUM_LEDS, ktorý určuje počet LED v páse.
#include // Zahrnie knižnicu Adafruit NeoPixel
#define LED_PIN 14 // NeoPixel LED pás
#define NUM_LEDS 8 // Počet LED
Vo funkcii setup sa pás inicializuje pomocou strip.begin() a počiatočná farba sa nastaví na čiernu pomocou strip.show(). Toto pripraví pás na zmeny farieb počas behu programu.
void setup() {
strip.begin(); // Inicializuje NeoPixel pás
strip.show(); // Nastaví počiatočnú farbu na čiernu
}
Hlavná slučka programu pozostáva z dvoch for slučiek. Prvá slučka zapína každú LED postupne nastavením jej farby a aktualizáciou pásu. Druhá slučka vypína každú LED rovnakým spôsobom. Toto vytvára jednoduchú, ale efektívnu svetelnú animáciu.
void loop() {
// Zapína LED jednu po druhej
for (int i = 0; i < NUM_LEDS; i++) {
strip.setPixelColor(i, 100, 45, 0); // Nastaví farbu i-tej LED na červenú
strip.show(); // Aktualizuje LED pás s novými farbami
delay(100); // Počká 100 milisekúnd
}
// Vypína LED jednu po druhej
for (int i = 0; i < NUM_LEDS; i++) {
strip.setPixelColor(i, 0, 0, 0); // Nastaví farbu i-tej LED na čiernu (vypne ju)
strip.show(); // Aktualizuje LED pás s novými farbami
delay(100); // Počká 100 milisekúnd
}
}
Pozrite si kompletný kód načítaný pod článkom pre viac podrobností o implementácii rôznych farebných efektov a animácií.
Demonštrácia / Čo očakávať
Po dokončení zapojenia a nahraní kódu by ste mali vidieť, ako sa LED diódy na páse rozsvecujú jedna po druhej v určenej farbe, a potom sa v rovnakom poradí vypínajú. Tým sa vytvorí efekt „bežiaceho svetla". Ak sa LED diódy nerozsvietia podľa očakávania, skontrolujte svoje zapojenie a uistite sa, že je napájanie dostatočné. Tiež overte, že je v kóde definovaný správny pin (vo videu o 12:30).
Časové značky videa
- 00:00 Začiatok
- 1:40 Úvod do WS2812 LED
- 7:25 Stránka dokumentácie projektu
- 9:16 Vysvetlenie RGB farieb
- 13:16 Vysvetlenie zapojenia
- 13:48 Vysvetlenie Arduino kódu-1
- 19:03 Výber dosky ESP32 a portu v Arduino IDE
- 20:45 Ukážka kódu-1
- 22:00 Ovládanie jednotlivej LED
- 24:16 Kráčajúce svetlo LED
- 25:41 Svetlo tam a späť
#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
Things you might need
-
Amazon
-
eBay
-
AliExpressPurchase WS2812 LED stripe from AliExpresss.click.aliexpress.com
-
AliExpressPurchase WS2812 LED stripe from AliExpress-2s.click.aliexpress.com
-
BanggoodPurchase WS2812 LED stripe from Banggoodbanggood.com
Resources & references
No resources yet.
Files📁
No files available.