Hľadať kód

Návod na ESP32 14/55 – Prehrávanie vlastnej hudobnej noty pomocou SunFounder ESP32 IoT Learning kit

Návod na ESP32 14/55 – Prehrávanie vlastnej hudobnej noty pomocou SunFounder ESP32 IoT Learning kit

V tomto návode sa naučíme, ako používať mikrokontrolér SunFounder ESP32 na prehrávanie hudobných tónov pomocou pasívneho bzučiaka a tranzistora. Cieľom projektu je demonštrovať, ako generovať zvuk so špecifickými frekvenciami ovládaním bzučiaka cez GPIO piny ESP32.

Pripojíme pasívny bzučiak k ESP32, čo nám umožní produkovať rôzne hudobné tóny na základe frekvencie, ktorú poskytneme. Toto zapojenie zahŕňa použitie tranzistora na prepínanie bzučiaka zapnutého a vypnutého pri vysokých rýchlostiach, čím vytvárame zvukové vlny, ktoré môžeme počuť. Pre ďalšie objasnenie projektu si určite pozrite video (vo videu o 00:30).

ESP32-13-buzzer-schematic

Vysvetlenie hardvéru

Hlavné komponenty použité v tomto projekte zahŕňajú mikrokontrolér SunFounder ESP32, pasívny bzučiak a NPN tranzistor (2N8050). ESP32 je výkonná vývojová doska so vstavanými funkciami Wi-Fi a Bluetooth, čo ju robí všestrannou pre rôzne IoT aplikácie. V tomto prípade bude generovať signály na ovládanie bzučiaka.

Pasívny bzučiak funguje tak, že generuje zvuk, keď sa naň aplikuje striedavé napätie. Na rozdiel od aktívnych bzučiakov, ktoré majú vstavaný oscilátor, pasívne bzučiaky vyžadujú externý signál na produkciu zvuku. Tranzistor funguje ako spínač, ktorý umožňuje ESP32 ovládať bzučiak bez priameho napájania, čím sa zabezpečuje, že prúdové zaťaženie mikrokontroléra nie je prekročené.

S87050_transistor

Podrobnosti z datasheetu

Výrobca SunFounder
Označenie dielu Pasívny bzučiak
Prevádzkové napätie 3,3 V - 5 V
Rezonančná frekvencia 2 kHz - 4 kHz
Prúdová spotreba ≤ 30 mA
Úroveň akustického tlaku ≥ 70 dB
Puzdro Through-hole
Poznámky / varianty Žiadne

 

  • Pri pripájaní bzučiaka zabezpečte správnu polaritu.
  • Použite odpor obmedzujúci prúd pre bázu tranzistora.
  • Pripojte bzučiak k napájaciemu zdroju kompatibilnému s jeho menovitým napätím.
  • Dávajte pozor na prekročenie maximálneho prúdového zaťaženia tranzistora.
  • Udržiavajte zapojenie prehľadné, aby ste predišli skratom.
  • Pred nahratím kódu otestujte obvod, aby ste predišli poškodeniu komponentov.
  • Použite breadboard pre jednoduché pripojenie komponentov.
  • Ak používate tlačidlá, nezabudnite ošetriť zákmit.
  • Zvážte pridanie chladiča pre tranzistor, ak sa používa pri vysokom prúde.

Pokyny na zapojenie

ESP32-13-buzzer-wriing

Na zapojenie komponentov začnite pripojením kladného pólu pasívneho bzučiaka na pin 3,3V na ESP32. Záporný pól bzučiaka by mal byť pripojený na kolektor NPN tranzistora. Emitorový pin tranzistora by mal byť zapojený na zem (GND) ESP32.

Ďalej pripojte odpor 1 kΩ z bázy tranzistora na GPIO pin 14 na ESP32. Tento odpor obmedzuje prúd tečúci do bázy tranzistora. Nakoniec sa uistite, že všetky uzemňovacie pripojenia sú spojené dohromady, aby poskytovali spoločný referenčný bod pre obvod.

Príklady kódu a vysvetlenie

const int buzzerPin = 14; // pin bzučiaka

void setup()
{
  pinMode(buzzerPin, OUTPUT); // Nastaviť ako výstup
}

V kóde definujeme konštantnú premennú buzzerPin, ktorá je nastavená na 14, čo označuje GPIO pin pripojený na bázu tranzistora. Vo funkcii setup() nastavíme tento pin ako VÝSTUP, čo umožňuje ESP32 ovládať bzučiak.

void loop()
{
  for (int i = 0; i < 50; i++) // Slučka 50-krát a zakaždým prehrá krátky tón
  {
    digitalWrite(buzzerPin, HIGH); // Nastaviť na HIGH, aby bzučiak zaznel
    delay(3); // Počkať 3 milisekundy
    digitalWrite(buzzerPin, LOW); // LOW na vypnutie bzučiaka
    delay(3); // 
  }
  delay(1000); // Počkať 1s pred spustením ďalšej slučky
}

Funkcia loop() obsahuje for-slučku, ktorá sa spustí 50-krát. Každá iterácia rýchlo zapína a vypína bzučiak, čím vytvára tón. Oneskorenia 3 milisekúnd riadia, ako dlho je bzučiak aktivovaný a deaktivovaný, zatiaľ čo 1-sekundové oneskorenie na konci slučky poskytuje pauzu pred opakovaním.

Demonštrácia / Čo očakávať

Po dokončení zapojenia a nahratí kódu by ste mali počuť sériu krátkych tónov produkovaných bzučiakom. Ak bzučiak neznie, skontrolujte svoje pripojenia, najmä orientáciu tranzistora a hodnotu odporu. Uistite sa, že v kóde je použitý správny pin a že ESP32 je správne napájaný.

Počas demonštrácie, ak narazíte na problémy, môže to byť spôsobené nesprávnym zapojením alebo použitím nesprávneho pinu pre bzučiak. Skontrolujte zapojenie podľa pokynov a uistite sa, že napájací zdroj je dostatočný (vo videu o 08:15).

Časové značky videa

  • 00:00 Začiatok
  • 1:52 Úvod do projektu
  • 4:11 Vysvetlenie zapojenia
  • 8:11 Výber dosky ESP32 a COM portu v Arduino IDE
  • 9:53 Vysvetlenie kódu Arduino
  • 13:17 Demonštrácia projektu
  • 13:58 Kód a demonštrácia projektu 2

Obrázky

ESP32-13-buzzer-wriing
ESP32-13-buzzer-wriing
ESP32-13-buzzer-schematic
ESP32-13-buzzer-schematic
SunFounder-ESP32-Lesson-13-Beep.mp4_snapshot_07.43.463
SunFounder-ESP32-Lesson-13-Beep.mp4_snapshot_07.43.463
S87050_transistor
S87050_transistor
813-ESP32 Tutorial 14/55- Arduino code for custom music tone
Jazyk: C++
const int buzzerPin = 14; //buzzer pin
const int resolution = 8; 

// Frequencies of the 7 musical notes (in Hz)
int frequencies[] = {262, 294, 330, 349, 392, 440, 494};


// Function to play a frequency on the buzzer for a given duration
void playFrequency(int frequency, int duration) {
  ledcWriteTone(buzzerPin, frequency); // Start the tone
  delay(duration); // Wait for the specified duration
  ledcWriteTone(buzzerPin, 0); // Stop the buzzer
}

void setup() {
  ledcAttach(buzzerPin, 2000, 8); // Set up the PWM pin
}

void loop() {
  for (int i = 0; i < 7; i++) {
    playFrequency(frequencies[i], 300); // Play each note for 300ms
    delay(50); // Add a brief pause between the notes
  }
  delay(1000); // Wait for 1 second before replaying the sequence
}

Zdroje a referencie

Súbory📁

Datasheet (pdf)