袁秋鳳
(寧德師范學(xué)院 信息與機(jī)電工程學(xué)院,福建 寧德 352100)
據(jù)國(guó)家衛(wèi)健委相關(guān)調(diào)查統(tǒng)計(jì),2018年中國(guó)兒童青少年總體近視率為53.6%.在新型冠狀病毒肺炎期間,眼科專家在對(duì)廣州12所小學(xué)2~3年級(jí)小學(xué)生近視發(fā)展變化的監(jiān)測(cè)研究中發(fā)現(xiàn),中國(guó)小學(xué)生的近視發(fā)病率有所增加[1].目前,兒童青少年的近視防控措施主要著眼于改善用眼環(huán)境,包括:增加戶外活動(dòng)時(shí)間、控制合適的用眼時(shí)間、創(chuàng)造照度良好的學(xué)習(xí)環(huán)境、保證充足的睡眠和營(yíng)養(yǎng)等.兒童青少年主要的用眼場(chǎng)景是獨(dú)立臥室的書桌,臺(tái)燈作為常用的學(xué)習(xí)工具,對(duì)視力的影響不容忽視.傳統(tǒng)臺(tái)燈用于照明,功能單一,智能臺(tái)燈的出現(xiàn),使臺(tái)燈的功能更加多樣化.智能臺(tái)燈多采用單片機(jī)作為控制器,利用傳感器檢測(cè)技術(shù),實(shí)現(xiàn)臺(tái)燈的自動(dòng)控制.近年來(lái),對(duì)于智能臺(tái)燈的研究,主要集中在節(jié)電和護(hù)眼功能的開(kāi)發(fā)上.劉艷峰[2]設(shè)計(jì)的基于STM32單片機(jī)的智能臺(tái)燈控制系統(tǒng),通過(guò)熱釋紅外傳感器檢測(cè)人體是否存在,自動(dòng)控制臺(tái)燈的亮滅;利用光敏電阻檢測(cè)環(huán)境光強(qiáng),自動(dòng)調(diào)節(jié)臺(tái)燈的亮度;通過(guò)紅外測(cè)距傳感測(cè)量人體距離,當(dāng)小于限定距離時(shí)自動(dòng)發(fā)聲報(bào)警.龍洋等[3]研發(fā)的基于智能家居的防近視智能臺(tái)燈,利用單片機(jī)內(nèi)部的定時(shí)器和語(yǔ)音模塊實(shí)現(xiàn)計(jì)時(shí)和語(yǔ)音提醒功能.王聰?shù)萚4]設(shè)計(jì)的基于51單片機(jī)的智能臺(tái)燈,利用藍(lán)牙模塊實(shí)現(xiàn)了百米距離內(nèi)控制臺(tái)燈亮度的功能.目前市面上還出現(xiàn)了一些智能學(xué)習(xí)臺(tái)燈,能夠?qū)崿F(xiàn)家教、通話等功能,但價(jià)格普遍較高.文中基于NodeMCU物聯(lián)網(wǎng)開(kāi)發(fā)板,設(shè)計(jì)一款價(jià)格低廉、結(jié)構(gòu)簡(jiǎn)單、具有遠(yuǎn)程監(jiān)控功能的LED智能臺(tái)燈,能夠?qū)崿F(xiàn)家長(zhǎng)對(duì)孩子用眼環(huán)境和用眼行為的實(shí)時(shí)監(jiān)控,可以作為孩子和家長(zhǎng)聯(lián)合防控近視的一種輔助手段.
智能臺(tái)燈總體設(shè)計(jì)方案如圖1所示.
圖1 智能臺(tái)燈總體設(shè)計(jì)方案
智能臺(tái)燈由臺(tái)燈終端和手機(jī)APP(application,應(yīng)用程序)構(gòu)成,使用對(duì)象為孩子和家長(zhǎng).臺(tái)燈終端由孩子控制,主要由控制器、光源、讀寫距離檢測(cè)電路、按鍵電路、語(yǔ)音提示電路和電源組成,具備亮度調(diào)節(jié)、讀寫距離檢測(cè)、用眼時(shí)間計(jì)時(shí)和語(yǔ)音提醒功能.手機(jī)APP 由家長(zhǎng)操作,可以監(jiān)測(cè)臺(tái)燈亮度、讀寫距離和用眼時(shí)間,以及遠(yuǎn)程控制臺(tái)燈的關(guān)閉.臺(tái)燈終端和手機(jī)APP 之間的數(shù)據(jù)傳輸采用基于MQTT(message queuing telemetry transport,消息隊(duì)列遙測(cè)傳輸)協(xié)議的物聯(lián)網(wǎng)云平臺(tái).
臺(tái)燈終端主要由NodeMCU 開(kāi)發(fā)板、WS2812B環(huán)狀燈板、HC-SR04超聲波傳感器、DY-SV17F語(yǔ)音播放模塊、4 Ω 3 W 喇叭和四腳鈕子開(kāi)關(guān)等組成,使用5 V 直流電源供電.利用Fritzing 軟件繪制的電路接線圖如圖2 所示.由于Fritzing 軟件元件庫(kù)中沒(méi)有WS2812B 環(huán)狀燈板和DY-SV17F 語(yǔ)音播放模塊,可使用InkScape軟件自制元件.
圖2 智能臺(tái)燈終端電路接線圖
本設(shè)計(jì)采用樂(lè)鑫ESP8266 的NodeMCU 開(kāi)發(fā)板作為核心控制器,它是一款超低功耗、高性價(jià)比的開(kāi)源物聯(lián)網(wǎng)開(kāi)發(fā)平臺(tái),可支持UART、IIC、PWM、GPIO 和ADC 等接口[5],在物聯(lián)網(wǎng)應(yīng)用開(kāi)發(fā)中廣泛采用.WS2812B 環(huán)狀燈板作為臺(tái)燈照明光源,它是一種采用單總線協(xié)議的可編程智能LED 光源,集成了WS2812B控制芯片和5050RGBLED 發(fā)光電路,最多支持1 024個(gè)LED 燈珠的級(jí)聯(lián),每個(gè)LED 燈珠可編程控制顯示不同的顏色和亮度.HC-SR04 超聲波傳感器用于檢測(cè)讀寫距離,它基于超聲波發(fā)射和反射原理實(shí)現(xiàn)距離的測(cè)量,通過(guò)時(shí)間差計(jì)算臺(tái)燈和人之間的距離.DY-SV17F 語(yǔ)音播放模塊、4 Ω 3 W 喇叭和3個(gè)10 kΩ 的電阻組成語(yǔ)音提示電路.DY-SV17F 是一款智能語(yǔ)音模塊,集成IO 分段觸發(fā)控制(包括IO 組合模式和IO 獨(dú)立模式)、UART 串口控制、單總線串口控制、標(biāo)準(zhǔn)MP3 等7 種工作模式,可通過(guò)USB 數(shù)據(jù)線連接電腦更新音頻文件.四腳鈕子開(kāi)關(guān)用于控制臺(tái)燈的開(kāi)關(guān)和亮度模式.
為充分利用NodeMCU 開(kāi)發(fā)板有限的IO 資源,具體電路接法和功能如下.D10(GPIO1)引腳和D9(GPIO3)引腳作為串口,實(shí)現(xiàn)智能臺(tái)燈與物聯(lián)網(wǎng)云平臺(tái)服務(wù)器之間的WiFi 通信.D6(GPIO12)引腳連接WS2812B 環(huán)狀燈板的DI 引腳,用于驅(qū)動(dòng)WS2812B.D7(GPIO13)引腳連接四腳鈕子開(kāi)關(guān),采用上拉模式接法,用于檢測(cè)按鍵輸入.D1(GPIO5)引腳、D2(GPIO4)引腳分別連接HC-SR04 超聲波傳感器的Trig 引腳和Echo引腳,用于控制超聲波傳感器發(fā)送和接收信號(hào).D5(GPIO14)引腳、DS3(GPIO10)引腳分別連接DY-SV17F語(yǔ)音播放模塊的IO1引腳、IO2引腳,用于觸發(fā)輸出語(yǔ)音提示信息.
本設(shè)計(jì)中的DY-SV17F語(yǔ)音播放模塊采用IO獨(dú)立模式1電平觸發(fā)方式,即IO0~I(xiàn)O7獨(dú)立控制8首曲目,曲目文件必須以5 位數(shù)字格式命名,包括00001.mp3~00008.mp3.當(dāng)某一個(gè)IO 口為低電平時(shí),對(duì)應(yīng)的曲目播放,當(dāng)該IO口恢復(fù)高電平,當(dāng)前曲目停止播放.IO獨(dú)立模式1的電路連接需將CON3/BUSY、CON2和CON1三個(gè)引腳的電平配置為011.
NodeMCU 通常使用方便快捷的Lua 語(yǔ)言和Arudio IDE 進(jìn)行開(kāi)發(fā)[6].臺(tái)燈終端控制程序基于Arudio IDE開(kāi)發(fā),采用C++語(yǔ)言,利用免費(fèi)的巴法云物聯(lián)網(wǎng)開(kāi)放平臺(tái)發(fā)布和訂閱消息.
在臺(tái)燈終端控制程序設(shè)計(jì)之前,需要完成如下工作.注冊(cè)并登陸巴法云物聯(lián)網(wǎng)開(kāi)放平臺(tái),選擇“MQTT 設(shè)備云”,新建臺(tái)燈模式、讀寫距離和用眼時(shí)間3 個(gè)主題,并記錄下MQTT 服務(wù)器連接的用戶私鑰、端口號(hào)和主題名.臺(tái)燈終端控制程序的整體運(yùn)行流程如圖3所示.
圖3 臺(tái)燈終端控制程序流程圖
程序的初始化配置包括設(shè)置NodeMCU 的串口波特率、IO口、定時(shí)器和燈板初態(tài).使用Ticker對(duì)象實(shí)現(xiàn)按鍵延時(shí)消抖、定時(shí)發(fā)布消息、讀寫距離定時(shí)檢測(cè)和用眼計(jì)時(shí).定時(shí)時(shí)間分別設(shè)定為10 s、30 s、2 min和1 h.當(dāng)讀寫距離小于30 cm或用眼時(shí)間超過(guò)1 h,語(yǔ)音模塊將播放相應(yīng)的音頻文件,提示孩子調(diào)整用眼行為.程序中將臺(tái)燈的亮度設(shè)置為燈滅、小夜燈、閱讀和書寫4 種模式,分別用按鍵短按1~4 次實(shí)現(xiàn)模式切換.通過(guò)調(diào)用第三方庫(kù)Adafruit_NeoPixel,采用RGB 色彩模式實(shí)現(xiàn)WS2812B LED 燈珠的亮度調(diào)節(jié).臺(tái)燈終端向巴法云物聯(lián)網(wǎng)平臺(tái)的MQTT服務(wù)器發(fā)布臺(tái)燈模式、讀寫距離和用眼時(shí)間三類消息,并訂閱臺(tái)燈模式主題的消息.
家長(zhǎng)通過(guò)操作智能臺(tái)燈的手機(jī)APP,可以連接或斷開(kāi)MQTT 服務(wù)器,查看臺(tái)燈模式、讀寫距離和用眼時(shí)間信息,以及遠(yuǎn)程控制關(guān)燈,可不受時(shí)空限制地監(jiān)測(cè)孩子的用眼環(huán)境和用眼行為.
智能臺(tái)燈手機(jī)APP的開(kāi)發(fā)環(huán)境采用WxBit軟件,它是基于MIT APP Inventor 開(kāi)源代碼優(yōu)化定制的漢化版[7-8],集成了百度飛槳、百度語(yǔ)音、高德地圖等多種國(guó)內(nèi)互聯(lián)網(wǎng)優(yōu)質(zhì)服務(wù).智能臺(tái)燈手機(jī)APP 的界面布局如圖4所示,采用水平布局,使用的組件有標(biāo)簽、按鈕、圖像框、信息對(duì)話框和MQTT客戶端等.
圖4 手機(jī)APP界面布局
智能臺(tái)燈手機(jī)APP 的邏輯設(shè)計(jì)流程如圖5 所示.創(chuàng)建的全局變量包括:MQTT 服務(wù)器URL 地址、MQTT 服務(wù)器用戶連接私鑰和主題類型.主要涉及的對(duì)象和事件包括:屏幕初始化、按鈕被點(diǎn)擊、MQTT客戶端已連接、MQTT 客戶端連接中斷、MQTT 客戶端收到消息.各事件內(nèi)部主要采用分支結(jié)構(gòu).以“MQTT 客戶端收到消息事件”為例,當(dāng)MQTT 客戶端收到消息時(shí),先判斷主題類型,若主題為臺(tái)燈亮度模式,則再判斷臺(tái)燈亮度模式為燈滅、小夜燈、閱讀和書寫中的哪一種,并顯示對(duì)應(yīng)的模式文本信息和圖像信息;若主題為讀寫距離,則顯示讀寫距離值,若讀寫距離小于30 cm,則彈出消息提示對(duì)話框;若主題為用眼時(shí)間,則顯示用眼時(shí)間值,若用眼時(shí)間大于1 h,則彈出消息提示對(duì)話框且手機(jī)發(fā)聲振動(dòng);若收到的消息不為上述3個(gè)主題,則彈出“接收信息出錯(cuò)”的消息提示對(duì)話框.
圖5 手機(jī)APP的邏輯設(shè)計(jì)流程圖
孩子啟動(dòng)智能臺(tái)燈終端后,可利用按鍵手動(dòng)切換臺(tái)燈的亮度模式,家長(zhǎng)的手機(jī)APP 可以監(jiān)測(cè)臺(tái)燈的工作狀態(tài)和孩子的用眼情況.當(dāng)孩子的讀寫距離、用眼時(shí)間不規(guī)范時(shí),將語(yǔ)音播放提示信息,同時(shí)手機(jī)APP 彈出消息對(duì)話框提醒家長(zhǎng).家長(zhǎng)也可以通過(guò)遠(yuǎn)程關(guān)燈操作,間接制止孩子不合理的用眼行為,以及沒(méi)有及時(shí)關(guān)燈浪費(fèi)電能的不良行為.手機(jī)APP運(yùn)行結(jié)果如圖6所示.
智能臺(tái)燈由臺(tái)燈終端和手機(jī)APP 兩部分組成,臺(tái)燈終端以NodeMCU 開(kāi)發(fā)板為核心,手機(jī)APP 的設(shè)計(jì)基于WxBit開(kāi)發(fā)環(huán)境,通過(guò)巴法云物聯(lián)網(wǎng)開(kāi)放平臺(tái)實(shí)現(xiàn)消息的發(fā)布和訂閱.通過(guò)臺(tái)燈終端既能手動(dòng)設(shè)置臺(tái)燈亮度模式、定時(shí)檢測(cè)讀寫距離和用眼時(shí)間,并將這3 項(xiàng)數(shù)據(jù)發(fā)布至物聯(lián)網(wǎng)平臺(tái),又能接收臺(tái)燈模式主題消息,控制臺(tái)燈的關(guān)閉.而手機(jī)APP 既能手動(dòng)連接或斷開(kāi)物聯(lián)網(wǎng)平臺(tái)、訂閱主題、顯示孩子的用眼環(huán)境和用眼數(shù)據(jù),又能發(fā)布滅燈消息遠(yuǎn)程控制臺(tái)燈的關(guān)閉.文中設(shè)計(jì)的智能臺(tái)燈結(jié)構(gòu)簡(jiǎn)單、界面簡(jiǎn)潔、成本低廉,硬件設(shè)計(jì)和軟件開(kāi)發(fā)較易實(shí)現(xiàn),可以作為保護(hù)孩子視力的輔助工具.因考慮到智能臺(tái)燈的開(kāi)發(fā)成本,受限于NodeMCU 有限的IO 資源,本設(shè)計(jì)未采用距離檢測(cè)精確度和可靠性更高的傳感器,后期將在提高終端控制器性能的基礎(chǔ)上,進(jìn)一步改良臺(tái)燈的功能.