Code zoeken

ESP32 Tutorial 12/55 - WS2812 RGB Strip 4 Project met SunFounder's ESP32 IoT Learning kit

ESP32 Tutorial 12/55 - WS2812 RGB Strip 4 Project met SunFounder's ESP32 IoT Learning kit

In deze tutorial verkennen we hoe je een WS2812 LED-strip kunt aansturen met de ESP32-microcontroller. Dit project stelt je in staat om een verscheidenheid aan kleuren te creëren en elke LED afzonderlijk te besturen, wat een leuke en visueel aantrekkelijke manier biedt om te leren over programmeren en elektronica. Aan het einde van deze tutorial heb je een volledig functionele opstelling die dynamisch kleuren en patronen kan veranderen.

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

Met behulp van de ESP32-microcontroller van SunFounder, die ingebouwde Wi-Fi- en Bluetooth-mogelijkheden heeft, kunnen we eenvoudig de WS2812 RGB LED-strip aansluiten en aansturen. De flexibiliteit van deze LED-strip maakt creatieve toepassingen mogelijk, of het nu gaat om decoratieve verlichting of educatieve projecten. Voor een beter begrip van de betrokken stappen kun je verwijzen naar de video op (in video op 00:00).

Hardware uitgelegd

De belangrijkste componenten voor dit project zijn de ESP32-microcontroller en de WS2812 LED-strip. De ESP32 is een krachtige microcontroller die taken kan uitvoeren die vergelijkbaar zijn met die van een Arduino, maar met extra connectiviteitsopties. Het heeft een rijke set functies waarmee het verbinding kan maken met de cloud, waardoor externe bediening en datalogging mogelijk zijn.

De WS2812 LED-strip bestaat uit individueel adresseerbare RGB-LED's, wat betekent dat elke LED kan worden aangestuurd om verschillende kleuren weer te geven. De strip werkt op een single-wire-protocol, waardoor meerdere LED's aan elkaar kunnen worden gekoppeld zonder verlies van signaalkwaliteit. Elke LED bevat een ingebouwde driver die het ingangssignaal neemt en versterkt voor de volgende LED in de keten.

Datasheet-details

Fabrikant Worldsemi
Onderdeelnummer WS2812
Logica/IO-spanning 3,5–5,3 V
Voedingsspanning 5 V
Uitgangsstroom (per kanaal) 20 mA max
Piekstroom (per kanaal) 60 mA max
PWM-frequentierichtlijn 400 Hz
Ingangslogische drempels 0,3 x VDD tot 0,7 x VDD
Spanningsval / RDS(on) / verzadiging 0,5 V max
Thermische limieten -25 tot 80 °C
Behuizing 5050
Opmerkingen / varianten Kan worden gekoppeld voor langere strips

 

  • Zorg voor een juiste voedingsspanning (5 V) om LED-schade te voorkomen.
  • Gebruik een condensator (100 µF) over de voedingsaansluitingen om spanningspieken te egaliseren.
  • Houd datadraden kort om signaalverslechtering te verminderen.
  • Wees voorzichtig met de LED-temperatuur; zorg voor een goede warmteafvoer.
  • Let op de juiste polariteit bij het aansluiten van voeding en aarde.
  • Gebruik een pull-up-weerstand op de datalijn bij lange strips.

Bedradingsinstructies

ESP32-12-WS2812-wiring

Om de WS2812 LED-strip op de ESP32 aan te sluiten, begin je met het aansluiten van de voeding. De +5V-draad van de LED-strip moet worden aangesloten op de 5V-pin van de ESP32, en de aarddraad (GND) moet worden aangesloten op een van de GND-pinnen van de ESP32.

Sluit vervolgens de data-ingangsdraad van de LED-strip aan op pin 14 van de ESP32. Zorg ervoor dat de verbindingen stevig zijn om een correcte datatransmissie te garanderen. Als je meerdere strips of langere afstanden gebruikt, overweeg dan een level shifter te gebruiken om de signaalintegriteit te waarborgen. Deze opstelling stelt je in staat om de LED-strip rechtstreeks vanaf de ESP32 aan te sturen.

Codevoorbeelden & uitleg

De code gebruikt de Adafruit NeoPixel-bibliotheek om de WS2812 LED-strip aan te sturen. Het begint met het initialiseren van de LED-strip en het instellen van de initiële kleur op zwart. De belangrijkste identificatoren in de code zijn LED_PIN, die de pin definieert die is verbonden met de datalijn van de LED-strip, en NUM_LEDS, die het aantal LED's in de strip specificeert.

#include  // Inclusief de Adafruit NeoPixel-bibliotheek

#define LED_PIN 14 // NeoPixel LED-strip
#define NUM_LEDS 8 // Aantal LED's

In de setup-functie wordt de strip geïnitialiseerd met strip.begin(), en de initiële kleur wordt ingesteld op zwart met strip.show(). Dit bereidt de strip voor op kleurveranderingen wanneer het programma wordt uitgevoerd.

void setup() {
  strip.begin(); // Initialiseer de NeoPixel-strip
  strip.show(); // Stel initiële kleur in op zwart
}

De hoofdloop van het programma bestaat uit twee for-lussen. De eerste lus schakelt elke LED één voor één in door de kleur in te stellen en de strip bij te werken. De tweede lus schakelt elke LED op dezelfde manier uit. Dit creëert een eenvoudige maar effectieve lichtanimatie.

void loop() {
  // Schakel LED's één voor één in
  for (int i = 0; i < NUM_LEDS; i++) {
    strip.setPixelColor(i, 100, 45, 0); // Stel de kleur van de i-de LED in op rood
    strip.show(); // Werk de LED-strip bij met de nieuwe kleuren
    delay(100); // Wacht 100 milliseconden
  }
  
  // Schakel LED's één voor één uit
  for (int i = 0; i < NUM_LEDS; i++) {
    strip.setPixelColor(i, 0, 0, 0); // Stel de kleur van de i-de LED in op zwart (schakel uit)
    strip.show(); // Werk de LED-strip bij met de nieuwe kleuren
    delay(100); // Wacht 100 milliseconden
  }
}

Bekijk de volledige code onder het artikel voor meer details over het implementeren van verschillende kleureffecten en animaties.

Demonstratie / Wat te verwachten

Zodra je de bedrading hebt voltooid en de code hebt geüpload, zou je de LEDs op de strip één voor één moeten zien oplichten in een bepaalde kleur, gevolgd door dat ze in dezelfde volgorde uitgaan. Dit creëert een "looplicht"-effect. Als de LEDs niet oplichten zoals verwacht, controleer dan opnieuw je bedradingsverbindingen en zorg ervoor dat de voeding voldoende is. Controleer ook of de juiste pin in de code is gedefinieerd (in de video op 12:30).

Video-tijdstempels

  • 00:00 Start
  • 1:40 Introductie tot WS2812 LED
  • 7:25 Projectdocumentatiepagina
  • 9:16 RGB-kleur uitgelegd
  • 13:16 Bedrading uitgelegd
  • 13:48 Arduino Code-1 uitgelegd
  • 19:03 ESP32-board en poort selecteren in Arduino IDE
  • 20:45 Code-1 Demo
  • 22:00 Individuele LED aansturen
  • 24:16 Looplicht LED
  • 25:41 Heen en weer licht

Afbeeldingen

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

Dingen die je misschien nodig hebt

Hulpmiddelen en referenties

Nog geen middelen.

Bestanden📁

Geen bestanden beschikbaar.