Pretraži kod

ESP32 Tutorijal 12/55 - WS2812 RGB traka 4. projekat sa SunFounder ESP32 IoT Learning kompletom

ESP32 Tutorijal 12/55 - WS2812 RGB traka 4. projekat sa SunFounder ESP32 IoT Learning kompletom

U ovom tutorijalu ćemo istražiti kako kontrolisati WS2812 LED traku koristeći ESP32 mikrokontroler. Ovaj projekat vam omogućava da kreirate različite boje i kontrolišete svaku LED diodu pojedinačno, pružajući zabavan i vizuelno privlačan način učenja o programiranju i elektronici. Do kraja ovog tutorijala, imaćete potpuno funkcionalnu postavku koja može dinamički menjati boje i obrasce.

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

Koristeći ESP32 mikrokontroler kompanije SunFounder, koji ima ugrađene Wi-Fi i Bluetooth mogućnosti, lako možemo povezati i kontrolisati WS2812 RGB LED traku. Fleksibilnost ove LED trake omogućava kreativne primene, bilo za dekorativno osvetljenje ili obrazovne projekte. Za bolje razumevanje koraka, možete pogledati video na (u videu na 00:00).

Objašnjenje hardvera

Glavne komponente za ovaj projekat uključuju ESP32 mikrokontroler i WS2812 LED traku. ESP32 je moćan mikrokontroler koji može obavljati zadatke slične onima kod Arduina, ali sa dodatnim mogućnostima povezivanja. Ima bogat skup funkcija koje mu omogućavaju povezivanje na oblak, omogućavajući daljinsko upravljanje i beleženje podataka.

WS2812 LED traka se sastoji od pojedinačno adresabilnih RGB LED dioda, što znači da se svaka LED dioda može kontrolisati da prikazuje različite boje. Traka radi na protokolu sa jednom žicom, omogućavajući da se više LED dioda poveže u lanac bez gubitka kvaliteta signala. Svaka LED dioda sadrži ugrađeni drajver koji prima ulazni signal i pojačava ga za sledeću LED diodu u lancu.

Detalji iz tehničke dokumentacije

Proizvođač Worldsemi
Broj dela WS2812
Logički/IO napon 3,5–5,3 V
Napon napajanja 5 V
Izlazna struja (po kanalu) 20 mA maks
Maksimalna struja (po kanalu) 60 mA maks
Preporuka za PWM frekvenciju 400 Hz
Ulazni logički pragovi 0,3 x VDD do 0,7 x VDD
Pad napona / RDS(on) / zasićenje 0,5 V maks
Termička ograničenja -25 do 80 °C
Pakovanje 5050
Napomene / varijante Može se povezivati u lanac za duže trake

 

  • Osigurajte odgovarajuće napajanje (5 V) da biste izbegli oštećenje LED dioda.
  • Koristite kondenzator (100 µF) preko terminala napajanja da biste izgladili naponske šiljke.
  • Držite žice za podatke kratkim da biste smanjili degradaciju signala.
  • Budite oprezni sa temperaturom LED dioda; osigurajte odgovarajuće odvođenje toplote.
  • Obratite pažnju na ispravan polaritet prilikom povezivanja napajanja i uzemljenja.
  • Koristite pull-up otpornik na liniji podataka ako koristite duge trake.

Uputstva za povezivanje

ESP32-12-WS2812-wiring

Da biste povezali WS2812 LED traku na ESP32, počnite povezivanjem napajanja. +5V žica sa LED trake treba da se poveže na 5V pin na ESP32, a žica za uzemljenje (GND) treba da se poveže na jedan od GND pinova na ESP32.

Zatim povežite žicu za ulaz podataka sa LED trake na pin 14 na ESP32. Uverite se da su veze sigurne kako biste osigurali ispravan prenos podataka. Ako koristite više traka ili duže udaljenosti, razmotrite korišćenje level shifter-a kako biste osigurali integritet signala. Ova postavka će vam omogućiti da direktno kontrolišete LED traku sa ESP32.

Primeri koda i objašnjenje

Kod koristi Adafruit NeoPixel biblioteku za kontrolu WS2812 LED trake. Počinje inicijalizacijom LED trake i postavljanjem početne boje na crnu. Ključni identifikatori u kodu uključuju LED_PIN, koji definiše pin povezan na liniju podataka LED trake, i NUM_LEDS, koji specificira broj LED dioda u traci.

#include  // Uključi Adafruit NeoPixel biblioteku

#define LED_PIN 14 // NeoPixel LED traka
#define NUM_LEDS 8 // Broj LED dioda

U setup funkciji, traka se inicijalizuje pomoću strip.begin(), a početna boja se postavlja na crnu sa strip.show(). Ovo priprema traku za promene boja kada program počne da se izvršava.

void setup() {
  strip.begin(); // Inicijalizuj NeoPixel traku
  strip.show(); // Postavi početnu boju na crnu
}

Glavna petlja programa sastoji se od dve for petlje. Prva petlja uključuje svaku LED diodu jednu po jednu postavljanjem njene boje i ažuriranjem trake. Druga petlja isključuje svaku LED diodu na isti način. Ovo stvara jednostavnu ali efikasnu svetlosnu animaciju.

void loop() {
  // Uključi LED diode jednu po jednu
  for (int i = 0; i < NUM_LEDS; i++) {
    strip.setPixelColor(i, 100, 45, 0); // Postavi boju i-te LED diode na crvenu
    strip.show(); // Ažuriraj LED traku sa novim bojama
    delay(100); // Sačekaj 100 milisekundi
  }
  
  // Isključi LED diode jednu po jednu
  for (int i = 0; i < NUM_LEDS; i++) {
    strip.setPixelColor(i, 0, 0, 0); // Postavi boju i-te LED diode na crnu (isključi je)
    strip.show(); // Ažuriraj LED traku sa novim bojama
    delay(100); // Sačekaj 100 milisekundi
  }
}

Pogledajte kompletan kod učitavanja ispod članka za više detalja o implementaciji različitih efekata boja i animacija.

Demonstracija / Šta očekivati

Nakon što završite s povezivanjem i prenesete kod, trebali biste vidjeti kako se LED diode na traci pale jedna po jedna u određenoj boji, nakon čega se gase istim redoslijedom. Ovo stvara efekat "trčećeg svjetla". Ako se LED diode ne upale kako se očekuje, provjerite ponovo svoje spojeve i osigurajte da je napajanje adekvatno. Također, provjerite da li je ispravan pin definiran u kodu (u videu na 12:30).

Vremenske oznake videa

  • 00:00 Početak
  • 1:40 Uvod u WS2812 LED
  • 7:25 Stranica s dokumentacijom projekta
  • 9:16 Objašnjena RGB boja
  • 13:16 Objašnjeno povezivanje
  • 13:48 Objašnjen Arduino kod-1
  • 19:03 Odabir ESP32 ploče i porta u Arduino IDE-u
  • 20:45 Demonstracija koda-1
  • 22:00 Upravljanje pojedinačnom LED diodom
  • 24:16 LED s hodajućim svjetlom
  • 25:41 Svjetlo naprijed i nazad

Slike

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

Stvari koje bi vam mogle zatrebati

Resursi i reference

Još nema resursa.

Datoteke📁

Nema dostupnih datoteka.