Caută cod

Tutorial ESP32 12/55 - Proiect 4 cu bandă RGB WS2812 cu kitul de învățare IoT ESP32 de la SunFounder

Tutorial ESP32 12/55 - Proiect 4 cu bandă RGB WS2812 cu kitul de învățare IoT ESP32 de la SunFounder

În acest tutorial, vom explora cum să controlăm o bandă LED WS2812 folosind microcontrolerul ESP32. Acest proiect îți permite să creezi o varietate de culori și să controlezi fiecare LED individual, oferind o modalitate distractivă și plăcută vizual de a învăța despre programare și electronică. Până la sfârșitul acestui tutorial, vei avea o configurație complet funcțională care poate schimba culorile și modelele dinamic.

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

Folosind microcontrolerul ESP32 de la SunFounder, care are capacități integrate Wi-Fi și Bluetooth, putem conecta și controla cu ușurință banda LED RGB WS2812. Flexibilitatea acestei benzi LED permite aplicații creative, fie pentru iluminat decorativ, fie pentru proiecte educaționale. Pentru o mai bună înțelegere a pașilor implicați, te poți referi la videoclipul de la (în videoclip la 00:00).

Hardware Explicat

Componentele principale pentru acest proiect includ microcontrolerul ESP32 și banda LED WS2812. ESP32 este un microcontroler puternic care poate îndeplini sarcini similare cu cele ale unui Arduino, dar cu opțiuni suplimentare de conectivitate. Are un set bogat de caracteristici care îi permit să se conecteze la cloud, permițând controlul de la distanță și înregistrarea datelor.

Banda LED WS2812 constă din LED-uri RGB adresabile individual, ceea ce înseamnă că fiecare LED poate fi controlat pentru a afișa culori diferite. Banda funcționează pe un protocol cu un singur fir, permițând ca mai multe LED-uri să fie conectate în lanț fără a pierde calitatea semnalului. Fiecare LED conține un driver integrat care preia semnalul de intrare și îl amplifică pentru următorul LED din lanț.

Detalii din Fișa Tehnică

Producător Worldsemi
Număr de piesă WS2812
Tensiune logică/IO 3,5–5,3 V
Tensiune de alimentare 5 V
Curent de ieșire (pe canal) 20 mA max
Curent de vârf (pe canal) 60 mA max
Ghid de frecvență PWM 400 Hz
Praguri logice de intrare 0,3 x VDD la 0,7 x VDD
Cădere de tensiune / RDS(on) / saturație 0,5 V max
Limite termice -25 până la 80 °C
Pachet 5050
Note / variante Poate fi conectat în lanț pentru benzi mai lungi

 

  • Asigură o alimentare adecvată (5 V) pentru a evita deteriorarea LED-urilor.
  • Folosește un condensator (100 µF) pe bornele sursei de alimentare pentru a netezi vârfurile de tensiune.
  • Păstrează firele de date scurte pentru a reduce degradarea semnalului.
  • Fii atent la temperatura LED-urilor; asigură o disipare adecvată a căldurii.
  • Respectă polaritatea corectă atunci când conectezi alimentarea și masa.
  • Utilizează un rezistor de pull-up pe linia de date dacă folosești benzi lungi.

Instrucțiuni de Cablare

ESP32-12-WS2812-wiring

Pentru a conecta banda LED WS2812 la ESP32, începe prin conectarea sursei de alimentare. Firul +5V de la banda LED ar trebui conectat la pinul 5V de pe ESP32, iar firul de masă (GND) ar trebui conectat la unul dintre pinii GND de pe ESP32.

Apoi, conectează firul de intrare de date de la banda LED la pinul 14 de pe ESP32. Asigură-te că conexiunile sunt sigure pentru a garanta transmiterea corectă a datelor. Dacă folosești mai multe benzi sau distanțe mai lungi, ia în considerare utilizarea unui schimbător de nivel pentru a asigura integritatea semnalului. Această configurare îți va permite să controlezi banda LED direct de la ESP32.

Exemple de Cod & Explicații

Codul folosește biblioteca Adafruit NeoPixel pentru a controla banda LED WS2812. Începe prin inițializarea benzii LED și setarea culorii inițiale la negru. Identificatorii cheie din cod includ LED_PIN, care definește pinul conectat la linia de date a benzii LED, și NUM_LEDS, care specifică numărul de LED-uri din bandă.

#include  // Include biblioteca Adafruit NeoPixel

#define LED_PIN 14 // Bandă LED NeoPixel
#define NUM_LEDS 8 // Numărul de LED-uri

În funcția de configurare, banda este inițializată folosind strip.begin(), iar culoarea inițială este setată la negru cu strip.show(). Aceasta pregătește banda pentru schimbările de culoare atunci când programul rulează.

void setup() {
  strip.begin(); // Inițializează banda NeoPixel
  strip.show(); // Setează culoarea inițială la negru
}

Bucla principală a programului constă în două bucle for. Prima buclă aprinde fiecare LED unul câte unul setându-i culoarea și actualizând banda. A doua buclă stinge fiecare LED în același mod. Aceasta creează o animație luminoasă simplă, dar eficientă.

void loop() {
  // Aprinde LED-urile unul câte unul
  for (int i = 0; i < NUM_LEDS; i++) {
    strip.setPixelColor(i, 100, 45, 0); // Setează culoarea LED-ului i la roșu
    strip.show(); // Actualizează banda LED cu noile culori
    delay(100); // Așteaptă 100 de milisecunde
  }
  
  // Stinge LED-urile unul câte unul
  for (int i = 0; i < NUM_LEDS; i++) {
    strip.setPixelColor(i, 0, 0, 0); // Setează culoarea LED-ului i la negru (îl stinge)
    strip.show(); // Actualizează banda LED cu noile culori
    delay(100); // Așteaptă 100 de milisecunde
  }
}

Urmărește încărcarea completă a codului de mai jos în articol pentru mai multe detalii despre cum să implementezi diferite efecte de culoare și animații.

Demonstrație / Ce să Te Aștepți

După ce ați finalizat cablarea și ați încărcat codul, ar trebui să vedeți LED-urile de pe banda luminoasă aprinzându-se unul câte unul într-o culoare specificată, urmate de stingerea lor în aceeași secvență. Aceasta creează un efect de „lumină alergătoare". Dacă LED-urile nu se aprind conform așteptărilor, verificați din nou conexiunile de cablare și asigurați-vă că sursa de alimentare este adecvată. De asemenea, verificați că pinul corect este definit în cod (în video la 12:30).

Marcaje temporale video

  • 00:00 Start
  • 1:40 Introducere în LED-ul WS2812
  • 7:25 Pagina de documentație a proiectului
  • 9:16 Culoarea RGB explicată
  • 13:16 Cablarea explicată
  • 13:48 Codul Arduino-1 explicat
  • 19:03 Selectarea plăcii ESP32 și a portului în Arduino IDE
  • 20:45 Demonstrație Cod-1
  • 22:00 Controlul individual al LED-ului
  • 24:16 LED cu lumină mergătoare
  • 25:41 Lumină înainte și înapoi

Imagini

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
Limba: 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
  }
}

Lucruri de care ai putea avea nevoie

Resurse și referințe

Încă nu sunt resurse.

Fișiere📁

Nu sunt disponibile fișiere.