中文 | English

物聯網系列:讓電腦發出音效(簡單揚聲器篇)

隨著數位化技術推進,電子數位應用產品為人類生活帶來極佳的便利性與樂趣。越來越多的數位產品,因應高齡使用者與弱勢族權,語音提示顯示內容的需求越來越迫切。因此,語音模組已成為產業的關注焦點,全球相關廠商也投注資源開發語音模組之新技術、新應用,並為提升人類便利使用而努力。

由於許多電子線路必須將內部的狀態資訊,透過音效、語音等方式,發聲音到外部使用者,最常見的發聲音的簡單方式是使用簡單的揚聲器;進階的是使用更高階的語音處理晶片來產生語音、音效。

本系列是「物聯網系列」系列電腦音效子系列第二篇:讓電腦發出音效(簡單揚聲器篇),主要告訴讀者,電腦發出聲音的基本原理,往後筆者可以一一介紹如何產生音效、語音等技術。

揚聲器

由於許多電子線路必須將內部的狀態資訊,透過音效、語音等方式,發聲音到外部使用者,最常見的發聲音的簡單方式是使用簡單的揚聲器。

幸運的是,使用 Arduino 開發板,使用一個 Digital Pin(數位接腳),連接到到處可見的揚聲器裝置(喇叭),就可以透過 Arduino 開發板發出簡單,可辨識的音樂、特效、語音等,而且非常方便。

Tone 函式

使用 Arduino 開發板,使用一個 Digital Pin (數位接腳)連接喇叭,如本例子是接在數位接腳 13( Digital Pin 13 ),讀者也可將喇叭接在您想要的腳位,只要將下列程式作對應修改,可以產生想要的音調。

我們將下表程式,請讀者鍵入 Sketch IDE 軟體(軟體下載),編譯完成後上傳到開發版進行測試。

範例程式:在這裡

揚聲器程式下載網址

讀者可以由下表所示,可以了解使用 Tone 函數時,發出哪一種聲音,就必須輸入哪種參數。

 

表 1- Tone 頻率表

常態變數 頻率(Frequency [Hz])
NOTE_B2 123
NOTE_C3 131
NOTE_CS3 139
NOTE_D3 147
NOTE_DS3 156
NOTE_E3 165
NOTE_F3 175
NOTE_FS3 185
NOTE_G3 196
NOTE_GS3 208
NOTE_A3 220
NOTE_AS3 233
NOTE_B3 247
NOTE_C4 262
NOTE_CS4 277
NOTE_D4 294
NOTE_DS4 311
NOTE_E4 330
NOTE_F4 349
NOTE_FS4 370
NOTE_G4 392
NOTE_GS4 415
NOTE_A4 440
NOTE_AS4 466
NOTE_B4 494
NOTE_C5 523
NOTE_CS5 554
NOTE_D5 587
NOTE_DS5 622
NOTE_E5 659
NOTE_F5 698
NOTE_FS5 740
NOTE_G5 784
NOTE_GS5 831
NOTE_A5 880
NOTE_AS5 932
NOTE_B5 988
NOTE_C6 1047
NOTE_CS6 1109
NOTE_D6 1175
NOTE_DS6 1245
NOTE_E6 1319
NOTE_F6 1397
NOTE_FS6 1480
NOTE_G6 1568
NOTE_GS6 1661
NOTE_A6 1760
NOTE_AS6 1865
NOTE_B6 1976
NOTE_C7 2093
NOTE_CS7 2217
NOTE_D7 2349
NOTE_DS7 2489
NOTE_E7 2637
NOTE_F7 2794
NOTE_FS7 2960
NOTE_G7 3136
NOTE_GS7 3322
NOTE_A7 3520
NOTE_AS7 3729
NOTE_B7 3951
NOTE_C8 4186
NOTE_CS8 4435
NOTE_D8 4699
NOTE_DS8 4978

資料來源

讀者可以由下表所示,可以了解使用 Tone 函數時,發出哪一種聲音,就必須輸入哪種參數。


表 2 – Tone 音階頻率對照表

音階 常態變數 頻率(Frequency [Hz])
低音Do NOTE_C4 262
低音Re NOTE_D4 294
低音Mi NOTE_E4 330
低音Fa NOTE_F4 349
低音So NOTE_G4 392
低音La NOTE_A4 440
低音Si NOTE_B4 494
中音Do NOTE_C5 523
中音Re NOTE_D5 587
中音Mi NOTE_E5 659
中音Fa NOTE_F5 698
中音So NOTE_G5 784
中音La NOTE_A5 880
中音Si NOTE_B5 988
高音Do NOTE_C6 1047
高音Re NOTE_D6 1175
高音Mi NOTE_E6 1319
高音Fa NOTE_F6 1397
高音So NOTE_G6 1568
高音La NOTE_A6 1760
高音Si NOTE_B6 1976
高高音Do NOTE_C7 2093

資料來源

讀者可以由下圖所示,可以使用 Tone 函數,其硬體如何組立,為了方便,通常會加入一個降壓電阻。

螢幕快照 2016-09-23 下午12.25.20

資料來源

讀者可以由下圖所示,可以了解硬體組立之電路圖。

螢幕快照 2016-09-23 下午12.26.40

圖 2 Arduino 喇叭接線圖

如果要使用 Arduino 開發板發出一個完整的音樂,同樣使用一個 Digital Pin (數位接腳)連接喇叭,下列程式就可以產收馬力歐( Mario )的音樂的音調。

Mario音樂範例 

Mario音樂範例(MarioBros)

程式下載網址

Mario音樂範例( Pitches.h )

程式下載網址

本實驗除了一塊 Arduino 開發板與 USB 下載線外,我們加入小喇叭(如下圖.(c)所示)。

如下圖所示,這個實驗我們需要用到的實驗硬體有下圖 .(a) 的 Arduino Mega 2560、下圖 .(b) USB 下載線、下圖 .(c) 小喇叭。

螢幕快照 2016-09-23 下午12.27.32

我們遵照前幾章所述,將 Arduino 開發板的驅動程式安裝好之後,遵照下圖之電路圖進行組裝。

螢幕快照 2016-09-24 上午12.49.15

我們將下表程式,請讀者鍵入 Sketch IDE 軟體,編譯完成後上傳到開發版進行測試。

我們發現 Arduino 開發板已經可以驅動小喇叭讓它發出歐揖、歐揖的聲音。

表 3 讓 Arduino 發出聲音程式

讓Arduino發出聲音程式(buzzer

程式下載網址

讀者也可以在筆者 YouTube 頻道中,看到本次實驗:讓Arduino發出聲音執行情形。

當然、如下圖所示,我們可以看到組立好的實驗圖,Arduino 開發板可以發出聲音。螢幕快照 2016-09-24 上午12.50.03

讓Arduino發出簡單音樂

前面筆者已經讓 Arduino 開發板發出聲音,但如果我們要讓 Arduino 開發板發出簡單音樂,我們必需加入新的指令:tone(),對於這個指令不熟的讀者,可以參考 Google Books Google Play 或 Pubu 電子書城等筆者相關作品

本實驗除了一塊Arduino 開發板與USB下載線之外,我們加入小喇叭(如圖 6.(c) 所示)。

如圖 3所示,這個實驗我們需要用到的實驗硬體有圖 6.(a) 的 Arduino Mega 2560、圖 6.(b) USB 下載線、圖 6.(c) 小喇叭。

螢幕快照 2016-09-24 上午12.52.37

我們遵照前幾章所述,將 Arduino 開發板的驅動程式安裝好之後,遵照圖  7 之電路圖進行組裝。

螢幕快照 2016-09-24 上午12.53.37

我們將下表程式,請讀者鍵入 Sketch IDE 軟體,編譯完成後上傳到開發版進行測試。

我們發現 Arduino 開發板,已經可以驅動小喇叭,讓它發出瑪琍歐的簡單音樂。

表 4讓 Arduino 發出簡單音樂程式

讓 Arduino 發出簡單音樂程式( toneMusic )

程式下載網址

表 5讓 Arduino 發出簡單音樂程式之 h 檔

讓 Arduino 發出簡單音樂程式之 h 檔( pitches.h 

程式下載網址

讀者也可以在筆者 YouTube 頻道中,在網址看到本次實驗:讓 Arduino 發出瑪琍歐的簡單音樂執行情形。

當然、如下圖所示,我們可以看到組立好的實驗圖,Arduino開發板可以發出馬力歐的簡單音樂。螢幕快照 2016-09-24 上午12.54.32

本文為「物聯網系列」系列電腦語音子系列第二篇:讓電腦發出音效(簡單揚聲器篇),主要是介紹物聯網產品開發時,如何不透過音效模組或語音模組十,卻要發出音效、音樂的功能,我們可以利用簡單、常見揚聲器來當發聲的媒介。

本篇是作者開啟物聯網系列的一個子系列:電腦語音,主要是透過本專欄的介紹,讓讀者可以了解物聯網( Internet of Thing:IOT )更多相關的使用、開發、設計中,如何產生音效、音樂、甚至語音等技術,期望在往後專欄之中,可以實作出更多物聯網的產品或實驗,

後續筆者還會繼續發表「物聯網系列」系列的文章,在未來我們可以創造出更優質,更具未來性的物聯網產品開發相關技術。

敬請期待更多的文章。

分享到社群

曹永忠

曹永忠 (Yung-Chung Tsao) ,目前為自由作家暨專業Maker,專研於軟體工程、軟體開發與設計、物件導向程式設計,商品攝影及人像攝影。長期投入創客運動、資訊系統設計與開發、企業應用系統開發、軟體工程、新產品開發管理、商品及人像攝影等領域,並持續發表作品及相關專業著作。 Email:prgbruce@gmail.com Line ID:dr.brucetsao 作者網站:https://www.cs.pu.edu.tw/~yctsao/ 臉書社群(Arduino.Taiwan):https://www.facebook.com/groups/Arduino.Taiwan/ Github網站:https://github.com/brucetsao/ Youtube:https://www.youtube.com/channel/UCcYG2yY_u0m1aotcA4hrRgQ

This site or product includes IP2Location LITE data available from https://lite.ip2location.com.