ESP32, IOT物聯網

【ESP32教學】第六篇:蜂鳴器控制與音調頻率播放實作

一、 實驗說明:讓 ESP32 發出聲音的聲音訊號輸出

在前面的教學中,我們學會了用 GPIO 控制視覺上的 LED 燈。這一篇我們要為 ESP32 的專題加入聲音回饋——使用蜂鳴器(Buzzer)

無論是智慧家庭的按鍵提示音、儀器的過熱警報器、或是簡易的音樂播放器,蜂鳴器都是成本最低且最實用的音訊元件。本實驗我們將帶大家認識蜂鳴器的種類,並克服 ESP32 在聲音控制上的硬體特性,讓它發出多變的音調與旋律。

二、 實驗材料準備清單

本篇實作專案所需的硬體元件如下:

  • ESP32 開發板麵包板 (Breadboard)

  • 主動式有源蜂鳴器(Active Buzzer)
  • 被動式無源蜂鳴器 (Passive Buzzer)

  • 杜邦跳線

  • USB 傳輸線

  • 10kΩ直插電阻
  • 按鍵開關

🛒  還沒有材料嗎? 歡迎直接購買米羅為您搭配好的 ESP32 物聯網應用學習套件,新手零基礎也能輕鬆上手!

 

三、 核心知識:主動式 vs. 被動式蜂鳴器,你選對了嗎?

初學者去電子材料行買蜂鳴器,最常買錯種類。蜂鳴器主要分為以下兩種:

  1. 主動式蜂鳴器(Active Buzzer):內建震盪源。只要通電(GPIO 輸出 HIGH),它就會自動發出固定的單音(通常是嗶~的單一高音)。優點是寫程式極簡單,缺點是無法改變音調、無法彈奏音樂

  2. 被動式蜂鳴器(Passive Buzzer):內部沒有震盪源。必須由微控制器輸入不同頻率的方形波訊號(PWM),它才會因相應的震動發出不同的音高(如:do re mi fa so)。如果想要播音樂、做豐富的警報聲,必須使用被動式蜂鳴器。

 

四、 電路接線與實作步驟

五、 實作實驗程式碼:

1. 程式(有源蜂鳴器):

int buzzPin = 15;
void setup()  
{        
  pinMode(buzzPin, OUTPUT);  
}

void loop()                     
{
  digitalWrite(buzzPin, HIGH); //有源蜂鳴器響起
  delay(2000); 
  digitalWrite(buzzPin, LOW);  //有源蜂鳴器關閉
  delay(2000);      
}

 

2. 程式(無源蜂鳴器):

int buzzer=15;
void setup() 
{ 
  pinMode(buzzer,OUTPUT);
} 
void loop() 
{ 
  int i;
  while(1) 
  { 
    for(i=0;i<50;i++)
    { 
      digitalWrite(buzzer,HIGH);
      delay(1);
      digitalWrite(buzzer,LOW);
      delay(1);
    } 
    delay(1000);
    for(i=0;i<100;i++)
    { 
      digitalWrite(buzzer,HIGH);
      delay(3);
      digitalWrite(buzzer,LOW);
      delay(3);
    } 
    delay(1000);
  } 
} 

 

程式說明:

針對無源蜂鳴器程式碼說明如下

  • 第 1 列設置控制蜂鳴器的數位接口GPIO15 Pin。
  • 第 3 列設置數位I\O腳模式,buzzer GPIO15 Pin為數位輸出Pin 。
  • 第 8 列宣告變數。
  • 第 11~17 列輸出一個頻率的短聲音。
  • 第 18 列延遲1秒。
  • 第 19~25 列輸出另一個頻率的長聲音。
  • 第 26 列延遲1秒。

 

下載完程序就可以聽到ESP32的數位接口GPIO15 Pin外接蜂鳴器在發出一長一短的聲音。

 

 

3. 進階範例電子門鈴(有源蜂鳴器):

 

 

程式(有源蜂鳴器):

int buzzPin=15;
int inpin=16;
int val;
void setup()
{
  pinMode(buzzPin,OUTPUT);
  pinMode(inpin,INPUT);
}
void loop()
{
  val=digitalRead(inpin);
  if(val==LOW)
  { 
    digitalWrite(buzzPin,LOW);
  }
  else
  { 
    digitalWrite(buzzPin,HIGH);
  }
}

4.  燒錄與操作測試

  • 點擊 Arduino IDE 的 [上傳 (Upload)] 按鈕。

 

六、 初學者常見卡關問題與排錯指南(Troubleshooting)

  • Q:程式上傳成功了,為什麼蜂鳴器只有微弱的「搭、搭」聲,或是完全不響?

    1. 買到錯誤種類:請確認您使用的是「被動式蜂鳴器」。如果誤用了主動式蜂鳴器卻給它高頻訊號,它就只會發出微弱的雜音。

    2. 接腳接反:蜂鳴器是有極性的,請重新確認正極(有標記 + 號或較長的一側)。

 

七、 結語與下一篇教學

恭喜你!到這一篇為止,你不僅掌握了視覺的 LED 控制,現在連聽覺的蜂鳴器音效控制也難不倒你了!學會了改變頻率後,只要對照音樂的「音高頻率表」,你就能讓 ESP32 彈奏出動人的生日快樂歌或聖誕歌曲囉!下一篇教學,我們將把焦點轉向另一個經典的基礎控制——「類比輸入(Analog Input)」與光敏電阻,開始讀取環境中的連續數值變化!

👉 上一篇回顧【ESP32教學】第五篇:GPIO數位輸入原理與按鈕控制LED實作

👉 下一篇預告【ESP32教學】第七篇:類比輸入(ADC)與光線感測器控制光感小夜燈實作 

 

 

相關文章