Search Code

ESP32 Tutorijal 14/55 - Sviranje prilagođene muzičke note koristeći SunFounder ESP32 IoT Learning kit

ESP32 Tutorijal 14/55 - Sviranje prilagođene muzičke note koristeći SunFounder ESP32 IoT Learning kit

U ovom tutorijalu naučit ćemo kako koristiti SunFounder ESP32 mikrokontroler za sviranje muzičkih nota pomoću pasivnog zujalice i tranzistora. Cilj projekta je demonstrirati kako generirati zvuk s određenim frekvencijama kontroliranjem zujalice putem GPIO pinova ESP32-a.

Povezat ćemo pasivni zujalicu na ESP32, što će nam omogućiti da proizvedemo različite muzičke note na osnovu frekvencije koju pružimo. Ova postavka uključuje korištenje tranzistora za uključivanje i isključivanje zujalice velikom brzinom, stvarajući zvučne valove koje možemo čuti. Za dodatna pojašnjenja o projektu, svakako pogledajte video (u videu na 00:30).

ESP32-13-buzzer-schematic

Objašnjenje hardvera

Glavne komponente korištene u ovom projektu uključuju SunFounder ESP32 mikrokontroler, pasivni zujalicu i NPN tranzistor (2N8050). ESP32 je moćna razvojna ploča s ugrađenim Wi-Fi i Bluetooth mogućnostima, što je čini svestranom za različite IoT aplikacije. U ovom slučaju, generirat će signale za kontrolu zujalice.

Pasivni zujalica radi tako što generira zvuk kada se na njega primijeni izmjenični napon. Za razliku od aktivnih zujalica, koje imaju ugrađeni oscilator, pasivne zujalice zahtijevaju vanjski signal za proizvodnju zvuka. Tranzistor djeluje kao prekidač, omogućavajući ESP32-u da kontrolira zujalicu bez direktnog napajanja, osiguravajući da se ne prekorači strujna vrijednost mikrokontrolera.

S87050_transistor

Detalji iz tehničke dokumentacije

Proizvođač SunFounder
Broj dijela Pasivni zujalica
Radni napon 3.3 V - 5 V
Rezonantna frekvencija 2 kHz - 4 kHz
Potrošnja struje ≤ 30 mA
Nivo zvučnog pritiska ≥ 70 dB
Pakovanje Kroz rupu (Through-hole)
Napomene / varijante Nema

 

  • Osigurajte ispravnu polarizaciju prilikom povezivanja zujalice.
  • Koristite otpornik za ograničenje struje za bazu tranzistora.
  • Spojite zujalicu na napajanje kompatibilno s njegovim naponskim nazivom.
  • Pazite da ne prekoračite maksimalnu strujnu vrijednost tranzistora.
  • Držite ožičenje urednim kako biste izbjegli kratke spojeve.
  • Testirajte krug prije učitavanja koda kako biste izbjegli oštećenje komponenti.
  • Koristite breadboard za lakše povezivanje komponenti.
  • Obavezno izvršite debouncing ulaza ako koristite dugmad.
  • Razmotrite dodavanje hladnjaka za tranzistor ako se koristi pri visokoj struji.

Upute za povezivanje

ESP32-13-buzzer-wriing

Za povezivanje komponenti, počnite spajanjem pozitivnog terminala pasivnog zujalice na 3.3V pin na ESP32-u. Negativni terminal zujalice treba spojiti na kolektor NPN tranzistora. Emiter pin tranzistora treba spojiti na uzemljenje (GND) ESP32-a.

Zatim spojite otpornik od 1 kΩ od baze tranzistora na GPIO pin 14 na ESP32-u. Ovaj otpornik ograničava struju koja teče u bazu tranzistora. Na kraju, osigurajte da su sve veze uzemljenja povezane zajedno kako bi se pružila zajednička referenca za krug.

Primjeri koda i objašnjenje

const int buzzerPin = 14; // pin zujalice

void setup()
{
  pinMode(buzzerPin, OUTPUT); // Postavi kao izlaz
}

U kodu definiramo konstantnu varijablu buzzerPin koja je postavljena na 14, označavajući GPIO pin spojen na bazu tranzistora. U funkciji setup(), postavljamo ovaj pin kao IZLAZ, omogućavajući ESP32-u da kontrolira zujalicu.

void loop()
{
  for (int i = 0; i < 50; i++) // Petlja 50 puta i svaki put svira kratki ton
  {
    digitalWrite(buzzerPin, HIGH); // Postavi na HIGH da zujalica zazvoni
    delay(3); // Čekaj 3 milisekunde
    digitalWrite(buzzerPin, LOW); // LOW da isključi zujalicu
    delay(3); // 
  }
  delay(1000); // Čekaj 1s prije početka sljedeće petlje
}

Funkcija loop() sadrži for petlju koja se izvodi 50 puta. Svaka iteracija brzo uključuje i isključuje zujalicu, proizvodeći ton. Kašnjenja od 3 milisekunde kontroliraju koliko dugo je zujalica aktivirana i deaktivirana, dok kašnjenje od 1 sekunde na kraju petlje pruža pauzu prije ponavljanja.

Demonstracija / Šta očekivati

Nakon što je povezivanje završeno i kod učitan, trebali biste čuti niz kratkih tonova koje proizvodi zujalica. Ako zujalica ne zvoni, provjerite svoje veze, posebno orijentaciju tranzistora i vrijednost otpornika. Osigurajte da je ispravan pin korišten u kodu i da je ESP32 pravilno napajan.

Tokom demonstracije, ako naiđete na probleme, to može biti zbog pogrešnog povezivanja ili korištenja pogrešnog pina za zujalicu. Provjerite povezivanje prema uputama i osigurajte da je napajanje adekvatno (u videu na 08:15).

Vremenske oznake videa

  • 00:00 Početak
  • 1:52 Uvod u projekt
  • 4:11 Objašnjenje povezivanja
  • 8:11 Odabir ESP32 ploče i COM porta u Arduino IDE-u
  • 9:53 Objašnjenje Arduino koda
  • 13:17 Demonstracija projekta
  • 13:58 Kod i demonstracija projekta 2

Images

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

Resources & references

Files📁

Datasheet (pdf)