Search Code

Tutorial ESP32 6/55 - Utilizarea LED-ului RGB Proiectul 2.3 - Kitul de învățare IoT ESP32 de la SunFounder

Tutorial ESP32 6/55 - Utilizarea LED-ului RGB Proiectul 2.3 - Kitul de învățare IoT ESP32 de la SunFounder

În acest tutorial, vom învăța cum să controlăm un LED RGB folosind microcontrolerul ESP32. Acest proiect te va ajuta să înțelegi cum să conectezi LED-ul RGB și să-i controlezi culorile folosind semnale PWM (modulație în lățime a impulsurilor). La sfârșitul acestui tutorial, vei putea crea orice combinație de culori prin ajustarea intensității fiecărei componente LED. Aceasta este o abilitate fundamentală pentru crearea de proiecte vizual captivante.

Pentru a înțelege mai bine LED-ul RGB și capacitățile sale de amestecare a culorilor, vom explora cablarea și codul necesar pentru a-l controla cu ESP32. Dacă ai nevoie de asistență vizuală, asigură-te că verifici videoclipul (în videoclip la 03:20) pentru o explicație mai clară a cablării și a configurării codului.

Hardware Explicat

Componentele principale ale acestui proiect includ modulul ESP32, LED-ul RGB și rezistențele. ESP32 este un microcontroler puternic care are încorporate Wi-Fi și Bluetooth, fiind ideal pentru aplicații IoT. LED-ul RGB constă din trei LED-uri individuale (roșu, verde și albastru) găzduite într-un singur pachet, permițând o gamă largă de culori bazată pe combinația celor trei culori.

În configurarea noastră, LED-ul RGB va fi conectat într-o configurație cu anod comun, unde pinul anodului este conectat la o tensiune pozitivă, iar pinul catodului fiecărei culori este controlat independent. Astfel, putem ajusta luminozitatea fiecărei culori trimițând semnale PWM prin ESP32.

Detalii din Fișa Tehnică

ProducătorSunFounder
Număr de piesăRGB-LED-4PIN
Tip comunAnod comun
Tensiune directă (per LED)2,0 V (roșu), 3,2 V (verde), 3,2 V (albastru)
Curent maxim (per LED)20 mA
Temperatură de operare-25 până la 85 °C
Pachet4 pini, gaură traversantă

  • Folosește un rezistor de 220 Ω pentru fiecare culoare pentru a limita curentul și a preveni deteriorarea.
  • Asigură-te că pinul comun este conectat la tensiunea corespunzătoare (3,3 V pentru ESP32).
  • Verifică de două ori polaritatea când conectezi LED-ul RGB pentru a evita deteriorarea prin inversare.
  • Folosește PWM pentru a controla nivelurile de luminozitate, cu o frecvență în jur de 5000 Hz recomandată.
  • Testează fiecare culoare individual înainte de a cabla întreaga configurație.

Instrucțiuni de Cablare

Pentru a cabla LED-ul RGB la ESP32, începe prin identificarea pinilor de pe LED-ul RGB. Cel mai lung pin este anodul comun, care se va conecta la sursa de 3,3 V de pe ESP32. Ceilalți trei pini sunt pentru roșu, verde și albastru. În configurarea noastră, conectează pinul roșu la GPIO 27, pinul verde la GPIO 26 și pinul albastru la GPIO 25. Fiecare dintre acești pini va avea, de asemenea, un rezistor de 220 Ω conectat la ei.

Începe prin a plasa LED-ul RGB pe breadboard, asigurându-te că pinul anodului comun este pe stânga. Introdu pinul roșu în breadboard și conectează-l la un capăt al rezistorului, celălalt capăt al rezistorului mergând la GPIO 27. Repetă acest lucru pentru pinii verde și albastru, conectând pinul verde la GPIO 26 și pinul albastru la GPIO 25. În final, conectează pinul comun la pinul de 3,3 V de pe ESP32 pentru a completa circuitul. Asigură-te că conectezi și masa ESP32 la breadboard.

ESP32_RGB_LED_wiring_lesson_06

Exemple de Cod și Explicații

În cod, începem prin a defini pinii LED-ului RGB folosind constante. De exemplu, const int redPin = 27; definește pinul GPIO pentru LED-ul roșu. De asemenea, setăm frecvența PWM și rezoluția cu const int freq = 5000; și const int resolution = 8;. Aceasta configurează parametrii necesari pentru controlul luminozității fiecărei culori LED.

const int redPin = 27;
const int greenPin = 26;
const int bluePin = 25;

În continuare, configurăm canalele PWM pentru fiecare culoare în funcția setup(). Funcția ledcAttach() leagă fiecare pin de canalul PWM corespunzător. Această configurare asigură că putem controla luminozitatea fiecărei culori independent.

void setup() {
  ledcAttach(redPin, freq, resolution);
  ledcAttach(greenPin, freq, resolution);
  ledcAttach(bluePin, freq, resolution);
}

În funcția loop(), folosim funcția setColor() pentru a schimba culorile LED-ului. Valorile transmise acestei funcții reprezintă intensitatea roșului, verdele și albastrului. De exemplu, apelarea setColor(255, 0, 0); setează LED-ul la roșu. După fiecare schimbare de culoare, folosim delay(1000); pentru a aștepta o secundă înainte de a trece la următoarea culoare.

void loop() {
  setColor(255, 0, 0); // Roșu
  delay(1000);
  setColor(0, 255, 0); // Verde
  delay(1000);
}

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

După finalizarea cablării și încărcarea codului pe ESP32, ar trebui să vezi LED-ul RGB ciclând prin diverse culori: roșu, verde, albastru, galben, mov și cyan. Dacă LED-ul nu se aprinde corect, verifică de două ori cablarea și asigură-te că anodul comun este conectat la 3,3 V. În plus, dacă observi culori neașteptate, verifică conexiunile rezistorilor la pinii LED-ului.

După cum este demonstrat în videoclip (în videoclip la 10:45), ajustarea valorilor din funcția setColor() îți permite să creezi diferite culori. Experimentează cu diverse combinații pentru a vedea cum răspunde LED-ul RGB.

Marcaje Temporale din Videoclip

  • 00:00 - Introducere în LED-ul RGB
  • 03:20 - Explicația conexiunilor
  • 10:45 - Parcurgerea codului
  • 12:30 - Demonstrația amestecării culorilor

Imagini

ESP32_rgb_pin
ESP32_rgb_pin
ESP32_RGB_led_wires
ESP32_RGB_led_wires
ESP32_RGB_LED_wiring_lesson_06
ESP32_RGB_LED_wiring_lesson_06
806-ESP32 Tutorial 6/55 - Arduino code to control RGB LED with ESP32
Limba: C++
// Define RGB LED pins
const int redPin = 27;
const int greenPin = 26;
const int bluePin = 25;

// Define PWM frequency and resolution
const int freq = 5000;
const int resolution = 8;

void setup() {
  // Set up PWM pins
  ledcAttach(redPin, freq, resolution);
  ledcAttach(greenPin, freq, resolution);
  ledcAttach(bluePin, freq, resolution);
}

void loop() {
  setColor(255, 0, 0); // Red
  delay(1000);
  setColor(0, 255, 0); // Green
  delay(1000);
  setColor(0, 0, 255); // Blue
  delay(1000);
  setColor(255, 255, 0); // Yellow
  delay(1000);
  setColor(80, 0, 80); // Purple
  delay(1000);
  setColor(0, 255, 255); // Cyan
  delay(1000);
}

void setColor(int red, int green, int blue) {
  ledcWrite(redPin, red);
  ledcWrite(greenPin, green);
  ledcWrite(bluePin, blue);
}

Resurse și referințe

Fișiere📁

Nu sunt disponibile fișiere.