ESP32 Упатство 12/55 - WS2812 RGB Лента 4 Проект со SunFounder-овиот ESP32 IoT комплет за учење
Во ова упатство, ќе истражиме како да контролираме WS2812 LED лента користејќи го ESP32 микроконтролерот. Овој проект ви овозможува да креирате различни бои и да контролирате секоја LED поединечно, обезбедувајќи забавен и визуелно привлечен начин за учење за програмирање и електроника. До крајот на ова упатство, ќе имате целосно функционална поставка што може динамички да менува бои и шеми.
Користејќи го ESP32 микроконтролерот од SunFounder, кој има вградени Wi-Fi и Bluetooth можности, можеме лесно да поврземе и контролираме WS2812 RGB LED лента. Флексибилноста на оваа LED лента овозможува креативни апликации, било за декоративно осветлување или за образовни проекти. За подобро разбирање на чекорите, можете да се повикате на видеото на (во видеото на 00:00).
Објаснување на хардверот
Главните компоненти за овој проект вклучуваат ESP32 микроконтролер и WS2812 LED лента. ESP32 е моќен микроконтролер што може да извршува задачи слични на Arduino, но со дополнителни опции за поврзување. Има богат сет на функции што му овозможуваат да се поврзе со облакот, овозможувајќи далечинско управување и евиденција на податоци.
WS2812 LED лентата се состои од поединечно адресирани RGB LED диоди, што значи дека секоја LED може да се контролира да прикажува различни бои. Лентата работи на протокол со една жица, овозможувајќи повеќе LED диоди да се поврзат во синџир без губење на квалитетот на сигналот. Секоја LED содржи вграден драјвер што го зема влезниот сигнал и го засилува за следната LED во синџирот.
Детали од техничката документација
| Производител | Worldsemi |
|---|---|
| Број на дел | WS2812 |
| Логички/IO напон | 3.5–5.3 V |
| Напон на напојување | 5 V |
| Излезна струја (по канал) | 20 mA макс |
| Врвна струја (по канал) | 60 mA макс |
| Насоки за PWM фреквенција | 400 Hz |
| Прагови на влезна логика | 0.3 x VDD до 0.7 x VDD |
| Пад на напон / RDS(on) / заситување | 0.5 V макс |
| Термички граници | -25 до 80 °C |
| Пакет | 5050 |
| Белешки / варијанти | Може да се поврзе во синџир за подолги ленти |
- Обезбедете соодветно напојување (5 V) за да избегнете оштетување на LED диодите.
- Користете кондензатор (100 µF) преку терминалите за напојување за да ги изедначите напонските бранови.
- Држете ги жиците за податоци кратки за да го намалите деградирањето на сигналот.
- Бидете внимателни на температурата на LED диодите; обезбедете соодветно расејување на топлина.
- Почитувајте ја правилната поларност при поврзување на напојувањето и земјата.
- Користете отпорник за повлекување нагоре на линијата за податоци ако користите долги ленти.
Инструкции за жици

За да ја поврзете WS2812 LED лентата со ESP32, започнете со поврзување на напојувањето. Жицата +5V од LED лентата треба да се поврзе со пин 5V на ESP32, а жицата за земја (GND) треба да се поврзе со еден од GND пиновите на ESP32.
Следно, поврзете ја жицата за влез на податоци од LED лентата со пин 14 на ESP32. Осигурете се дека врските се сигурни за да се обезбеди правилен пренос на податоци. Ако користите повеќе ленти или подолги растојанија, размислете за користење на ниво-шифтер за да обезбедите интегритет на сигналот. Оваа поставка ќе ви овозможи да ја контролирате LED лентата директно од ESP32.
Примери на код и објаснување
Кодот ја користи Adafruit NeoPixel библиотеката за контрола на WS2812 LED лентата. Започнува со иницијализирање на LED лентата и поставување на почетната боја на црна. Клучните идентификатори во кодот вклучуваат LED_PIN, што го дефинира пинот поврзан со линијата за податоци на LED лентата, и NUM_LEDS, што го специфицира бројот на LED диоди во лентата.
#include // Вклучете ја Adafruit NeoPixel библиотеката
#define LED_PIN 14 // NeoPixel LED лента
#define NUM_LEDS 8 // Број на LED диоди
Во функцијата за поставување, лентата се иницијализира со strip.begin(), и почетната боја се поставува на црна со strip.show(). Ова ја подготвува лентата за промени на бои кога програмата ќе работи.
void setup() {
strip.begin(); // Иницијализирајте ја NeoPixel лентата
strip.show(); // Поставете ја почетната боја на црна
}
Главната јамка на програмата се состои од две for јамки. Првата јамка вклучува секоја LED една по една со поставување на нејзината боја и ажурирање на лентата. Втората јамка ја исклучува секоја LED на ист начин. Ова создава едноставна, но ефективна светлосна анимација.
void loop() {
// Вклучете ги LED диодите една по една
for (int i = 0; i < NUM_LEDS; i++) {
strip.setPixelColor(i, 100, 45, 0); // Поставете ја бојата на i-тата LED на црвена
strip.show(); // Ажурирајте ја LED лентата со новите бои
delay(100); // Почекајте 100 милисекунди
}
// Исклучете ги LED диодите една по една
for (int i = 0; i < NUM_LEDS; i++) {
strip.setPixelColor(i, 0, 0, 0); // Поставете ја бојата на i-тата LED на црна (исклучете ја)
strip.show(); // Ажурирајте ја LED лентата со новите бои
delay(100); // Почекајте 100 милисекунди
}
}
Погледнете го целосното вчитување на кодот под статијата за повеќе детали за тоа како да имплементирате различни ефекти на бои и анимации.
Демонстрација / Што да очекувате
Откако ќе го завршите поврзувањето и ќе го поставите кодот, треба да видите како LED диодите на лентата светнуваат една по една во одредена боја, проследено со нивно исклучување во истата низа. Ова создава ефект на „трчачко светло“. Ако LED диодите не светнат како што се очекува, проверете ги повторно жичените врски и осигурете се дека напојувањето е соодветно. Исто така, потврдете дека точниот пин е дефиниран во кодот (во видеото на 12:30).
Временски ознаки на видеото
- 00:00 Почеток
- 1:40 Вовед во WS2812 LED
- 7:25 Страница со документација на проектот
- 9:16 Објаснување на RGB бојата
- 13:16 Објаснување на поврзувањето
- 13:48 Објаснување на Arduino код-1
- 19:03 Избор на ESP32 плоча и порт во Arduino IDE
- 20:45 Демонстрација на код-1
- 22:00 Контролирање на индивидуална LED диода
- 24:16 LED со одење светло
- 25:41 Светло напред и назад
#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
Работи што можеби ќе ви требаат
-
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
Ресурси и референци
Сè уште нема ресурси.
Датотеки📁
Нема достапни датотеки.