Search Code

Samouczek ESP32 12/55 - Projekt 4 z paskiem RGB WS2812 z zestawem edukacyjnym IoT ESP32 od SunFounder

Samouczek ESP32 12/55 - Projekt 4 z paskiem RGB WS2812 z zestawem edukacyjnym IoT ESP32 od SunFounder

W tym samouczku dowiemy się, jak sterować paskiem LED WS2812 za pomocą mikrokontrolera ESP32. Ten projekt pozwala tworzyć różnorodne kolory i sterować każdą diodą LED indywidualnie, zapewniając zabawny i atrakcyjny wizualnie sposób nauki programowania i elektroniki. Po ukończeniu tego samouczka będziesz mieć w pełni funkcjonalny układ, który może dynamicznie zmieniać kolory i wzory.

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

Używając mikrokontrolera ESP32 firmy SunFounder, który posiada wbudowaną łączność Wi-Fi i Bluetooth, możemy łatwo podłączyć i sterować paskiem LED RGB WS2812. Elastyczność tego paska LED pozwala na kreatywne zastosowania, zarówno w dekoracyjnym oświetleniu, jak i w projektach edukacyjnych. Aby lepiej zrozumieć poszczególne kroki, możesz odwołać się do filmu (na filmie w czasie 00:00).

Omówienie sprzętu

Główne komponenty tego projektu to mikrokontroler ESP32 oraz pasek LED WS2812. ESP32 to wydajny mikrokontroler, który może wykonywać zadania podobne do Arduino, ale z dodatkowymi opcjami łączności. Posiada bogaty zestaw funkcji umożliwiających połączenie z chmurą, co pozwala na zdalne sterowanie i rejestrowanie danych.

Pasek LED WS2812 składa się z indywidualnie adresowalnych diod LED RGB, co oznacza, że każdą diodą można sterować tak, aby wyświetlała różne kolory. Pasek działa w oparciu o protokół jednowarstwowy, umożliwiający łączenie wielu diod LED w łańcuch bez utraty jakości sygnału. Każda dioda LED zawiera wbudowany sterownik, który odbiera sygnał wejściowy i wzmacnia go dla następnej diody w łańcuchu.

Szczegóły z karty katalogowej

Producent Worldsemi
Numer części WS2812
Napięcie logiczne/IO 3,5–5,3 V
Napięcie zasilania 5 V
Prąd wyjściowy (na kanał) maks. 20 mA
Prąd szczytowy (na kanał) maks. 60 mA
Zalecana częstotliwość PWM 400 Hz
Progi logiczne wejścia 0,3 x VDD do 0,7 x VDD
Spadek napięcia / RDS(on) / nasycenie maks. 0,5 V
Limity termiczne -25 do 80 °C
Obudowa 5050
Uwagi / warianty Można łączyć w łańcuch dla dłuższych pasków

 

  • Zapewnij odpowiednie zasilanie (5 V), aby uniknąć uszkodzenia diod LED.
  • Użyj kondensatora (100 µF) na zaciskach zasilania, aby wygładzić skoki napięcia.
  • Utrzymuj krótkie przewody danych, aby zmniejszyć degradację sygnału.
  • Zwracaj uwagę na temperaturę diod LED; zapewnij odpowiednie odprowadzanie ciepła.
  • Zachowaj właściwą polaryzację przy podłączaniu zasilania i masy.
  • Użyj rezystora podciągającego na linii danych w przypadku długich pasków.

Instrukcje podłączenia

ESP32-12-WS2812-wiring

Aby podłączyć pasek LED WS2812 do ESP32, zacznij od podłączenia zasilania. Przewód +5V z paska LED należy podłączyć do pinu 5V na ESP32, a przewód masy (GND) do jednego z pinów GND na ESP32.

Następnie podłącz przewód wejścia danych z paska LED do pinu 14 na ESP32. Upewnij się, że połączenia są pewne, aby zapewnić prawidłową transmisję danych. Jeśli używasz wielu pasków lub dłuższych odległości, rozważ użycie konwertera poziomów, aby zapewnić integralność sygnału. Taka konfiguracja pozwoli Ci sterować paskiem LED bezpośrednio z ESP32.

Przykłady kodu i omówienie

Kod używa biblioteki Adafruit NeoPixel do sterowania paskiem LED WS2812. Zaczyna się od inicjalizacji paska LED i ustawienia początkowego koloru na czarny. Kluczowe identyfikatory w kodzie to LED_PIN, który definiuje pin podłączony do linii danych paska LED, oraz NUM_LEDS, który określa liczbę diod LED w pasku.

#include  // Dołącz bibliotekę Adafruit NeoPixel

#define LED_PIN 14 // Pasek LED NeoPixel
#define NUM_LEDS 8 // Liczba diod LED

W funkcji setup pasek jest inicjalizowany za pomocą strip.begin(), a początkowy kolor jest ustawiany na czarny za pomocą strip.show(). To przygotowuje pasek do zmian kolorów podczas działania programu.

void setup() {
  strip.begin(); // Inicjalizuj pasek NeoPixel
  strip.show(); // Ustaw początkowy kolor na czarny
}

Główna pętla programu składa się z dwóch pętli for. Pierwsza pętla włącza każdą diodę LED po kolei, ustawiając jej kolor i aktualizując pasek. Druga pętla wyłącza każdą diodę LED w ten sam sposób. Tworzy to prostą, ale skuteczną animację świetlną.

void loop() {
  // Włącz diody LED jedna po drugiej
  for (int i = 0; i < NUM_LEDS; i++) {
    strip.setPixelColor(i, 100, 45, 0); // Ustaw kolor i-tej diody LED na czerwony
    strip.show(); // Zaktualizuj pasek LED nowymi kolorami
    delay(100); // Poczekaj 100 milisekund
  }
  
  // Wyłącz diody LED jedna po drugiej
  for (int i = 0; i < NUM_LEDS; i++) {
    strip.setPixelColor(i, 0, 0, 0); // Ustaw kolor i-tej diody LED na czarny (wyłącz ją)
    strip.show(); // Zaktualizuj pasek LED nowymi kolorami
    delay(100); // Poczekaj 100 milisekund
  }
}

Obejrzyj pełne ładowanie kodu poniżej artykułu, aby uzyskać więcej informacji na temat implementacji różnych efektów kolorystycznych i animacji.

Demonstracja / Czego się spodziewać

Po zakończeniu podłączania przewodów i wgraniu kodu powinieneś zobaczyć, jak diody LED na pasku zapalają się jedna po drugiej w określonym kolorze, a następnie gasną w tej samej kolejności. Tworzy to efekt „biegnącego światła”. Jeśli diody LED nie zapalają się zgodnie z oczekiwaniami, sprawdź ponownie połączenia przewodów i upewnij się, że zasilanie jest wystarczające. Zweryfikuj również, czy w kodzie zdefiniowano właściwy pin (na filmie o 12:30).

Znaczniki czasowe filmu

  • 00:00 Start
  • 1:40 Wprowadzenie do diody LED WS2812
  • 7:25 Strona dokumentacji projektu
  • 9:16 Wyjaśnienie koloru RGB
  • 13:16 Wyjaśnienie podłączenia przewodów
  • 13:48 Wyjaśnienie kodu Arduino-1
  • 19:03 Wybór płytki ESP32 i portu w Arduino IDE
  • 20:45 Demonstracja kodu-1
  • 22:00 Sterowanie pojedynczą diodą LED
  • 24:16 Przesuwające się światło LED
  • 25:41 Światło w przód i w tył

Obrazy

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
Język: 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
  }
}

Rzeczy, których możesz potrzebować

Zasoby i odniesienia

Brak zasobów.

Pliki📁

Brak dostępnych plików.