音樂透過愉悅的氣氛締造人與人的緣分。此作品為可以多人共享的音樂遊戲機,外觀分為以觸控按鈕點擊的樂譜板與透過伺服馬達敲擊的演奏板兩部份,可即興演奏或挑選樂譜進行挑戰;與其他幼兒遊具不同,樂譜難度能再提高,即使長大後也能因其挑戰性而繼續使用。
六到八歲的兒童已開始理解更複雜的情感,正值認知發展的活躍期,透過聲音的組成、演奏,培養他們情感表達的一部分;我們想讓遊戲時不僅是操作的人能感受到快樂,旁人在觀看演奏部分時,也能感染到愉悅的氣氛。就像當捷運進站音樂響起,孩子隨著旋律手舞足蹈,如此簡單的連結牽起人與人的緣分。
此作品外觀分為以觸控按鈕點擊的「樂譜板」與透過伺服馬達敲擊的「演奏板」兩部份,並搭配三個模式:如彈鋼琴般隨意演奏,樂譜板上即發射絢麗的動態燈光的一般模式;經由引導點擊演奏樂譜,讓使用者熟悉規則的教學模式;以及可選擇隨樂曲及時按下正確音高、挑戰獲得更高分數的挑戰模式。此音樂遊戲機與其他幼兒遊具不同,樂譜難度能再提高,即使長大後也能因其挑戰性而繼續使用。
工作原理
BMS00010兩鍵電容式觸控感測模組
BMS00010兩鍵電容式觸控感測模(簡稱?兩鍵式觸控模組」)是使用Holtek BS83A02A-4觸摸IC所開發出來的兩鍵電容式觸摸模塊,BS83A02A-4內有8-bit MCU及演算法,具備更好的抗干擾能力及偵測環境變化能力,能確保不受電源干擾及環境溫度變化影響。OUT1/OUT2個別輸出KEY1/KEY2感測區的感測訊號,當感測區被觸摸時,輸出0V,反之則輸出VDD。
HC-05藍牙模組
樂譜板和演奏板的HT32F52352透過UART介面連接各自的HC-05藍牙模組(以下簡稱「藍牙模組」),設定傳輸的鮑率皆為9600 bits/s,並透過藍牙模組傳送及接收自訂的音符資料和控制背景音樂的指令(表1)。在作品中的樂譜板上按下觸控模組後,會傳送表格中對應的的八個音符,若按下Do,樂譜板則傳送Do的資料,演奏板會接收到Do的指令0x01,並控制對應的伺服馬達並做敲擊的動作,以此類推。
表1:HC-05藍牙模組
指令
|
控制
|
曲目編號 (bit0~4) + 0xE0 (bit5~7)
|
播放音樂
|
0xC0
|
繼續播放
|
0xA0
|
暫停音樂
|
0x60
|
停止音樂
|
0x01
|
敲擊Do的伺服馬達
|
0x02
|
敲擊Re的伺服馬達
|
0x04
|
敲擊Mi的伺服馬達
|
0x08
|
敲擊Fa的伺服馬達
|
0x10
|
敲擊Sol的伺服馬達
|
0x20
|
敲擊La的伺服馬達
|
0x40
|
敲擊Si的伺服馬達
|
0x80
|
敲擊高音Do的伺服馬達
|
SG-90伺服馬達、PCA9685
PCA9685模組(圖3)使用I2C傳輸協定來控制16組PWM的訊號,訊號頻率跟duty cycle可在24Hz~1526Hz與0%~100%之間做設定,並透過模組的Pin A0~A5來設定I2C的Slave Address。
藉由PCA9685所輸出多組的PWM訊號來控制不同的伺服馬達敲擊不同的角度。
WS2812B LED
WS2812B LED燈條(簡稱「LED燈條」)的控制電路與RGB晶片集成在一個5050封裝的IC中,並利用其串列級聯介面(圖4),透過一根信號線完成每顆WS2812B LED燈(簡稱「LED燈」)RGB資料的接收與解碼。
DIN端接受從MCU輸出的資料,前24個位元資料被第一個LED燈提取,並存放在該顆LED燈內部的鎖存器,剩餘的資料經過內部整形處理電路整形放大後通過DO轉發輸出給下一個串列上的LED燈,每經過一個LED燈的傳輸,信號減少24位元(圖5)。
每一個位元的週期為1.25微秒,邏輯1的占空比約為66%,邏輯0的占空比約為33%(圖6)。每顆LED燈資料傳輸順序為G、R、B共3個位元組,位元組的傳送方式由高位元至低位元傳送(圖7)。
傳輸完每顆LED燈的控制訊號(燈數 *24個位元)後再維持大於50微秒的0電位,更新每顆LED燈接收到的RGB資料並顯示。
由於WS2812B的控制訊號需精準的控制週期數量及佔空比,故使用PDMA+PWM的方式驅動WS2812,以達到佔用MCU較低資源且精準輸出控制訊號的目的。
控制原理為:將PWM訊號的週期設定為60(60/48,000,000=1.25微秒),並建立一個大小為控制燈數*24個位元組的PDMA訊號源陣列,將每個位址存放邏輯1/0的占空比資料,若為邏輯1則將該位址的值設為40(60*66%?40),反之則設為20(60*33%?20)。將PDMA訊號源陣列的資料全部輸出至第一顆LED燈的DIN腳位,並維持50微秒以上的0電位,即能更新燈條上每顆LED燈顏色。
DFR0299音樂模組
表2:DFR0299的使用腳位說明
腳位名稱
|
功能
|
VCC
|
3.3V~5.0V
|
RX
|
UART接收腳位
|
TX
|
UART傳送腳位
|
SPK_1
|
喇叭正極(低於 3W)
|
GND
|
共地
|
演奏板的HT32F52352透過UART傳送特定的指令要求音樂模組該如何控制背景音樂。
指令傳輸順序依照:$S、VER、Len、Feedback、CMD、para1、para2、checksum、$O(表3)。其中除了 $S,VER,Len 和 $O 的指令資料不變,傳送的資料會根據CMD、Feedback、para1、para2和checksum的指令資料改變而有不同的控制指令。
(圖8)音樂會被存放在TF卡內,若想依音樂的名稱指定播放,必須將音樂存放在資料夾內,否則模組會依存放的時間指定播放。資料夾名稱必須為數字,例如:01、02、03等等;音樂名稱也必須為數字,例如:001、002、003等等。如此一來,演奏板的HT32F52352能準確地播放使用者指定播放的音樂。
表3:DFR0299資料指令格式
位元組
編號
|
位元組名稱
|
位元組資料
|
0
|
$S(起始指令)
|
0x7E
|
1
|
VER(版本)
|
0xFF
|
2
|
Len(位元組長度)
|
0x06
|
3
|
CMD(控制指令)
|
見表4的CMD
|
4
|
Feedback
|
0x01:需要回饋
0x00:不需要回饋
|
5
|
para1
(參數最高位元組)
|
見表4的Parameter
|
6
|
para2
(參數最低位元組)
|
7~8
|
checksum(校驗和)
|
Byte 1~6總和
|
9
|
$O(結束指令)
|
0xEF
|
表4:演奏板使用的音樂模組的控制指令
CMD
|
Parameter
|
功能
|
para1
|
para2
|
0x06
|
0x00
|
0~30
|
調整音量
|
0x09
|
0x00
|
0x00:U
|
音樂來源
|
0x01:TF
|
0x02:AUX
|
0x03:SLEEP
|
0x04:FLASH
|
0x0C
|
0x00
|
0x00
|
重置模組
|
0x0D
|
0x00
|
繼續播放
|
0x0E
|
0x00
|
暫停播放
|
0x16
|
0x00
|
停止播放
|
0x0F
|
1~10
資料夾編號
|
0x01~0xFF
曲目編號
|
播放歌曲
|
作品結構
作品由兩個HT32F52352 MCU組成,分別控制樂譜板與演奏板並控制各自的外部模組及設備(圖9)。
樂譜板
使用1組UART介面接收與傳輸與藍牙模組之間的訊號,設定此藍牙模組為主端,並與演奏板上從端的藍牙模組連線以互相傳遞、接收自訂的資料(表1)。
使用9組GPIO接收4組兩鍵式觸控模組及按鈕的輸入訊號。
使用1組PDMA通道來輸出驅動WS2812B LED燈條的PWM訊號。
演奏板
演奏板負責控制伺服馬達、MP3模組、和藍牙模組。
伺服馬達需要PWM訊號改變轉動的角度,透過I2C傳輸協定來控制PCA9685模組來輸出8個通道的PWM訊號,並將訊號分別接上不同的伺服馬達,透過伺服馬達的轉動來敲擊不同鐵琴片。
MP3模組透過UART介面接收資料定義好的資料格式,並執行對應指令(表3、4)。
演奏板控制的藍牙模組為從端,與樂譜板上主端的藍牙模組連線,透過UART介面傳送資料至演奏板,並依照定義好的資料執行對應的指令(表1)。
作品流程
在遊戲開始之前,先進行模式選擇,總共有三種模式,分別為一般模式、教學模式及挑戰模式,在模式選擇的狀態下,模式選擇燈會呈現閃爍狀態,按下最右側、最左側的琴鍵可以切換模式。短按按鈕能進入下一步,長按按鈕則返回上一步。
教學/挑戰模式,會先選擇遊玩的歌曲,樂譜板會播放這首歌的音符段落、演奏板會播出歌曲的段落作為歌曲的提示,最右側、最左側的琴鍵可以切換歌曲,短按按鈕,就可以正式進入教學/挑戰模式了。(系統流程圖請參考:圖12)
一般模式
進入遊戲後,玩家可在樂譜板按下任意琴鍵,與琴鍵相同直排的LED燈會依序閃爍,顯示動態效果,同時,演奏板相對應的琴槌會敲響鐵片,演奏玩家所觸及的音符。
教學模式
樂譜板的倒數第二橫排為判定基準。按下開始時,音符會從樂譜板最上方落下,在任何時候按下琴鍵,相對應的琴槌就會敲擊,若沒有按下琴鍵,樂譜將會暫停音符播放,直至按下正確琴鍵後,樂譜才會繼續播放音符(圖10狀況1);當音符落到基準線時按下相同琴鍵,該音符會變成黃色(圖10狀況2),按錯則顯示紅色(圖10狀況3),當音符全部播放完畢時,即返回歌曲選擇。
挑戰模式
遊戲開始後,樂譜板會從最上方播放音符(圖11狀況1)、演奏板上會同步播放背景音樂。其計分規則為:音符在判定基準線時按下對應琴鍵,該音符變成黃色(圖11狀況2),分數加2分;音符在基準線前/後一排時按下琴鍵,該音符變成綠色(圖11狀況3),分數加1分;若不在前述範圍內按下琴鍵,則在相對應基準線上顯示紅色(圖11狀況4)。當全部音符播放完畢時會依比例總分計算出等級,分為A、B、C、F四個等級,再返回歌曲選擇。
?
作品使用情境及示意圖
作品可展開成樂譜板、演奏板兩部分,亦可收合在一起成長30公分、寬20公分、高28公分的中型玩具(圖13)。
樂譜板的燈落下時有如蘋果掉落,琴鍵及按鈕為活動式的操控裝置,可以拿在手上操作(圖14)。
演奏板的透過伺服馬達控的轉動,以控制斧頭旋轉來敲擊上下端用透明線固定在空中的琴片,使琴片發出聲音(圖15~圖16)。
測試方法
測試項目分為開機、模式選擇、一般模式、教學模式、挑戰模式,共5部分,每部分再對應不同的感測器列出測試細項。若依照測試細項的內容操作並符合預期結果,即通過該項測試(表5)。
表5:作品測試項目及結果
測試項目
|
測試細項
|
預期結果
|
測試結果
|
開機
|
樂譜板、演奏板上電
|
樂譜板、演奏板的藍牙模組連線
|
通過
|
進入模式選擇流程
|
通過
|
模式選擇
|
樂譜板上點擊最左/右觸控模組
|
模式燈號依左/右切換
|
通過
|
樂譜板選擇至一般模式
|
樂譜板上短按按鈕
|
進入一般模式
|
通過
|
樂譜板選擇至教學模式
|
進入教學模式的選擇歌曲流程
|
通過
|
樂譜板選擇至挑戰模式
|
進入挑戰模式的選擇歌曲流程
|
通過
|
一般模式
|
樂譜板上點擊觸控模組
|
樂譜板上的LED燈顯示動畫
|
通過
|
演奏板上對應的伺服馬達敲擊鐵片
|
通過
|
樂譜板上長按按鈕
|
返回模式選擇
|
通過
|
教學模式
|
選擇遊玩音樂
|
樂譜板上點擊最左/右觸控模組
|
音樂曲目依左/右切換
|
通過
|
樂譜板上短按按鈕
|
進入教學模式實際遊玩流程
|
通過
|
樂譜板上長按按鈕
|
返回模式選擇
|
通過
|
遊玩教學模式
|
播放樂譜
|
樂譜由上往下移動
|
通過
|
樂譜板上點擊觸控模組
|
觸控模組對應在LED燈基準線的音符改變顏色
|
通過
|
演奏板上對應的伺服馬達敲擊鐵片
|
通過
|
播放結束
|
返回教學模式的選擇遊玩音樂
|
通過
|
樂譜板上長按按鈕
|
停止演奏板上播放中的背景音樂
|
通過
|
返回教學模式的選擇遊玩音樂
|
通過
|
挑戰模式
|
選擇遊玩音樂
|
樂譜板上點擊最左/右觸控模組
|
音樂曲目依左/右切換
|
通過
|
樂譜板上短按按鈕
|
進入挑戰模式實際遊玩流程
|
通過
|
樂譜板上長按按鈕
|
返回模式選擇
|
通過
|
遊玩挑戰模式
|
播放樂譜
|
樂譜由上往下移動
|
通過
|
演奏板上播放對應的背景音樂
|
通過
|
樂譜板上點擊觸控模組
|
觸控模組對應在LED燈基準線及
基準線前/後一排的音符改變顏色
|
通過
|
點擊觸控模組正確時分數往上累加
|
通過
|
演奏板上對應的伺服馬達敲擊鐵片
|
通過
|
播放結束
|
返回教學模式的選擇遊玩音樂
|
通過
|
樂譜板顯示計分等級
|
通過
|
樂譜板上長按按鈕
|
停止演奏板上播放中的背景音樂
|
通過
|
返回挑戰模式的選擇遊玩音樂
|
通過
|
(本文作者古聖如1、林楷潔2、陳彥霖3、吳宗翰3、吳岳澤3、李宛穎3、黃靖涵3為大同大學1電機工程學系副教授、2設計科學研究所助理教授及3學生)
參考文獻
[1]HT32F52352 Datasheet:
https://www.holtek.com/productdetail/-/vg/HT32F52342-52
[2]Touch I/O Flash MCU
BS83A02A-4/BS83A04A-3/BS83A04A-4:
https://www.holtek.com.tw/productdetail/-/vg/BS83A02A-4_A04A-3-4
[3]Serial Port Bluetooth Module (Master/Slave)HC-05:
https://www.itead.cc/wiki/Serial_Port_Bluetooth_Module_(Master/Slave)_:_HC-05
[4]SG90 Servo Motor Datasheet:
https://components101.com/servo-motor-basics-pinout-datasheet
[5]PCA9685 Datasheet:
https://cdn-shop.adafruit.com/datasheets/PCA9685.pdf
[6]Worldsemi introduce WS2812B:
http://www.world-semi.com/Certifications/WS2812B.html
[7]DFR0299 User Manual:
https://www.dfrobot.com/product-1121.html