Search Code

Tutorial ESP32 14/55 - Memainkan Nada Musik Kustom Menggunakan Kit Pembelajaran IoT SunFounder ESP32

Tutorial ESP32 14/55 - Memainkan Nada Musik Kustom Menggunakan Kit Pembelajaran IoT SunFounder ESP32

Dalam tutorial ini, kita akan mempelajari cara menggunakan mikrokontroler SunFounder ESP32 untuk memainkan not musik menggunakan buzzer pasif dan transistor. Proyek ini bertujuan untuk mendemonstrasikan cara menghasilkan suara dengan frekuensi tertentu dengan mengendalikan buzzer melalui pin GPIO ESP32.

Kita akan menghubungkan buzzer pasif ke ESP32, yang memungkinkan kita menghasilkan not musik yang berbeda berdasarkan frekuensi yang kita berikan. Pengaturan ini mencakup penggunaan transistor untuk menyalakan dan mematikan buzzer dengan kecepatan tinggi, menciptakan gelombang suara yang dapat kita dengar. Untuk penjelasan lebih lanjut tentang proyek ini, pastikan untuk menonton video (di video pada 00:30).

Skema-buzzer-ESP32-13

Penjelasan Perangkat Keras

Komponen utama yang digunakan dalam proyek ini meliputi mikrokontroler SunFounder ESP32, buzzer pasif, dan transistor NPN (2N8050). ESP32 adalah papan pengembangan yang kuat dengan kemampuan Wi-Fi dan Bluetooth bawaan, menjadikannya serbaguna untuk berbagai aplikasi IoT. Dalam kasus ini, ia akan menghasilkan sinyal untuk mengendalikan buzzer.

Buzzer pasif beroperasi dengan menghasilkan suara ketika tegangan bolak-balik diterapkan padanya. Tidak seperti buzzer aktif, yang memiliki osilator internal, buzzer pasif memerlukan sinyal eksternal untuk menghasilkan suara. Transistor berfungsi sebagai sakelar, memungkinkan ESP32 mengendalikan buzzer tanpa memberi daya secara langsung, memastikan bahwa peringkat arus mikrokontroler tidak terlampaui.

Transistor_S87050

Detail Lembar Data

Produsen SunFounder
Nomor bagian Buzzer Pasif
Tegangan Operasi 3,3 V - 5 V
Frekuensi Resonansi 2 kHz - 4 kHz
Konsumsi Arus ≤ 30 mA
Tingkat Tekanan Suara ≥ 70 dB
Kemasan Through-hole
Catatan / varian Tidak ada

 

  • Pastikan polaritas yang benar saat menghubungkan buzzer.
  • Gunakan resistor pembatas arus untuk basis transistor.
  • Hubungkan buzzer ke catu daya yang kompatibel dengan peringkat tegangannya.
  • Waspadai melebihi peringkat arus maksimum transistor.
  • Jaga kerapian kabel untuk menghindari korsleting.
  • Uji rangkaian sebelum mengunggah kode untuk menghindari kerusakan komponen.
  • Gunakan papan roti untuk koneksi komponen yang mudah.
  • Pastikan untuk melakukan debounce pada input jika menggunakan tombol.
  • Pertimbangkan menambahkan heatsink untuk transistor jika digunakan pada arus tinggi.

Instruksi Pengkabelan

ESP32-13-buzzer-wriing

Untuk mengkabel komponen, mulailah dengan menghubungkan terminal positif buzzer pasif ke pin 3.3V pada ESP32. Terminal negatif buzzer harus terhubung ke kolektor transistor NPN. Pin emitor transistor harus dihubungkan ke ground (GND) ESP32.

Selanjutnya, hubungkan resistor 1 kΩ dari basis transistor ke pin GPIO 14 pada ESP32. Resistor ini membatasi arus yang mengalir ke basis transistor. Terakhir, pastikan semua koneksi ground diikat bersama untuk menyediakan referensi umum untuk rangkaian.

Contoh Kode & Penjelasan

const int buzzerPin = 14; // pin buzzer

void setup()
{
  pinMode(buzzerPin, OUTPUT); // Atur sebagai output
}

Dalam kode, kita mendefinisikan variabel konstan buzzerPin yang diatur ke 14, menunjukkan pin GPIO yang terhubung ke basis transistor. Dalam fungsi setup(), kita mengatur pin ini sebagai OUTPUT, memungkinkan ESP32 mengendalikan buzzer.

void loop()
{
  for (int i = 0; i < 50; i++) // Ulangi 50 kali dan mainkan nada pendek setiap kali
  {
    digitalWrite(buzzerPin, HIGH); // Atur ke HIGH untuk membuat buzzer berbunyi
    delay(3); // Tunggu 3 milidetik
    digitalWrite(buzzerPin, LOW); // LOW untuk mematikan buzzer
    delay(3); // 
  }
  delay(1000); // Tunggu 1 detik sebelum memulai loop berikutnya
}

Fungsi loop() berisi for-loop yang berjalan 50 kali. Setiap iterasi menyalakan dan mematikan buzzer dengan cepat, menghasilkan nada. Penundaan 3 milidetik mengontrol berapa lama buzzer diaktifkan dan dinonaktifkan, sementara penundaan 1 detik di akhir loop memberikan jeda sebelum mengulang.

Demonstrasi / Apa yang Diharapkan

Setelah pengkabelan selesai dan kode diunggah, Anda akan mendengar serangkaian nada pendek yang dihasilkan oleh buzzer. Jika buzzer tidak berbunyi, periksa koneksi Anda, terutama orientasi transistor dan nilai resistor. Pastikan pin yang benar digunakan dalam kode dan ESP32 diberi daya dengan benar.

Selama demonstrasi, jika Anda mengalami masalah, itu mungkin disebabkan oleh pengkabelan yang salah atau menggunakan pin yang salah untuk buzzer. Periksa pengkabelan sesuai instruksi dan pastikan catu daya memadai (di video pada 08:15).

Stempel Waktu Video

  • 00:00 Mulai
  • 1:52 Pengenalan proyek
  • 4:11 Penjelasan Pengkabelan
  • 8:11 Memilih papan ESP32 dan port COM di Arduino IDE
  • 9:53 Penjelasan kode Arduino
  • 13:17 Demonstrasi proyek
  • 13:58 Kode dan demonstrasi Proyek 2

Gambar

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

Sumber daya & referensi

Berkas📁

Lembar Data (pdf)