이 튜토리얼에서는 SunFounder ESP32 마이크로컨트롤러를 사용하여 수동 부저와 트랜지스터로 음악 음을 연주하는 방법을 배웁니다. 이 프로젝트는 ESP32의 GPIO 핀을 통해 부저를 제어하여 특정 주파수로 소리를 생성하는 방법을 시연하는 것을 목표로 합니다.
ESP32에 수동 부저를 연결하여 제공하는 주파수에 따라 다양한 음악 음을 생성할 수 있습니다. 이 설정에는 트랜지스터를 사용하여 부저를 고속으로 켜고 꺼서 들을 수 있는 음파를 만드는 것이 포함됩니다. 프로젝트에 대한 자세한 설명은 비디오(비디오 00:30)를 확인하세요.
ESP32-13-부저-회로도
하드웨어 설명
이 프로젝트에 사용되는 주요 구성 요소는 SunFounder ESP32 마이크로컨트롤러, 수동 부저, NPN 트랜지스터(2N8050)입니다. ESP32는 내장 Wi-Fi 및 Bluetooth 기능을 갖춘 강력한 개발 보드로 다양한 IoT 애플리케이션에 적합합니다. 이 경우 부저를 제어하는 신호를 생성합니다.
수동 부저는 교류 전압이 인가될 때 소리를 생성하여 작동합니다. 내장 발진기가 있는 능동 부저와 달리 수동 부저는 소리를 생성하기 위해 외부 신호가 필요합니다. 트랜지스터는 스위치 역할을 하여 ESP32가 부저를 직접 전원 공급하지 않고 제어할 수 있게 하여 마이크로컨트롤러의 전류 정격을 초과하지 않도록 합니다.
S87050_트랜지스터
데이터시트 세부 정보
제조업체
SunFounder
부품 번호
수동 부저
작동 전압
3.3V - 5V
공진 주파수
2kHz - 4kHz
전류 소비
≤ 30mA
음압 레벨
≥ 70dB
패키지
스루홀
참고 사항 / 변형
없음
부저 연결 시 극성을 올바르게 확인하세요.
트랜지스터 베이스에 전류 제한 저항을 사용하세요.
부저를 전압 정격에 맞는 전원 공급 장치에 연결하세요.
트랜지스터의 최대 전류 정격을 초과하지 않도록 주의하세요.
단락을 방지하기 위해 배선을 깔끔하게 유지하세요.
구성 요소 손상을 방지하기 위해 코드 업로드 전에 회로를 테스트하세요.
구성 요소 연결을 쉽게 하기 위해 브레드보드를 사용하세요.
버튼을 사용하는 경우 입력 디바운스를 수행하세요.
고전류에서 사용하는 경우 트랜지스터에 방열판 추가를 고려하세요.
배선 지침
ESP32-13-buzzer-wriing
구성 요소를 배선하려면 수동 부저의 양극 단자를 ESP32의 3.3V 핀에 연결하는 것으로 시작하세요. 부저의 음극 단자는 NPN 트랜지스터의 컬렉터에 연결해야 합니다. 트랜지스터의 이미터 핀은 ESP32의 접지(GND)에 연결해야 합니다.
다음으로 트랜지스터의 베이스에서 ESP32의 GPIO 핀 14로 1kΩ 저항을 연결하세요. 이 저항은 트랜지스터의 베이스로 흐르는 전류를 제한합니다. 마지막으로 모든 접지 연결이 함께 연결되어 회로에 공통 기준을 제공하는지 확인하세요.
코드 예제 및 설명
const int buzzerPin = 14; // 부저 핀
void setup()
{
pinMode(buzzerPin, OUTPUT); // 출력으로 설정
}
코드에서 트랜지스터의 베이스에 연결된 GPIO 핀을 나타내는 buzzerPin 상수 변수를 14로 정의합니다. setup() 함수에서 이 핀을 OUTPUT으로 설정하여 ESP32가 부저를 제어할 수 있게 합니다.
void loop()
{
for (int i = 0; i < 50; i++) // 50번 반복하고 각각 짧은 톤을 재생
{
digitalWrite(buzzerPin, HIGH); // HIGH로 설정하여 부저가 울리게 함
delay(3); // 3밀리초 대기
digitalWrite(buzzerPin, LOW); // LOW로 설정하여 부저를 끔
delay(3); //
}
delay(1000); // 다음 루프를 시작하기 전에 1초 대기
}
loop() 함수에는 50번 실행되는 for 루프가 포함되어 있습니다. 각 반복은 부저를 빠르게 켜고 꺼서 톤을 생성합니다. 3밀리초의 지연은 부저가 활성화 및 비활성화되는 시간을 제어하며, 루프 끝의 1초 지연은 반복 전에 일시 정지를 제공합니다.
시연 / 예상 결과
배선이 완료되고 코드가 업로드되면 부저에서 일련의 짧은 톤이 들려야 합니다. 부저가 울리지 않으면 연결, 특히 트랜지스터의 방향과 저항 값을 확인하세요. 코드에서 올바른 핀이 사용되고 ESP32가 제대로 전원 공급되는지 확인하세요.
시연 중 문제가 발생하면 잘못된 배선이나 부저에 잘못된 핀을 사용했기 때문일 수 있습니다. 지침에 따라 배선을 확인하고 전원 공급이 충분한지 확인하세요(비디오 08:15).
813-ESP32 Tutorial 14/55- Arduino code for custom music tone
언어: 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
}