音乐透过愉悦的气氛缔造人与人的缘分。此作品为可以多人共享的音乐游戏机,外观分为以触控按钮点击的乐谱板与透过伺服马达敲击的演奏板两部份,可即兴演奏或挑选乐谱进行挑战;与其他幼儿游具不同,乐谱难度能再提高,即使长大后也能因其挑战性而继续使用。
六到八岁的儿童已开始理解更复杂的情感,正值认知发展的活跃期,透过声音的组成、演奏,培养他们情感表达的一部分;我们想让游戏时不仅是操作的人能感受到快乐,旁人在观看演奏部分时,也能感染到愉悦的气氛。就像当捷运进站音乐响起,孩子随着旋律手舞足蹈,如此简单的连结牵起人与人的缘分。
此作品外观分为以触控按钮点击的「乐谱板」与透过伺服马达敲击的「演奏板」两部份,并搭配三个模式:如弹钢琴般随意演奏,乐谱板上即发射绚丽的动态灯光的一般模式;经由引导点击演奏乐谱,让使用者熟悉规则的教学模式;以及可选择随乐曲及时按下正确音高、挑战获得更高分数的挑战模式。此音乐游戏机与其他幼儿游具不同,乐谱难度能再提高,即使长大后也能因其挑战性而继续使用。
工作原理
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:睡觉
|
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数据表:
https://www.holtek.com/productdetail/-/vg/HT32F52342-52
[2]Touch I/O Flash MCU
Gentica 02 A.4 / Puta 04 A3 / GS44:
https://www.holtek.com.tw/productdetail/-/vg/BS83A02A-4_A04A-3-4
[3]串口蓝牙模块(Master / Slave)HC-05:
https://www.itead.cc/wiki/Serial_Port_Bluetooth_Module_(Master/Slave)_:_HC-05
[4] SG90伺服电机数据表:
https://components101.com/servo-motor-basics-pinout-datasheet
[5] PCA9685数据表:
https://cdn-shop.adafruit.com/datasheets/PCA9685.pdf
[6] WorldSemi介绍WS2812B:
http://www.world-semi.com/Certifications/WS2812B.html
[7] DFR0299用户手册:
https://www.dfrobot.com/product-1121.html