王梓兮,张 群,孙科学
(1.南京航空航天大学 附属高级中学,江苏 南京 210016;2.南京邮电大学 电子与光学工程学院、柔性电子(未来技术)学院,江苏 南京 210023)
随着如今移动互联网、大数据、云计算等科学技术的日渐发展,外界的诱惑力变得越来越大,大学生们往往会沉迷于杂事之中而忽略时间管理[1]。在荒废了大量时间后的碎片化学习中收获甚微,更对自己的个人生活产生了不可忽视的影响[2]。故根据古代沙漏中沙粒崩塌的模型[3],设计多功能音乐沙漏模型。在非整点时,电子沙漏电路会模拟30秒正常的沙漏掉落,以提醒人们时间的可贵,要珍惜碎片化的时间;在整点时刻进行短暂的时间回溯,下部沙粒重回上部沙漏后再次掉落,同时播放歌曲并且灯珠颜色变化,此过程同为30秒,以此提醒人们时间一去不回,人们应当注重时间管理好好利用时间。
多功能音乐沙漏采用nodemcu作为主控单片机,通过ws2812形象表示沙粒[4-6],模拟沙漏的运动过程。如图1所示,nodemcu通电之后,可进行Wi-Fi联网实时获取当前时间,在非整点时进行正常的沙漏掉落,在整点时会加上一个特殊的沙漏特效。手机blinker与单片机进行连接,进行外部中断。
图1 总体设计流程图
基于单片机最小系统在nodemcu开发板上的一体化[7],多功能音乐沙漏的电路设计偏重灯光模拟电路以及音乐播放电路两部分,其供电接口为nodemcu开发板数据接口一体,它使整个系统简化、扁平化。
灯光模拟电路由30个ws2812小灯串联,通过统一正负极进行供电,再辅以数据线连接D5引脚,对ws2812进行编号命名,控制其开关以及颜色变化等。无源蜂鸣器电路和开发板之间有三条电路连接,正负极进行蜂鸣器供电,数据线连接D7号引脚,控制音乐的播放。
多功能音乐时钟作为物联网智能家具的衍生品,系统硬件部分使用arduino软件进行代码编写和修改[8-9]。手机端部分使用blinker点灯科技作为控制面板。通过MQTT进行手机端-设备端-电脑端三者之间的通信,并在手机端blinker搭建可视化移动物联网平台[10],使用者通过图2的手机界面里的按键操作即可完成对多功能音乐沙漏的中断控制。
图2 手机blinker操作平台
当nodemcu通电后,开发板根据写入的Wi-Fi名称和Wi-Fi密码进行反复连接,如果Wi-Fi名称、密码错误或者Wi-Fi信号较弱导致连接网络不成功,则无源蜂鸣器会报警。如果单片机成功连接上网络,nodemcu会以一秒为间隔实时获取当前的时间并将当前时间的时、分、秒分别记录在变量hours,minu和sece之中。
每次获得数据的同时进行一次分析,首先分析当前的minu和sece是否为0,如果minu和sece均为0,则执行整点特殊功能;如果至少有一个为0则判断现在是否有程序执行,当有程序执行则继续执行此程序,无程序执行则执行非整点常规功能。
不进行中断控制时,多功能音乐沙漏运行实时功能,但在实时读取时间的时、分、秒的数据同时,沙漏也在获取物联网里的手机平台消息。当在手机物联网平台上进行功能按钮操作时,手机会上传该按钮对应的按钮信息,这时的按钮信息被开发板联网获取后会与代码里已有的信息进行比对,中断现有的功能程序,执行获取信息所对应功能。
将30个ws2812小灯珠分为对称的上下两组,呈现为沙漏形状,采用流水灯思路[11],用一根数据线将其串联,再串联其正负极电源线,进行供电。
以沙漏上半部分的ws2812为例,见图3。对于其ws2812的编号按照电路顺序从0开始编码,30个ws2812灯珠的编号为0到29,此时便可以在代码里通过对数字编号的控制达到对对应灯珠的控制。
图3 上部沙漏灯珠编号图
图4 RGB三原色表
每个ws2812小灯珠的内部均含有红、绿、蓝3个单色LED,通过控制灯珠的编号来对应具体的灯珠,再通过代码的编写,控制具体的灯珠里小LED的亮灭。将0~255的数值赋值给LED灯,控制其亮度大小(其中0为最暗,255为最亮)[12],依照图4的RGB三原色表,便可以得到不同颜色。
根据三原色的色彩比例[13],分析出沙漏中沙粒应有的黄色以及时间回溯和警醒时需要的红色灯光的三原色亮度比例(其中占比最高的颜色亮度设置为255,其他的两种颜色依照比例计算其亮度),最终记录三原色亮度代码,通过代码在不同的时间片刻给予不同编号的灯珠以不同的颜色,根据时间的转变即起到动态的效果。
灯光模拟电路图见图5,依照编号顺序将ws2812灯珠依次串联,数据线连接12号引脚,通过数据的传递来控制灯的颜色以及亮灭[14]。
图5 灯光模拟电路图
以灯珠呈现黄光表示沙漏的该处充满沙粒、灯珠不发光表示沙漏的此处无沙粒,在该程序刚运行之时位于上方倒三角的15个灯珠全部呈现黄光,下面的15个灯珠处于熄灭状态,以模拟沙子充满容器上方的沙漏初始状态。
随着时间的变化,模拟沙漏上部的沙粒依照重力变化一粒一粒减少,下部的沙漏随之从下到上逐渐堆积。此时的沙漏模拟效果即为上部灯珠一个个熄灭,下部灯珠一个个呈现黄光[15],直到最后上方的灯珠全部熄灭,下方的灯珠全发黄光,持续此状态三秒,后重复此过程。
在该功能中沙漏中的沙粒会呈现出不同的颜色状态,灯珠发光表示沙漏的该处充满沙粒,灯珠不发光则表示沙漏的此处无沙粒。初始状态的多功能音乐沙漏上部15个灯珠不发光,下部15个灯珠呈现黄光,表示该沙漏为装满普通黄沙且已经流完的普通沙漏。
之后进行一个短暂的时间重置,下部的沙粒会以反重力的形式倒流到沙漏上部。当上部再次充满沙粒的时候,上部灯珠由正常的黄光变为白光,并在再次飞速掉至沙漏下部的过程中变换为其他多彩颜色,而在最终落入沙漏下部时呈现出刺眼的红色,整个过程的时间与正常的循环时间恰好相同。
在当用PWM方波驱动无源蜂鸣器时,无源蜂鸣器可视为一个小型扬声器[16],基于nodemcu内部时钟分频[17],根据不同频率的方波信号即可播放出不同频率的音调。根据音调的高低与时间变化即可实现无源蜂鸣器的歌曲播放功能。
以南京邮电大学的校歌《信达天下》进行参考,其简谱图见图6。
图6 参考乐谱图
依照八度的音程按波长比例平均分成十二等份,每一等份称为一个半音(小二度)的原理[18]。将音符NTC0定义为-1,NTC1定义为262,NTC2定义为294,NTC3定义为330,NTC4定义为350,NTC5定义为393,NTC6定义为441,NTC7定义为495,NTCL5为196,NTCL6为221,NTCL7为248,NTCH1为525,NTCH2为589,按照乐谱写入对应的音符数组。
已知一拍的时长大约为400~500 ms[19],将一拍的时长以400 ms近似,则当以四分音符为节拍时,四分音符的时长就为400 ms,八分音符的时长就为200 ms,十六分音符的时长就为100 ms,以此基础将乐谱里的节拍记录在数组里。
程序运转时单片机将音符与节拍逐一对应,驱动无源蜂鸣器演奏对应音符持续指定节拍时间,然后再执行下一音符与节拍,从而实现动态的歌曲播放。
通过常规灯光模拟、特殊灯光模拟、音乐播发三大核心功能的实现,可以在联网中断控制和非中断实时循环等情况下进行多种有机集合。多功能音乐沙漏实现了整点提醒与非整点计时功能,能够让使用者实时体会到时间的流逝,并且在灯光的提醒与音乐的鼓舞之下抓紧碎片化的时间,积极投身于学习生活之中去。