王梓兮,張 群,孫科學(xué)
(1.南京航空航天大學(xué) 附屬高級(jí)中學(xué),江蘇 南京 210016;2.南京郵電大學(xué) 電子與光學(xué)工程學(xué)院、柔性電子(未來技術(shù))學(xué)院,江蘇 南京 210023)
隨著如今移動(dòng)互聯(lián)網(wǎng)、大數(shù)據(jù)、云計(jì)算等科學(xué)技術(shù)的日漸發(fā)展,外界的誘惑力變得越來越大,大學(xué)生們往往會(huì)沉迷于雜事之中而忽略時(shí)間管理[1]。在荒廢了大量時(shí)間后的碎片化學(xué)習(xí)中收獲甚微,更對(duì)自己的個(gè)人生活產(chǎn)生了不可忽視的影響[2]。故根據(jù)古代沙漏中沙粒崩塌的模型[3],設(shè)計(jì)多功能音樂沙漏模型。在非整點(diǎn)時(shí),電子沙漏電路會(huì)模擬30秒正常的沙漏掉落,以提醒人們時(shí)間的可貴,要珍惜碎片化的時(shí)間;在整點(diǎn)時(shí)刻進(jìn)行短暫的時(shí)間回溯,下部沙粒重回上部沙漏后再次掉落,同時(shí)播放歌曲并且燈珠顏色變化,此過程同為30秒,以此提醒人們時(shí)間一去不回,人們應(yīng)當(dāng)注重時(shí)間管理好好利用時(shí)間。
多功能音樂沙漏采用nodemcu作為主控單片機(jī),通過ws2812形象表示沙粒[4-6],模擬沙漏的運(yùn)動(dòng)過程。如圖1所示,nodemcu通電之后,可進(jìn)行Wi-Fi聯(lián)網(wǎng)實(shí)時(shí)獲取當(dāng)前時(shí)間,在非整點(diǎn)時(shí)進(jìn)行正常的沙漏掉落,在整點(diǎn)時(shí)會(huì)加上一個(gè)特殊的沙漏特效。手機(jī)blinker與單片機(jī)進(jìn)行連接,進(jìn)行外部中斷。
圖1 總體設(shè)計(jì)流程圖
基于單片機(jī)最小系統(tǒng)在nodemcu開發(fā)板上的一體化[7],多功能音樂沙漏的電路設(shè)計(jì)偏重?zé)艄饽M電路以及音樂播放電路兩部分,其供電接口為nodemcu開發(fā)板數(shù)據(jù)接口一體,它使整個(gè)系統(tǒng)簡(jiǎn)化、扁平化。
燈光模擬電路由30個(gè)ws2812小燈串聯(lián),通過統(tǒng)一正負(fù)極進(jìn)行供電,再輔以數(shù)據(jù)線連接D5引腳,對(duì)ws2812進(jìn)行編號(hào)命名,控制其開關(guān)以及顏色變化等。無源蜂鳴器電路和開發(fā)板之間有三條電路連接,正負(fù)極進(jìn)行蜂鳴器供電,數(shù)據(jù)線連接D7號(hào)引腳,控制音樂的播放。
多功能音樂時(shí)鐘作為物聯(lián)網(wǎng)智能家具的衍生品,系統(tǒng)硬件部分使用arduino軟件進(jìn)行代碼編寫和修改[8-9]。手機(jī)端部分使用blinker點(diǎn)燈科技作為控制面板。通過MQTT進(jìn)行手機(jī)端-設(shè)備端-電腦端三者之間的通信,并在手機(jī)端blinker搭建可視化移動(dòng)物聯(lián)網(wǎng)平臺(tái)[10],使用者通過圖2的手機(jī)界面里的按鍵操作即可完成對(duì)多功能音樂沙漏的中斷控制。
圖2 手機(jī)blinker操作平臺(tái)
當(dāng)nodemcu通電后,開發(fā)板根據(jù)寫入的Wi-Fi名稱和Wi-Fi密碼進(jìn)行反復(fù)連接,如果Wi-Fi名稱、密碼錯(cuò)誤或者Wi-Fi信號(hào)較弱導(dǎo)致連接網(wǎng)絡(luò)不成功,則無源蜂鳴器會(huì)報(bào)警。如果單片機(jī)成功連接上網(wǎng)絡(luò),nodemcu會(huì)以一秒為間隔實(shí)時(shí)獲取當(dāng)前的時(shí)間并將當(dāng)前時(shí)間的時(shí)、分、秒分別記錄在變量hours,minu和sece之中。
每次獲得數(shù)據(jù)的同時(shí)進(jìn)行一次分析,首先分析當(dāng)前的minu和sece是否為0,如果minu和sece均為0,則執(zhí)行整點(diǎn)特殊功能;如果至少有一個(gè)為0則判斷現(xiàn)在是否有程序執(zhí)行,當(dāng)有程序執(zhí)行則繼續(xù)執(zhí)行此程序,無程序執(zhí)行則執(zhí)行非整點(diǎn)常規(guī)功能。
不進(jìn)行中斷控制時(shí),多功能音樂沙漏運(yùn)行實(shí)時(shí)功能,但在實(shí)時(shí)讀取時(shí)間的時(shí)、分、秒的數(shù)據(jù)同時(shí),沙漏也在獲取物聯(lián)網(wǎng)里的手機(jī)平臺(tái)消息。當(dāng)在手機(jī)物聯(lián)網(wǎng)平臺(tái)上進(jìn)行功能按鈕操作時(shí),手機(jī)會(huì)上傳該按鈕對(duì)應(yīng)的按鈕信息,這時(shí)的按鈕信息被開發(fā)板聯(lián)網(wǎng)獲取后會(huì)與代碼里已有的信息進(jìn)行比對(duì),中斷現(xiàn)有的功能程序,執(zhí)行獲取信息所對(duì)應(yīng)功能。
將30個(gè)ws2812小燈珠分為對(duì)稱的上下兩組,呈現(xiàn)為沙漏形狀,采用流水燈思路[11],用一根數(shù)據(jù)線將其串聯(lián),再串聯(lián)其正負(fù)極電源線,進(jìn)行供電。
以沙漏上半部分的ws2812為例,見圖3。對(duì)于其ws2812的編號(hào)按照電路順序從0開始編碼,30個(gè)ws2812燈珠的編號(hào)為0到29,此時(shí)便可以在代碼里通過對(duì)數(shù)字編號(hào)的控制達(dá)到對(duì)對(duì)應(yīng)燈珠的控制。
圖3 上部沙漏燈珠編號(hào)圖
圖4 RGB三原色表
每個(gè)ws2812小燈珠的內(nèi)部均含有紅、綠、藍(lán)3個(gè)單色LED,通過控制燈珠的編號(hào)來對(duì)應(yīng)具體的燈珠,再通過代碼的編寫,控制具體的燈珠里小LED的亮滅。將0~255的數(shù)值賦值給LED燈,控制其亮度大小(其中0為最暗,255為最亮)[12],依照?qǐng)D4的RGB三原色表,便可以得到不同顏色。
根據(jù)三原色的色彩比例[13],分析出沙漏中沙粒應(yīng)有的黃色以及時(shí)間回溯和警醒時(shí)需要的紅色燈光的三原色亮度比例(其中占比最高的顏色亮度設(shè)置為255,其他的兩種顏色依照比例計(jì)算其亮度),最終記錄三原色亮度代碼,通過代碼在不同的時(shí)間片刻給予不同編號(hào)的燈珠以不同的顏色,根據(jù)時(shí)間的轉(zhuǎn)變即起到動(dòng)態(tài)的效果。
燈光模擬電路圖見圖5,依照編號(hào)順序?qū)s2812燈珠依次串聯(lián),數(shù)據(jù)線連接12號(hào)引腳,通過數(shù)據(jù)的傳遞來控制燈的顏色以及亮滅[14]。
圖5 燈光模擬電路圖
以燈珠呈現(xiàn)黃光表示沙漏的該處充滿沙粒、燈珠不發(fā)光表示沙漏的此處無沙粒,在該程序剛運(yùn)行之時(shí)位于上方倒三角的15個(gè)燈珠全部呈現(xiàn)黃光,下面的15個(gè)燈珠處于熄滅狀態(tài),以模擬沙子充滿容器上方的沙漏初始狀態(tài)。
隨著時(shí)間的變化,模擬沙漏上部的沙粒依照重力變化一粒一粒減少,下部的沙漏隨之從下到上逐漸堆積。此時(shí)的沙漏模擬效果即為上部燈珠一個(gè)個(gè)熄滅,下部燈珠一個(gè)個(gè)呈現(xiàn)黃光[15],直到最后上方的燈珠全部熄滅,下方的燈珠全發(fā)黃光,持續(xù)此狀態(tài)三秒,后重復(fù)此過程。
在該功能中沙漏中的沙粒會(huì)呈現(xiàn)出不同的顏色狀態(tài),燈珠發(fā)光表示沙漏的該處充滿沙粒,燈珠不發(fā)光則表示沙漏的此處無沙粒。初始狀態(tài)的多功能音樂沙漏上部15個(gè)燈珠不發(fā)光,下部15個(gè)燈珠呈現(xiàn)黃光,表示該沙漏為裝滿普通黃沙且已經(jīng)流完的普通沙漏。
之后進(jìn)行一個(gè)短暫的時(shí)間重置,下部的沙粒會(huì)以反重力的形式倒流到沙漏上部。當(dāng)上部再次充滿沙粒的時(shí)候,上部燈珠由正常的黃光變?yōu)榘坠?并在再次飛速掉至沙漏下部的過程中變換為其他多彩顏色,而在最終落入沙漏下部時(shí)呈現(xiàn)出刺眼的紅色,整個(gè)過程的時(shí)間與正常的循環(huán)時(shí)間恰好相同。
在當(dāng)用PWM方波驅(qū)動(dòng)無源蜂鳴器時(shí),無源蜂鳴器可視為一個(gè)小型揚(yáng)聲器[16],基于nodemcu內(nèi)部時(shí)鐘分頻[17],根據(jù)不同頻率的方波信號(hào)即可播放出不同頻率的音調(diào)。根據(jù)音調(diào)的高低與時(shí)間變化即可實(shí)現(xiàn)無源蜂鳴器的歌曲播放功能。
以南京郵電大學(xué)的校歌《信達(dá)天下》進(jìn)行參考,其簡(jiǎn)譜圖見圖6。
圖6 參考樂譜圖
依照八度的音程按波長(zhǎng)比例平均分成十二等份,每一等份稱為一個(gè)半音(小二度)的原理[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,按照樂譜寫入對(duì)應(yīng)的音符數(shù)組。
已知一拍的時(shí)長(zhǎng)大約為400~500 ms[19],將一拍的時(shí)長(zhǎng)以400 ms近似,則當(dāng)以四分音符為節(jié)拍時(shí),四分音符的時(shí)長(zhǎng)就為400 ms,八分音符的時(shí)長(zhǎng)就為200 ms,十六分音符的時(shí)長(zhǎng)就為100 ms,以此基礎(chǔ)將樂譜里的節(jié)拍記錄在數(shù)組里。
程序運(yùn)轉(zhuǎn)時(shí)單片機(jī)將音符與節(jié)拍逐一對(duì)應(yīng),驅(qū)動(dòng)無源蜂鳴器演奏對(duì)應(yīng)音符持續(xù)指定節(jié)拍時(shí)間,然后再執(zhí)行下一音符與節(jié)拍,從而實(shí)現(xiàn)動(dòng)態(tài)的歌曲播放。
通過常規(guī)燈光模擬、特殊燈光模擬、音樂播發(fā)三大核心功能的實(shí)現(xiàn),可以在聯(lián)網(wǎng)中斷控制和非中斷實(shí)時(shí)循環(huán)等情況下進(jìn)行多種有機(jī)集合。多功能音樂沙漏實(shí)現(xiàn)了整點(diǎn)提醒與非整點(diǎn)計(jì)時(shí)功能,能夠讓使用者實(shí)時(shí)體會(huì)到時(shí)間的流逝,并且在燈光的提醒與音樂的鼓舞之下抓緊碎片化的時(shí)間,積極投身于學(xué)習(xí)生活之中去。