Search Code

Samouczek ESP32 14/55 - Odtwarzanie niestandardowej nuty muzycznej przy użyciu zestawu edukacyjnego SunFounder ESP32 IoT

Samouczek ESP32 14/55 - Odtwarzanie niestandardowej nuty muzycznej przy użyciu zestawu edukacyjnego SunFounder ESP32 IoT

W tym samouczku nauczymy się, jak używać mikrokontrolera SunFounder ESP32 do odtwarzania nut za pomocą pasywnego brzęczyka i tranzystora. Projekt ma na celu pokazanie, jak generować dźwięk o określonych częstotliwościach poprzez sterowanie brzęczykiem za pomocą pinów GPIO ESP32.

Podłączymy pasywny brzęczyk do ESP32, co pozwoli nam wytwarzać różne nuty w zależności od podanej częstotliwości. Ten układ obejmuje użycie tranzystora do włączania i wyłączania brzęczyka z dużą prędkością, tworząc fale dźwiękowe, które możemy usłyszeć. Aby uzyskać więcej informacji na temat projektu, koniecznie obejrzyj wideo (na wideo w 00:30).

ESP32-13-buzzer-schematic

Objaśnienie sprzętu

Główne komponenty użyte w tym projekcie to mikrokontroler SunFounder ESP32, pasywny brzęczyk oraz tranzystor NPN (2N8050). ESP32 to wydajna płytka rozwojowa z wbudowaną obsługą Wi-Fi i Bluetooth, co czyni ją wszechstronną do różnych zastosowań IoT. W tym przypadku będzie generować sygnały do sterowania brzęczykiem.

Pasywny brzęczyk działa poprzez generowanie dźwięku, gdy przyłożone jest do niego napięcie przemienne. W przeciwieństwie do aktywnych brzęczyków, które mają wbudowany oscylator, pasywne brzęczyki wymagają zewnętrznego sygnału do wytworzenia dźwięku. Tranzystor działa jak przełącznik, pozwalając ESP32 sterować brzęczykiem bez bezpośredniego zasilania go, co zapewnia, że prąd znamionowy mikrokontrolera nie zostanie przekroczony.

S87050_transistor

Szczegóły z karty katalogowej

Producent SunFounder
Numer części Pasywny brzęczyk
Napięcie robocze 3,3 V - 5 V
Częstotliwość rezonansowa 2 kHz - 4 kHz
Pobór prądu ≤ 30 mA
Poziom ciśnienia akustycznego ≥ 70 dB
Obudowa Przewlekana (Through-hole)
Uwagi / warianty Brak

 

  • Upewnij się, że biegunowość jest prawidłowa podczas podłączania brzęczyka.
  • Użyj rezystora ograniczającego prąd dla bazy tranzystora.
  • Podłącz brzęczyk do zasilacza zgodnego z jego napięciem znamionowym.
  • Uważaj, aby nie przekroczyć maksymalnego prądu znamionowego tranzystora.
  • Utrzymuj okablowanie w porządku, aby uniknąć zwarć.
  • Przetestuj obwód przed wgraniem kodu, aby uniknąć uszkodzenia komponentów.
  • Użyj płytki stykowej, aby ułatwić połączenia komponentów.
  • Pamiętaj o eliminacji drgań styków (debounce), jeśli używasz przycisków.
  • Rozważ dodanie radiatora dla tranzystora, jeśli jest używany przy wysokim prądzie.

Instrukcje okablowania

ESP32-13-buzzer-wriing

Aby podłączyć komponenty, zacznij od połączenia dodatniego zacisku pasywnego brzęczyka z pinem 3,3 V na ESP32. Ujemny zacisk brzęczyka należy podłączyć do kolektora tranzystora NPN. Pin emitera tranzystora należy podłączyć do masy (GND) ESP32.

Następnie podłącz rezystor 1 kΩ od bazy tranzystora do pinu GPIO 14 na ESP32. Ten rezystor ogranicza prąd płynący do bazy tranzystora. Na koniec upewnij się, że wszystkie połączenia masy są ze sobą połączone, aby zapewnić wspólny punkt odniesienia dla obwodu.

Przykłady kodu i omówienie

const int buzzerPin = 14; // pin brzęczyka

void setup()
{
  pinMode(buzzerPin, OUTPUT); // Ustaw jako wyjście
}

W kodzie definiujemy stałą zmienną buzzerPin, która jest ustawiona na 14, wskazując pin GPIO podłączony do bazy tranzystora. W funkcji setup() ustawiamy ten pin jako WYJŚCIE, co pozwala ESP32 sterować brzęczykiem.

void loop()
{
  for (int i = 0; i < 50; i++) // Pętla 50 razy i odtwarzanie krótkiego tonu za każdym razem
  {
    digitalWrite(buzzerPin, HIGH); // Ustaw na HIGH, aby brzęczyk wydał dźwięk
    delay(3); // Czekaj 3 milisekundy
    digitalWrite(buzzerPin, LOW); // LOW, aby wyłączyć brzęczyk
    delay(3); // 
  }
  delay(1000); // Czekaj 1 s przed rozpoczęciem następnej pętli
}

Funkcja loop() zawiera pętlę for, która wykonuje się 50 razy. Każda iteracja szybko włącza i wyłącza brzęczyk, wytwarzając ton. Opóźnienia 3 milisekund kontrolują, jak długo brzęczyk jest aktywowany i dezaktywowany, a 1-sekundowe opóźnienie na końcu pętli zapewnia pauzę przed powtórzeniem.

Demonstracja / Czego się spodziewać

Po zakończeniu okablowania i wgraniu kodu powinieneś usłyszeć serię krótkich tonów wytwarzanych przez brzęczyk. Jeśli brzęczyk nie wydaje dźwięku, sprawdź połączenia, zwłaszcza orientację tranzystora i wartość rezystora. Upewnij się, że w kodzie użyto prawidłowego pinu i że ESP32 jest odpowiednio zasilany.

Podczas demonstracji, jeśli napotkasz problemy, może to być spowodowane nieprawidłowym okablowaniem lub użyciem niewłaściwego pinu dla brzęczyka. Sprawdź okablowanie zgodnie z instrukcjami i upewnij się, że zasilanie jest wystarczające (na wideo w 08:15).

Znaczniki czasu wideo

  • 00:00 Start
  • 1:52 Wprowadzenie do projektu
  • 4:11 Objaśnienie okablowania
  • 8:11 Wybór płytki ESP32 i portu COM w Arduino IDE
  • 9:53 Objaśnienie kodu Arduino
  • 13:17 Demonstracja projektu
  • 13:58 Kod i demonstracja projektu 2

Obrazy

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
Język: 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
}

Zasoby i odniesienia

Pliki📁

Karta katalogowa (pdf)