搜尋程式碼

ESP32 教學 13/55 - Arduino 用有源蜂鳴器發出嗶聲 | SunFounder 嘅 ESP32 IoT 學習套件

ESP32 教學 13/55 - Arduino 用有源蜂鳴器發出嗶聲 | SunFounder 嘅 ESP32 IoT 學習套件

喺呢個教學入面,我哋會學吓點樣用ESP32微控制器同埋一粒晶體管嚟控制一個有源蜂鳴器。呢個項目涉及將蜂鳴器開同關,產生「嗶嗶」聲。憑住ESP32內置嘅Wi-Fi同藍牙功能,你將來可以將呢個項目擴展成更複雜嘅物聯網應用。

我哋會用到嘅零件包括ESP32開發板、一個有源蜂鳴器、一粒晶體管(S8050)同埋一粒電阻。只要正確咁接線,我哋就可以透過ESP32控制蜂鳴器嘅聲音。另外,我哋會簡單介紹吓令呢個項目運行所需嘅接線同程式碼。如果想知多啲,記得睇吓呢個教學附帶嘅影片(影片喺00:00)。

S87050晶體管

硬件解說

呢個項目嘅主要零件包括ESP32微控制器、有源蜂鳴器同埋S8050晶體管。ESP32係一個功能強大嘅微控制器,具備Wi-Fi同藍牙功能,可以支援好多唔同嘅物聯網項目。有源蜂鳴器喺施加電壓時會產生聲音,而S8050晶體管就充當開關,用ESP32嘅低電壓訊號嚟控制蜂鳴器。

晶體管有三個引腳:集電極、基極同發射極。當透過電阻向基極引腳施加電壓時,電流就可以由集電極流向發射極,從而為蜂鳴器供電。呢個設置確保我哋可以安全咁控制蜂鳴器,而唔會令ESP32嘅GPIO引腳過載。

ESP32-13-蜂鳴器-電路圖

數據手冊詳情

製造商 SunFounder
零件編號 TMBB 12 A05
工作電壓 3–8 V
額定電壓 5 V
最大電流 30 mA
振盪頻率 2700 ± 300 Hz

 

  • 用一粒1 kΩ電阻嚟限制流向晶體管基極嘅電流。
  • 確保有源蜂鳴器嘅正負極端子連接正確。
  • 再三檢查引腳連接,以防短路。
  • 用麵包板會更容易連接同調整。
  • 蜂鳴器可以喺3.3V同5V下運作,但請根據你嘅電路需要嚟供電。

接線說明

ESP32-13-buzzer-wriing

要接線,首先將有源蜂鳴器插入麵包板。將蜂鳴器嘅正極端子連接到ESP32嘅3.3V引腳。蜂鳴器嘅負極端子就應該連接到S8050晶體管嘅集電極引腳。跟住,將S8050晶體管插入麵包板,確保平坦嘅一面面向你。左邊嘅引腳(集電極)連接到蜂鳴器嘅負極端子,中間嘅引腳(基極)連接到一粒1 kΩ電阻,而右邊嘅引腳(發射極)就連接到地線。

而家,將1 kΩ電阻嘅另一端連接到ESP32嘅GPIO 14引腳。最後,將晶體管嘅發射極引腳連接到麵包板上嘅地線軌道。確保所有連接都穩固,並喺通電之前再三檢查引腳嘅對齊。

程式碼示例同講解

以下係控制蜂鳴器嘅程式碼嘅簡單概述。首先,我哋定義連接到蜂鳴器嘅引腳:

const int buzzerPin = 14; // 蜂鳴器引腳

呢行設定變數buzzerPin嚟指ESP32上嘅引腳14,用嚟控制蜂鳴器。

跟住,我哋喺setup()函數入面將蜂鳴器引腳設定為輸出:

void setup()
{
  pinMode(buzzerPin, OUTPUT); // 設定為輸出
}

咁樣確保ESP32知道用引腳14嚟發送訊號,開關蜂鳴器。

loop()函數入面,我哋建立一個for迴圈嚟多次啟動蜂鳴器:

for (int i = 0; i < 50; i++) // 循環50次,每次播放一個短音
{
  digitalWrite(buzzerPin, HIGH); // 設定為HIGH令蜂鳴器發聲
  delay(3); // 等待3毫秒
  digitalWrite(buzzerPin, LOW); // LOW關閉蜂鳴器
  delay(3); // 
}

呢個迴圈會令蜂鳴器「嗶」50次,每次持續3毫秒。完成迴圈之後,會延遲1秒先再重複。

示範/預期效果

當接線同程式碼正確設定好之後,為ESP32通電應該會啟動蜂鳴器,產生一連串嘅「嗶嗶」聲。如果蜂鳴器冇聲,請檢查連接,特別係晶體管同電阻嘅方向。確保程式碼用緊正確嘅GPIO引腳,而且電源供應充足(影片喺01:30)。

影片時間戳

  • 00:00 開始
  • 1:45 蜂鳴器程式介紹
  • 5:57 接線蜂鳴器同S8050晶體管
  • 9:57 ESP32蜂鳴器嘅Arduino程式碼
  • 12:52 選擇ESP32開發板同COM端口
  • 14:05 3.1 蜂鳴器項目示範

圖片

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
812-ESP32 Tutorial 13/55- Arduino code for controlling buzzer
語言: C++
const int buzzerPin = 14; // the buzzer pin

void setup()
{
  pinMode(buzzerPin, OUTPUT); // Set as output
}

void loop()
{
  for (int i = 0; i < 50; i++) // Loop 50 times and play a short tone each time
  {
    digitalWrite(buzzerPin, HIGH); // Set to HIGH to make the buzzer sound
    delay(3); // Wait for 3 milliseconds
    digitalWrite(buzzerPin, LOW); // LOW to turn off the buzzer
    delay(3); // 
  }
  delay(1000); // Wait for 1s before starting the next loop
}

資源與參考資料

文件📁

数据表 (pdf)