Soek Kode

ESP32 Tutoriaal 14/55 - Speel Aangepaste Musieknoot Met Behulp van SunFounder ESP32 IoT-leerkit

ESP32 Tutoriaal 14/55 - Speel Aangepaste Musieknoot Met Behulp van SunFounder ESP32 IoT-leerkit

In hierdie tutoriaal sal ons leer hoe om die SunFounder ESP32-mikrobeheerder te gebruik om musieknote te speel deur 'n passiewe gonser en 'n transistor te gebruik. Die projek het ten doel om te demonstreer hoe om klank met spesifieke frekwensies te genereer deur die gonser deur die ESP32 se GPIO-penne te beheer.

Ons sal 'n passiewe gonser aan die ESP32 koppel, wat ons in staat sal stel om verskillende musieknote te produseer gebaseer op die frekwensie wat ons verskaf. Hierdie opstelling sluit die gebruik van 'n transistor in om die gonser teen hoë spoed aan en af te skakel, wat klankgolwe skep wat ons kan hoor. Vir verdere verduideliking oor die projek, maak seker dat jy die video (in video by 00:30) kyk.

ESP32-13-gonser-skematies

Hardeware Verduidelik

Die hoofkomponente wat in hierdie projek gebruik word, sluit die SunFounder ESP32-mikrobeheerder, 'n passiewe gonser en 'n NPN-transistor (2N8050) in. Die ESP32 is 'n kragtige ontwikkelingsbord met ingeboude Wi-Fi- en Bluetooth-vermoëns, wat dit veelsydig maak vir verskeie IoT-toepassings. In hierdie geval sal dit seine genereer om die gonser te beheer.

Die passiewe gonser werk deur klank te genereer wanneer 'n wisselspanning daarop toegepas word. Anders as aktiewe gonsers, wat 'n ingeboude ossillator het, benodig passiewe gonsers 'n eksterne sein om klank te produseer. Die transistor dien as 'n skakelaar, wat die ESP32 in staat stel om die gonser te beheer sonder om dit direk van krag te voorsien, en verseker dat die stroomgradering van die mikrobeheerder nie oorskry word nie.

S87050_transistor

Datablad Besonderhede

Vervaardiger SunFounder
Deelnommer Passiewe Gonser
Werkspanning 3.3 V - 5 V
Resonansiefrekwensie 2 kHz - 4 kHz
Stroomverbruik ≤ 30 mA
Klankdrukvlak ≥ 70 dB
Pakket Deur-gat
Notas / variante Geen

 

  • Verseker korrekte polariteit wanneer die gonser gekoppel word.
  • Gebruik 'n stroombeperkende weerstand vir die transistorbasis.
  • Koppel die gonser aan 'n kragtoevoer wat versoenbaar is met sy spanningsgradering.
  • Wees versigtig om nie die maksimum stroomgradering van die transistor te oorskry nie.
  • Hou die bedrading netjies om kortsluitings te vermy.
  • Toets die stroombaan voordat kode opgelaai word om komponentskade te vermy.
  • Gebruik 'n broodbord vir maklike komponentverbindings.
  • Maak seker om insette te ontbons as jy knoppies gebruik.
  • Oorweeg om 'n verkoeler by die transistor te voeg as dit teen hoë stroom gebruik word.

Bedradingsinstruksies

ESP32-13-buzzer-wriing

Om die komponente te bedraad, begin deur die positiewe terminaal van die passiewe gonser aan die 3.3V-pen op die ESP32 te koppel. Die negatiewe terminaal van die gonser moet aan die kollektor van die NPN-transistor koppel. Die emitterpen van die transistor moet aan die grond (GND) van die ESP32 bedraad word.

Koppel volgende 'n 1 kΩ-weerstand van die basis van die transistor na GPIO-pen 14 op die ESP32. Hierdie weerstand beperk die stroom wat in die basis van die transistor vloei. Maak laastens seker dat alle grondverbindings saamgebind is om 'n gemeenskaplike verwysing vir die stroombaan te verskaf.

Kode Voorbeelde & Deurloop

const int buzzerPin = 14; // die gonserpen

void setup()
{
  pinMode(buzzerPin, OUTPUT); // Stel as uitset
}

In die kode definieer ons 'n konstante veranderlike buzzerPin wat op 14 gestel is, wat die GPIO-pen aandui wat aan die basis van die transistor gekoppel is. In die setup()-funksie stel ons hierdie pen as 'n UITSET, wat die ESP32 in staat stel om die gonser te beheer.

void loop()
{
  for (int i = 0; i < 50; i++) // Loop 50 keer en speel elke keer 'n kort toon
  {
    digitalWrite(buzzerPin, HIGH); // Stel na HOOG om die gonser te laat klink
    delay(3); // Wag vir 3 millisekondes
    digitalWrite(buzzerPin, LOW); // LAAG om die gonser af te skakel
    delay(3); // 
  }
  delay(1000); // Wag vir 1s voordat die volgende lus begin
}

Die loop()-funksie bevat 'n for-lus wat 50 keer loop. Elke iterasie skakel die gonser vinnig aan en af, wat 'n toon produseer. Die vertragings van 3 millisekondes beheer hoe lank die gonser geaktiveer en gedeaktiveer word, terwyl 'n 1-sekonde vertraging aan die einde van die lus 'n pouse verskaf voordat dit herhaal.

Demonstrasie / Wat om te VerwAg

Sodra die bedrading voltooi is en die kode opgelaai is, behoort jy 'n reeks kort tone te hoor wat deur die gonser geproduseer word. As die gonser nie klink nie, kontroleer jou verbindings, veral die transistor se oriëntasie en die weerstandswaarde. Verseker dat die korrekte pen in die kode gebruik word en dat die ESP32 behoorlik van krag voorsien word.

Gedurende die demonstrasie, as jy probleme ervaar, kan dit wees as gevolg van verkeerde bedrading of die gebruik van die verkeerde pen vir die gonser. Kontroleer die bedrading teen die instruksies en verseker dat die kragtoevoer voldoende is (in video by 08:15).

Video Tydstempels

  • 00:00 Begin
  • 1:52 Inleiding tot die projek
  • 4:11 Bedrading Verduidelik
  • 8:11 Kies ESP32-bord en COM-poort op Arduino IDE
  • 9:53 Arduino-kode verduidelik
  • 13:17 Projekdemonstrasie
  • 13:58 Projek 2-kode en demonstrasie

Beelde

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

Hulpbronne en verwysings

Lêers📁

Datasheet (pdf)