ESP32 C3 Super Mini 피에조 부저

피에조 부저는 ESP32 C3 Super Mini 프로젝트에 소리를 추가하는 가장 쉬운 방법입니다. 가격이 매우 저렴하고, GPIO 핀 하나만 필요하며, 비프음, 알람, 심지어 노래까지 재생할 수 있습니다.

이 튜토리얼에서 배울 내용:

ESP32 C3 Super Mini - 피에조 부저

필요한 하드웨어

1×ESP32 C3 Super Mini 아마존
1×USB 케이블 타입-A to 타입-C (USB-A PC용) 쿠팡 | 아마존
1×USB 케이블 타입-C to 타입-C (USB-C PC용) 아마존
1×3-24V 능동 피에조 버저 (Active Piezo Buzzer) 쿠팡 | 아마존
1×능동 피에조 버저 모듈 (Active Piezo Buzzer) 쿠팡 | 아마존
1×수동 피에조 버저 모듈 (Passive Piezo Buzzer Module) 쿠팡 | 아마존
1×브레드보드 쿠팡 | 아마존
1×점퍼케이블 쿠팡 | 아마존
1×(옵션) DC 커넥터 전원 연결 잭 플러그 소켓 쿠팡 | 아마존
공개: 이 포스팅 에 제공된 일부 링크는 아마존 제휴 링크입니다. 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

피에조 부저에 대하여

피에조 부저는 전기 신호를 비프음, 톤 또는 음악으로 바꾸는 작은 음향 부품입니다.

주요 특징:

  • 신호 핀 하나: ESP32 C3 Super Mini GPIO 핀 하나만 필요합니다
  • 매우 저렴: 구매할 수 있는 가장 저렴한 출력 부품 중 하나입니다
  • 크기에 비해 큰 소리: 방 안에서 쉽게 들을 수 있습니다
  • 두 가지 형태: 부저 단품, 또는 드라이버가 탑재된 부저 모듈
  • 쉬운 코드: tone() 함수가 어려운 작업을 모두 처리합니다

기술 사양:

  • 작동 전압: 3V-24V 능동 부저의 경우 3V ~ 24V
  • 모듈 전압: 3.3V 또는 5V
  • 전류: 3.3V에서 작아서 GPIO 핀에 안전합니다
  • 톤 범위: 약 200 Hz ~ 5000 Hz에서 가장 잘 들립니다
  • 신호 유형: ESP32 C3 Super Mini에서 나오는 구형파(PWM)

3V-24V 부저를 사용하는 두 가지 방법:

  • GPIO 핀에 직접 연결: 일반적인 비프음이 납니다. 키패드 클릭음과 상태 알림음에 좋습니다.
  • 릴레이와 12V 전원을 통해 연결: 매우 큰 소리가 납니다. 알람과 경고에 좋습니다.

참고: 큰 소리의 12V 버전은 ESP32 C3 Super Mini - 버저 튜토리얼을 참조하세요.

피에조 부저 핀아웃

피에조 부저 단품에는 핀이 두 개 있습니다.

  • 양극(+) 핀: ESP32 C3 Super Mini가 이 핀으로 제어 신호를 보냅니다 (직접 또는 릴레이를 통해)
  • 음극(-) 핀: 이 핀을 GND(0V)에 연결합니다
피에조 부저 핀아웃

피에조 부저 모듈에는 핀이 세 개 있습니다.

  • GND 핀: GND(0V)에 연결합니다
  • VCC 핀: 3.3V에 연결합니다
  • I/O 핀: ESP32 C3 Super Mini GPIO 핀에서 신호를 받습니다

피에조 부저의 작동 원리

피에조 부저의 작동 원리를 참조하세요

피에조 부저와 ESP32 C3 Super Mini 간의 배선 다이어그램

부저 신호 핀을 ESP32 C3 Super Mini의 GPIO7에 연결합니다.

  • 참고: ESP32 C3 Super Mini GPIO 핀은 3.3V 전용입니다. GPIO 핀에 5V를 절대 넣지 마세요.
  • 참고: 부저 단품의 극성을 확인하세요. (+) 핀은 다리가 더 길거나 + 표시가 있습니다.
  • 참고: GPIO8이나 GPIO9는 사용하지 마세요. 이 보드에서는 부트 핀입니다.
  • 참고: 소리가 약하면 부저 모듈을 사용하세요. 모듈의 드라이버가 GPIO 핀보다 더 많은 전류를 공급합니다.
  • 피에조 부저와 ESP32 C3 Super Mini 간의 배선 다이어그램
ESP32 C3 Super Mini 피에조 부저 배선 다이어그램

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

부저 핀 ESP32 C3 Super Mini 핀
양극 (+) GPIO7
음극 (-) GND

위의 배선 다이어그램을 오리처럼 보이는 아트워크로 바꿔 보았습니다. 마음에 드신다면 공유해 주세요!

ESP32 C3 Super Mini 피에조 부저 오리 배선 다이어그램

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

  • 피에조 부저 모듈과 ESP32 C3 Super Mini 간의 배선 다이어그램
ESP32 C3 Super Mini 피에조 부저 모듈 배선 다이어그램

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

모듈 핀 ESP32 C3 Super Mini 핀
GND GND
VCC 3.3V
I/O GPIO7

ESP32 C3 Super Mini 코드

이 스케치는 tone() 함수를 사용하여 피에조 부저로 짧은 멜로디를 재생합니다.

이 코드가 하는 일:

  • GPIO7을 부저 신호 핀으로 설정합니다
  • pitches.h 파일에서 NOTE_C4 같은 음 이름을 읽습니다
  • tone()으로 각 음을 정해진 시간 동안 재생합니다
  • 각 음을 들을 수 있도록 음과 음 사이에 잠시 기다립니다
  • 각 음이 끝날 때마다 noTone()을 호출하여 소리를 멈춥니다

빠른 단계

다음 단계에 따라 ESP32 C3 Super Mini 피에조 부저 예제를 실행하세요.

  • ESP32 C3 Super Mini가 처음이신가요? 먼저 ESP32 C3 슈퍼 미니 - 시작하기 튜토리얼을 완료하여 개발 환경을 설정하세요.
  • 부품 연결: 위의 배선 다이어그램을 따릅니다.
  • 보드 연결: USB Type-C 케이블로 ESP32 C3 Super Mini를 컴퓨터에 연결합니다.
  • IDE 열기: 컴퓨터에서 Arduino IDE를 실행합니다.
  • 보드 선택: Tools > Board에서 ESP32 C3 Super Mini가 선택되어 있는지 확인합니다.
  • 포트 선택: 보드의 COM 포트를 선택합니다.
  • 코드 복사: 아래 코드를 복사하여 Arduino IDE에 붙여넣습니다.
/* * 이 ESP32 C3 Super Mini 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 C3 Super Mini 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32-c3/esp32-c3-super-mini-piezo-buzzer */ #include "pitches.h" #define BUZZZER_PIN 7 // The ESP32 C3 SuperMini pin connected to piezo buzzer int melody[] = { NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4 }; int noteDurations[] = { 4, 8, 8, 4, 4, 4, 4, 4 }; void setup() { for (int thisNote = 0; thisNote < 8; thisNote++) { int noteDuration = 1000 / noteDurations[thisNote]; tone(BUZZZER_PIN, melody[thisNote], noteDuration); int pauseBetweenNotes = noteDuration * 1.30; delay(pauseBetweenNotes); noTone(BUZZZER_PIN); } } void loop() { }
  • Arduino IDE에서 다음 방법으로 pitches.h 파일을 만듭니다:
    • 시리얼 모니터 아이콘 바로 아래에 있는 버튼을 클릭하고 New Tab을 선택하거나, Ctrl+Shift+N 키를 사용합니다.
    아두이노 ide 2에서 파일 추가
    • 파일 이름을 pitches.h로 지정하고 OK 버튼을 클릭합니다.
    아두이노 ide 2에서 pitches.h 파일 추가
    • 아래 코드를 복사하여 새 pitches.h 파일에 붙여넣습니다.
    /************************************************* * Public Constants *************************************************/ #define NOTE_B0 31 #define NOTE_C1 33 #define NOTE_CS1 35 #define NOTE_D1 37 #define NOTE_DS1 39 #define NOTE_E1 41 #define NOTE_F1 44 #define NOTE_FS1 46 #define NOTE_G1 49 #define NOTE_GS1 52 #define NOTE_A1 55 #define NOTE_AS1 58 #define NOTE_B1 62 #define NOTE_C2 65 #define NOTE_CS2 69 #define NOTE_D2 73 #define NOTE_DS2 78 #define NOTE_E2 82 #define NOTE_F2 87 #define NOTE_FS2 93 #define NOTE_G2 98 #define NOTE_GS2 104 #define NOTE_A2 110 #define NOTE_AS2 117 #define NOTE_B2 123 #define NOTE_C3 131 #define NOTE_CS3 139 #define NOTE_D3 147 #define NOTE_DS3 156 #define NOTE_E3 165 #define NOTE_F3 175 #define NOTE_FS3 185 #define NOTE_G3 196 #define NOTE_GS3 208 #define NOTE_A3 220 #define NOTE_AS3 233 #define NOTE_B3 247 #define NOTE_C4 262 #define NOTE_CS4 277 #define NOTE_D4 294 #define NOTE_DS4 311 #define NOTE_E4 330 #define NOTE_F4 349 #define NOTE_FS4 370 #define NOTE_G4 392 #define NOTE_GS4 415 #define NOTE_A4 440 #define NOTE_AS4 466 #define NOTE_B4 494 #define NOTE_C5 523 #define NOTE_CS5 554 #define NOTE_D5 587 #define NOTE_DS5 622 #define NOTE_E5 659 #define NOTE_F5 698 #define NOTE_FS5 740 #define NOTE_G5 784 #define NOTE_GS5 831 #define NOTE_A5 880 #define NOTE_AS5 932 #define NOTE_B5 988 #define NOTE_C6 1047 #define NOTE_CS6 1109 #define NOTE_D6 1175 #define NOTE_DS6 1245 #define NOTE_E6 1319 #define NOTE_F6 1397 #define NOTE_FS6 1480 #define NOTE_G6 1568 #define NOTE_GS6 1661 #define NOTE_A6 1760 #define NOTE_AS6 1865 #define NOTE_B6 1976 #define NOTE_C7 2093 #define NOTE_CS7 2217 #define NOTE_D7 2349 #define NOTE_DS7 2489 #define NOTE_E7 2637 #define NOTE_F7 2794 #define NOTE_FS7 2960 #define NOTE_G7 3136 #define NOTE_GS7 3322 #define NOTE_A7 3520 #define NOTE_AS7 3729 #define NOTE_B7 3951 #define NOTE_C8 4186 #define NOTE_CS8 4435 #define NOTE_D8 4699 #define NOTE_DS8 4978
    • 코드 업로드: Arduino IDE에서 Upload 버튼을 클릭합니다.
    아두이노 ide에서 ESP32 C3 Super Mini 코드를 업로드하는 방법
    • 듣기: 보드가 시작된 후 부저가 멜로디를 한 번 재생합니다.
    • 시리얼 모니터 열기: 직접 Serial.print() 줄을 추가한 경우 보드레이트를 115200으로 설정합니다.
    • 전문가 팁: 아무 소리도 들리지 않나요? 부저의 두 다리를 바꿔보세요. 부저 단품은 한 방향으로만 작동합니다.

ESP32 C3 Super Mini 코드 수정하기

ESP32 C3 Super Mini 코드를 수정하여 징글벨 노래를 재생해 봅시다.

  • 두 개의 배열만 바뀝니다: int melody[]와 int noteDurations[]
  • melody[]: 재생할 음의 목록(순서대로)
  • noteDurations[]: 각 음의 길이. 4는 4분음표, 8은 8분음표입니다
  • 나머지는 모두 그대로입니다: 같은 GPIO7 핀, 같은 tone() 호출
/* * 이 ESP32 C3 Super Mini 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 C3 Super Mini 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32-c3/esp32-c3-super-mini-piezo-buzzer */ #include "pitches.h" #define BUZZZER_PIN 7 // The ESP32 C3 SuperMini pin connected to piezo buzzer // notes in the melody: int melody[] = { NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_G5, NOTE_C5, NOTE_D5, NOTE_E5, NOTE_F5, NOTE_F5, NOTE_F5, NOTE_F5, NOTE_F5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_D5, NOTE_D5, NOTE_E5, NOTE_D5, NOTE_G5 }; // note durations: 4 = quarter note, 8 = eighth note, etc, also called tempo: int noteDurations[] = { 8, 8, 4, 8, 8, 4, 8, 8, 8, 8, 2, 8, 8, 8, 8, 8, 8, 8, 16, 16, 8, 8, 8, 8, 4, 4 }; void setup() { // iterate over the notes of the melody: int size = sizeof(noteDurations) / sizeof(int); for (int thisNote = 0; thisNote < size; thisNote++) { // to calculate the note duration, take one second divided by the note type. //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc. int noteDuration = 1000 / noteDurations[thisNote]; tone(BUZZZER_PIN, melody[thisNote], noteDuration); // to distinguish the notes, set a minimum time between them. // The note's duration + 30% seems to work well: int pauseBetweenNotes = noteDuration * 1.30; delay(pauseBetweenNotes); // stop the tone playing: noTone(BUZZZER_PIN); } } void loop() { // no need to repeat the melody. }

응용/프로젝트 아이디어

피에조 부저는 거의 모든 ESP32 C3 Super Mini 프로젝트에 소리를 더해줍니다.

  • 도어 알람: 도어 센서나 모션 센서가 작동하면 비프음을 냅니다
  • 버튼 피드백: 버튼을 누를 때마다 짧은 클릭음을 재생합니다
  • 주방 타이머: 카운트다운이 0이 되면 멜로디를 울립니다
  • 주차 센서: 초음파 센서가 물체가 가까워지는 것을 감지할수록 더 빠르게 비프음을 냅니다
  • 뮤직 박스: 여러 멜로디를 저장하고 버튼으로 하나를 선택합니다
  • 배터리 부족 경고: 배터리 전압이 떨어지면 경고음을 재생합니다

도전 과제

ESP32 C3 Super Mini의 소리에 대해 더 배우기 위해 다음 작은 과제를 해보세요.

  • 쉬움: pitches.h의 음을 사용하여 "생일 축하합니다"를 재생하도록 멜로디를 바꿔보세요
  • 쉬움: 멜로디 코드를 setup()에서 loop()로 옮겨 계속 반복되게 해보세요
  • 보통: GPIO6에 버튼을 추가하여 버튼을 누를 때만 멜로디가 재생되게 해보세요
  • 보통: 두 음으로 된 차임과 다음 벨 전 짧은 멈춤이 있는 초인종을 만들어보세요
  • 고급: 짧은 텍스트 메시지를 모스 부호로 출력하는 비퍼를 만들어보세요
  • 고급: 톤을 200 Hz에서 4000 Hz까지 스윕하여 부저의 가장 큰 소리가 나는 주파수를 찾아보세요

댓글

관련 튜토리얼