Search Code

ESP32 Tutorijal 6/55 - Korištenje RGB LED projekta 2.3 -SunFounder-ov ESP32 IoT komplet za učenje

ESP32 Tutorijal 6/55 - Korištenje RGB LED projekta 2.3 -SunFounder-ov ESP32 IoT komplet za učenje

U ovom tutorijalu naučit ćemo kako kontrolisati RGB LED koristeći ESP32 mikrokontroler. Ovaj projekat će vam pomoći da razumijete kako spojiti RGB LED i kontrolisati njegove boje koristeći PWM (Pulse Width Modulation) signale. Do kraja ovog tutorijala, moći ćete kreirati bilo koju kombinaciju boja podešavanjem intenziteta svake LED komponente. Ovo je osnovna vještina za kreiranje vizuelno privlačnih projekata.

Da bismo bolje razumjeli RGB LED i njegove mogućnosti miješanja boja, istražit ćemo ožičenje i kod potreban za njegovu kontrolu sa ESP32. Ako vam je potrebna vizuelna pomoć, svakako pogledajte video (u videu na 03:20) za jasnije objašnjenje ožičenja i postavke koda.

Objašnjenje hardvera

Glavne komponente ovog projekta uključuju ESP32 modul, RGB LED i otpornike. ESP32 je moćan mikrokontroler koji ima ugrađen Wi-Fi i Bluetooth, što ga čini idealnim za IoT aplikacije. RGB LED se sastoji od tri pojedinačne LED diode (crvene, zelene i plave) smještene u jednom pakovanju, što omogućava širok spektar boja na osnovu kombinacije tri boje.

U našoj postavci, RGB LED će biti spojen u konfiguraciji sa zajedničkom anodom, gdje je anodni pin spojen na pozitivni napon, a katodni pin svake boje se kontroliše nezavisno. Na ovaj način možemo podesiti svjetlinu svake boje slanjem PWM signala kroz ESP32.

Detalji iz tehničke dokumentacije

ProizvođačSunFounder
Broj dijelaRGB-LED-4PIN
Uobičajeni tipZajednička anoda
Napon provođenja (po LED diodi)2.0 V (crvena), 3.2 V (zelena), 3.2 V (plava)
Maksimalna struja (po LED diodi)20 mA
Radna temperatura-25 do 85 °C
Pakovanje4-pinski Through-hole

  • Koristite otpornik od 220 Ω za svaku boju kako biste ograničili struju i spriječili oštećenje.
  • Provjerite da je zajednički pin spojen na odgovarajući napon (3.3 V za ESP32).
  • Dvaput provjerite polaritet prilikom povezivanja RGB LED-a kako biste izbjegli oštećenje zbog obrnutog napona.
  • Koristite PWM za kontrolu nivoa svjetline, s preporučenom frekvencijom od oko 5000 Hz.
  • Testirajte svaku boju pojedinačno prije povezivanja cijele postavke.

Upute za ožičenje

Da biste spojili RGB LED na ESP32, počnite identifikacijom pinova na RGB LED-u. Najduži pin je zajednička anoda, koja će se spojiti na napajanje od 3.3 V na ESP32. Ostala tri pina su za crvenu, zelenu i plavu boju. U našoj postavci, spojite crveni pin na GPIO 27, zeleni pin na GPIO 26, a plavi pin na GPIO 25. Svaki od ovih pinova također će imati spojen otpornik od 220 Ω.

Počnite postavljanjem RGB LED-a na breadboard, pazeći da je zajednički anodni pin na lijevoj strani. Umetnite crveni pin u breadboard i spojite ga na jedan kraj otpornika, s drugim krajem otpornika koji ide na GPIO 27. Ponovite ovo za zeleni i plavi pin, spajajući zeleni pin na GPIO 26 i plavi pin na GPIO 25. Na kraju, spojite zajednički pin na pin od 3.3 V na ESP32 kako biste dovršili krug. Obavezno spojite i uzemljenje ESP32-a na breadboard.

ESP32_RGB_LED_wiring_lesson_06

Primjeri koda i objašnjenje

U kodu, počinjemo definiranjem pinova RGB LED-a koristeći konstante. Na primjer, const int redPin = 27; definira GPIO pin za crvenu LED diodu. Također postavljamo PWM frekvenciju i rezoluciju s const int freq = 5000; i const int resolution = 8;. Ovo postavlja potrebne parametre za kontrolu svjetline svake LED boje.

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

Zatim konfigurišemo PWM kanale za svaku boju u setup() funkciji. Funkcija ledcAttach() povezuje svaki pin s odgovarajućim PWM kanalom. Ova postavka osigurava da možemo kontrolisati svjetlinu svake boje nezavisno.

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

U loop() funkciji koristimo setColor() funkciju za promjenu boja LED-a. Vrijednosti proslijeđene ovoj funkciji predstavljaju intenzitet crvene, zelene i plave boje. Na primjer, pozivanje setColor(255, 0, 0); postavlja LED na crvenu boju. Nakon svake promjene boje, koristimo delay(1000); da sačekamo jednu sekundu prije prelaska na sljedeću boju.

void loop() {
  setColor(255, 0, 0); // Crvena
  delay(1000);
  setColor(0, 255, 0); // Zelena
  delay(1000);
}

Demonstracija / Šta očekivati

Nakon što dovršite ožičenje i prenesete kod na ESP32, trebali biste vidjeti kako RGB LED prolazi kroz različite boje: crvenu, zelenu, plavu, žutu, ljubičastu i cijan. Ako LED ne svijetli ispravno, dvaput provjerite ožičenje i osigurajte da je zajednička anoda spojena na 3.3 V. Dodatno, ako primijetite neočekivane boje, provjerite spojeve otpornika na pinove LED-a.

Kao što je demonstrirano u videu (u videu na 10:45), podešavanje vrijednosti u setColor() funkciji omogućava vam kreiranje različitih boja. Eksperimentišite s različitim kombinacijama kako biste vidjeli kako RGB LED reagira.

Vremenske oznake u videu

  • 00:00 - Uvod u RGB LED
  • 03:20 - Objašnjenje povezivanja
  • 10:45 - Pregled koda
  • 12:30 - Demonstracija miješanja boja

Images

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
Language: 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);
}

Resources & references

Files📁

No files available.