跳到:
ESP32 Tutorial 1/55 - Introduction to SunFounder's ESP32 IoT Learning kit Software and Arduino IDE ESP32 Tutorial 2/55 - What's ESP32, Camera Extension Board, unboxing SunFounder's ESP32 IoT kit ESP32 Tutorial 3/55 - Resistor, LED, Breadboard Project: Hello LED -ESP32 IoT Learning kit ESP32 Tutorial 4/55 - Data types Define Variable Int, bool, char, Serial Monitor-ESP32 IoT kit ESP32 Tutorial 5/55 - LED Fade, control brightness of an LED -ESP32 IoT Learning kit ESP32 Tutorial 6/55 - Using RGB LED Project 2.3 -SunFounder's ESP32 IoT Learning kit ESP32 教學 7/55 - 使用陣列配合 ESP32 Arduino 程式設計 - SunFounder 嘅 ESP32 IoT 學習套件 ESP32 Tutorial 8/55 -Walking Light 74HC595 Shift register -SunFounder's ESP32 IoT Learning kit ESP32 教學 9/55 - 用按鈕切換 LED,按一下開,按一下關 - SunFounder ESP32 IoT 套件 ESP32 教學 10/55 - 使用七段顯示器 74HC595 嘅數字計數器 - ESP32 IoT 學習套件 ESP32 教學 11/55 - 使用 LCD1602 LCD2004 同 ESP32 - SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 12/55 - WS2812 RGB 燈帶 4 項目,配合 SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 13/55 - Arduino 用有源蜂鳴器發出嗶聲 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 14/55 - 使用 SunFounder ESP32 IoT 學習套件播放自訂音樂音符 ESP32 教學 15/55 - 用 ESP32 L293D 控制直流馬達速度 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 16/55 - 使用 ESP32 同 L293D 嘅迷你水泵 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 17/55 - 使用 ESP32 同電位器控制伺服馬達 - ESP32 IoT 學習套件 ESP32 教學 18/55 - 使用 ESP32 偵測傾斜 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 19/55 - 使用紅外線感測器偵測障礙物 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 20/55 - 循線模組 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 21/55 - 用 PIR 動作感應器偵測人體 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 22/55 - 用 LED Arduino 感受光線 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 Tutorial 23/55 - Reading Voltage of potentiometer using ESP32 | SunFounder's ESP32 IoT kit ESP32 教學 24/55 - 量度土壤濕度用於灌溉 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 25/55 - 使用 NTC 同 LCD 測量溫度 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 26/55 - 使用搖桿配合 Arduino 採取行動 | SunFounder 嘅 ESP32 IoT 套件 ESP32 教學 27/55 - 用超聲波感測器量度距離 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 28/55 - DHT11 溫度感測器配合 LCD | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 29/55 - 用 ESP32 讀取紅外線遙控器按鍵| SunFounder 嘅 ESP32 IoT 學習套件 ESP32 Tutorial 30/55 - Control Servo Over the web using MQTT using Adafruit IO Service | SunFounder's ESP32 IoT Leaning kit ESP32 教學 31/55 - 專案 LED 燈帶配合避障功能 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教程 32/55 - 汽车倒车距离警告(带LCD同蜂鸣器)| SunFounder嘅物联网学习套件 ESP32 教學 33/55 - 使用 SunFounder 嘅 ESP32 IoT 學習套件整數碼骰仔 ESP32 教學 34/55 - 用 RGB LED 同旋鈕整顏色漸變 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 35/55 - 植物監測器,土壤、溫度同光線 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 36/55 - 猜數字遊戲 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 37/55 - 使用藍牙應用程式配合 ESP32 BLE | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 38/55 - 用手機控制 RGB LED | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 39/55 - 用 ESP32 做藍牙音樂播放器 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 Tutorial 40/55 - Reading and writing to Micro SD Card | SunFounder's ESP32 IoT Learning kit ESP32 教學 41/55 - 使用 Micro SD 卡嘅 MP3 播放器 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 42/55 - 用相機影相並儲存喺 Micro SD CAM-1 | SunFounder 嘅 ESP32 套件 ESP32 教程 43/55 - 物聯網互聯網天氣站 | SunFounder 嘅 ESP32 物聯網學習套件 ESP32 教學 44/55 - ESP32 相機網絡伺服器透過 WiFi 傳輸視頻串流 CAM-2 | SunFounder 嘅 ESP32 套件 ESP32 Tutorial 45/55 - Custom Streamign Server with LED control CAM-3 l SunFounder's ESP32 Learning kit ESP32 教學 46/55 - 使用 HiveMQ MQTT 進行遠程溫度監控 | SunFounder 嘅 ESP32 套件 ESP32 教學 47/55 - 使用 MQTT 透過互聯網嘅 WS2812 CheerLights | SunFounder 嘅 ESP32 IoT 套件 ESP32 Tutorial 48/55 - Remote Temperature Monitoring and LED control MQTT | SunFounder's ESP32 IoT kit ESP32 Tutorial 49/55 - Control DC Motor Over The internet using Adafruit IoT | SunFounder's ESP32 kit ESP32 教學 50/55 - 喺世界任何地方控制 RGB LED | SunFounder 嘅 ESP32 套件 ESP32 Tutorial 51/55 - Temperature and Humidity over WiFi with DHT | SunFounder's ESP32 IoT Learning Kit ESP32 教學 52/55 - WS2812 CheerLights MQTT 全球同步連 LCD | SunFounder ESP32 IoT 套件 ESP32 教學 53/55 - 建立 LCD 網絡時鐘 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 54/55 - 透過 Wi-Fi 設定 WS2812 LED 燈條顏色 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 Tutorial 55/55 - How to measure 12V, 24V or 100V DC voltage | SunFounder's ESP32 IoT Learning kit
ESP32 教學 14/55 - 使用 SunFounder ESP32 IoT 學習套件播放自訂音樂音符
喺呢個教學入面,我哋會學吓點樣用SunFounder ESP32微控制器,透過一個被動蜂鳴器同埋一個晶體管嚟播放音樂音符。呢個項目嘅目的係示範點樣透過ESP32嘅GPIO引腳控制蜂鳴器,用特定頻率嚟產生聲音。
我哋會將一個被動蜂鳴器連接到ESP32,咁樣就可以根據我哋提供嘅頻率嚟產生唔同嘅音樂音符。呢個設置包括用一個晶體管嚟高速開關蜂鳴器,產生我哋可以聽到嘅聲波。如果想進一步了解呢個項目,記得睇吓條片(片入面00:30)。
ESP32-13-buzzer-schematic
硬件講解
呢個項目用到嘅主要元件包括SunFounder ESP32微控制器、一個被動蜂鳴器同埋一個NPN晶體管(2N8050)。ESP32係一塊功能強大嘅開發板,內置Wi-Fi同藍牙功能,令到佢好適合用喺各種物聯網應用。喺呢個情況,佢會產生信號嚟控制蜂鳴器。
被動蜂鳴器嘅運作原理係當有交流電壓施加喺佢上面時就會產生聲音。同有內置振盪器嘅主動蜂鳴器唔同,被動蜂鳴器需要外部信號先至可以產生聲音。晶體管扮演開關嘅角色,令到ESP32可以控制蜂鳴器而唔使直接供電畀佢,確保唔會超過微控制器嘅電流額定值。
S87050_transistor
數據手冊詳情
製造商
SunFounder
零件編號
被動蜂鳴器
工作電壓
3.3 V - 5 V
共振頻率
2 kHz - 4 kHz
電流消耗
≤ 30 mA
聲壓級
≥ 70 dB
封裝
通孔式
備註/變體
無
連接蜂鳴器時要確保極性正確。
要喺晶體管基極加一個限流電阻。
將蜂鳴器連接到符合其電壓額定值嘅電源。
小心唔好超過晶體管嘅最大電流額定值。
保持接線整齊,避免短路。
上載程式碼之前先測試電路,避免損壞元件。
用麵包板嚟方便連接元件。
如果用到按鈕,記得做防彈跳處理。
如果晶體管用喺高電流情況,考慮加散熱器。
接線指示
ESP32-13-buzzer-wriing
要接線,首先將被動蜂鳴器嘅正極端子連接到ESP32嘅3.3V引腳。蜂鳴器嘅負極端子應該連接到NPN晶體管嘅集電極。晶體管嘅發射極引腳就要接到ESP32嘅地線(GND)。
跟住,將一個1 kΩ電阻由晶體管嘅基極連接到ESP32嘅GPIO引腳14。呢個電阻用嚟限制流入晶體管基極嘅電流。最後,確保所有接地連接都綁埋一齊,為電路提供一個共同參考點。
程式碼示例同講解
const int buzzerPin = 14; // 蜂鳴器引腳
void setup()
{
pinMode(buzzerPin, OUTPUT); // 設定為輸出
}
喺程式碼入面,我哋定義一個常數變數buzzerPin,設定為14,表示連接到晶體管基極嘅GPIO引腳。喺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()函數入面有一個for循環,會運行50次。每次迭代都會快速開關蜂鳴器,產生一個音調。3毫秒嘅延遲控制蜂鳴器啟動同關閉嘅時間,而循環尾段嘅1秒延遲就提供一個停頓,然後先重複。
示範/預期效果
一旦完成接線同上載程式碼,你應該會聽到蜂鳴器產生一連串嘅短音。如果蜂鳴器冇聲,檢查吓你嘅連接,特別係晶體管嘅方向同電阻值。確保程式碼用咗正確嘅引腳,同埋ESP32有正確供電。
喺示範期間,如果你遇到問題,可能係因為接線錯誤或者用錯咗蜂鳴器嘅引腳。對照指示檢查接線,並確保電源充足(片入面08:15)。
影片時間戳
00:00 開始
1:52 項目介紹
4:11 接線講解
8:11 喺Arduino IDE選擇ESP32板同COM端口
9:53 Arduino程式碼講解
13:17 項目示範
13:58 項目2程式碼同示範
圖片
ESP32-13-buzzer-wriing
ESP32-13-buzzer-schematic
SunFounder-ESP32-Lesson-13-Beep.mp4_snapshot_07.43.463
S87050_transistor
ESP32-13-buzzer-schematic
SunFounder-ESP32-Lesson-13-Beep.mp4_snapshot_07.43.463
代碼
813-ESP32 Tutorial 14/55- Arduino code for custom music tone
語言: C++
View code
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
}