王 智,石思穎,李陽(yáng)紫,馬 敏
(南京信息職業(yè)技術(shù)學(xué)院,江蘇 南京 210023)
近年來(lái),老人在室內(nèi)跌倒而無(wú)法及時(shí)聯(lián)系家人導(dǎo)致事故的現(xiàn)象十分常見(jiàn)。因此,設(shè)計(jì)一款可幫助獨(dú)居老人在緊急情況下迅速聯(lián)系家人的裝置十分必要。目前,國(guó)內(nèi)外基于老人跌倒報(bào)警的相關(guān)研究和裝置較多,主要是具有監(jiān)測(cè)功能的穿戴類如手環(huán)、拐杖以及輪椅等,還有固定裝置類,如安裝了報(bào)警功能的瓷磚,老人一按壓即報(bào)警并聯(lián)絡(luò)家人。其中,穿戴類的裝置在戶內(nèi)因不方便佩戴而有局限性,按壓類需就近操作才起作用?;谏鲜鰡?wèn)題,文章設(shè)計(jì)了一種非接觸式的通過(guò)語(yǔ)音識(shí)別即可實(shí)現(xiàn)報(bào)警的方案,適合室內(nèi)居家老人使用。該系統(tǒng)無(wú)需使用人穿戴任何設(shè)備,一旦老人出現(xiàn)跌倒爬不起等情況,呼喊即可聯(lián)絡(luò)家人,簡(jiǎn)單易用。
設(shè)計(jì)的系統(tǒng)總體框架圖主要包括主控板、語(yǔ)音識(shí)別模塊、GPRS 模塊、WiFi 模塊、電源模塊、麥克風(fēng)和喇叭,如圖1 所示。
語(yǔ)音識(shí)別模塊獲取語(yǔ)音信號(hào)時(shí),會(huì)通過(guò)喇叭反饋信息給用戶。每個(gè)設(shè)置的語(yǔ)音信號(hào)對(duì)應(yīng)一個(gè)識(shí)別碼。在裝置工作時(shí),當(dāng)語(yǔ)音識(shí)別模塊采集到某個(gè)設(shè)置過(guò)的語(yǔ)音并成功識(shí)別時(shí),就會(huì)轉(zhuǎn)換成對(duì)應(yīng)的編碼數(shù)字,并通過(guò)串口發(fā)給主控。
主控模塊收到代表報(bào)警語(yǔ)音的編碼數(shù)字時(shí),會(huì)向緊急聯(lián)系人發(fā)送短信和撥打電話。當(dāng)SIM 卡插入本設(shè)備后,設(shè)備會(huì)讀取里面的緊急聯(lián)系人電話,并根據(jù)緊急聯(lián)系人電話設(shè)置一個(gè)白名單電話列表。只有當(dāng)來(lái)電號(hào)碼是白名單列表里的緊急聯(lián)系人時(shí),才會(huì)啟動(dòng)自動(dòng)接聽(tīng)。
GPRS 模塊接有麥克風(fēng)、喇叭和SIM 卡,可通過(guò)發(fā)短信或打電話方式實(shí)現(xiàn)報(bào)警和來(lái)電接聽(tīng)功能。確保緊急聯(lián)絡(luò)人在收到短信或接到電話后可以接通或回電,以確認(rèn)是否發(fā)生意外情況。
WiFi 模塊通過(guò)無(wú)線路由器連接到互聯(lián)網(wǎng)上的云服務(wù)器,當(dāng)收到主控發(fā)來(lái)的報(bào)警信息時(shí)會(huì)上報(bào)到云服務(wù)器,提供給警務(wù)和醫(yī)療機(jī)構(gòu)。
電源模塊用于把市電轉(zhuǎn)為直流,從而給主控、語(yǔ)音識(shí)別模塊和GPRS 模塊提供穩(wěn)定的直流電壓。
設(shè)計(jì)選用的主控模塊為Arduino UNO R3。Arduino 的處理器核心為ATmega328,包含14 個(gè)數(shù)字I/O 口(6 個(gè)可提供PWM 輸出)、6 個(gè)模擬輸入口、1 個(gè)16 MHz 晶振時(shí)鐘以及USB 連接、電源插孔、ICSP 接頭和復(fù)位按鍵。它的庫(kù)函數(shù)與底層硬件無(wú)縫對(duì)接,編程語(yǔ)言類似C/C++語(yǔ)言,特點(diǎn)是跨平臺(tái)、簡(jiǎn)單清晰且具有開(kāi)放性[1]。主控模塊和其他模塊的連接方式如圖2 所示。
設(shè)計(jì)選用的語(yǔ)音識(shí)別模塊為ASR-M09C。該模塊采用LD3320 芯片作為識(shí)別芯片,識(shí)別率高[2]。ASR-M09C 通過(guò)串口和主控板Arduino 單片機(jī)通信,這里用主控的普通IO 口模擬串口通信。ASRM09C 通過(guò)喇叭播放聲音。
設(shè)計(jì)選用的GPRS 模塊是SIM800A,采用串口和主控通信。EN 引腳接到主控的IO 上,啟動(dòng)時(shí)輸出高電平,使SIM800A 模塊能自動(dòng)開(kāi)機(jī)。如果在長(zhǎng)期使用中遇到模塊異常問(wèn)題,可以通過(guò)設(shè)置IO 引腳低電平來(lái)關(guān)閉模塊。
設(shè)計(jì)選用的WiFi 模塊是ATK-ESP8266,采用串口與主控通信,能夠?qū)崿F(xiàn)串口與WiFi 之間的轉(zhuǎn)換。這里用主控的普通IO 口模擬串口通信。ATKESP8266 內(nèi)置TCP/IP 協(xié)議棧,兼容3.3 V 和5 V 單片機(jī)系統(tǒng)。它的VCC 引腳需要接高電平。REST是復(fù)位引腳,低電平有效[3]。
首先,通過(guò)電腦上的串口調(diào)試助手發(fā)送相應(yīng)的指令來(lái)設(shè)置M09C,主要涉及如下幾個(gè)指令。
(1)設(shè)置識(shí)別模式。設(shè)計(jì)選擇模塊工作在語(yǔ)音喚醒模式,一是不容易產(chǎn)生很多誤動(dòng)作,二是比較省電。
(2)設(shè)置為單字節(jié)輸出并添加詞條。
(3)設(shè)置屏蔽詞。為了減少誤識(shí)別,給發(fā)音相近的詞設(shè)置屏蔽詞。
(4)設(shè)計(jì)M09C 和主控的串口通信程序。設(shè)置串口波特率為9 600 Baud,根據(jù)M09C 的返回值執(zhí)行相應(yīng)動(dòng)作,如打電話、發(fā)短信等。
首先需要設(shè)置串口的波特率為115 200 Baud,然后使用SIM800A 的AT 指令集對(duì)其進(jìn)行操作。本設(shè)計(jì)主要涉及如下指令。
(1)檢測(cè)GPRS 模塊與主控串口是否連通和能否接收AT 命令。指令為AT,若從串口返回“OK”,表示串口通信正常。
(2)撥打電話。指令格式為“ATD***********; (3)發(fā)送一條中文短信,需要配置如下指令: ①AT+CMGF=1,設(shè)置為文本模式; ②AT+CSMP=17,167,0,25(24:短消息顯示在終端;25:存儲(chǔ)在SIM 中),表示設(shè)置短消息文本模式參數(shù),在使用UCS2 方式發(fā)送中文短信的時(shí)候需要發(fā)送。 ③AT+CSCS=”UCS2”,表示發(fā)送中英文短信,設(shè)置為16 位通用8 字節(jié)倍數(shù)編碼字符集。然后,將電話號(hào)碼和短信內(nèi)容進(jìn)行漢字與unicode碼轉(zhuǎn)換,即可發(fā)送中文短信。 3.3.1 云平臺(tái)的設(shè)置 設(shè)計(jì)選用OneNET 作為云平臺(tái)。上傳信息到OneNET 云平臺(tái)是免費(fèi)的。設(shè)備通過(guò)TCP 連接接入OneNET,認(rèn)證成功后即可與OneNET進(jìn)行數(shù)據(jù)交互。OneNET 通過(guò)用戶上傳的自定義腳本來(lái)解析設(shè)備上傳的數(shù)據(jù)。上傳腳本通過(guò)下載腳本模板,修改腳本中function device_data_analyze(dev)函數(shù)中的add_val(t,"alarm_info",0,dev:bytes(1,s)),修改第2 個(gè)參數(shù)里的數(shù)據(jù)流名稱和修改腳本名稱并上傳[5]。 3.3.2 WiFi 模塊的設(shè)置 ATK-ESP8266 模塊支持STA、AP 和STA+AP這3 種工作模式。本設(shè)計(jì)選用STA 模式,即ESP8266 模塊通過(guò)路由器連接互聯(lián)網(wǎng),實(shí)現(xiàn)向云平臺(tái)上傳數(shù)據(jù)。ESP8266 模塊默認(rèn)是AT 指令狀態(tài)[6],波特率是115 200 Baud。本設(shè)計(jì)通過(guò)把AT 指令寫(xiě)進(jìn)程序,使得程序?qū)崿F(xiàn)自動(dòng)連網(wǎng),且連接到云平臺(tái)實(shí)現(xiàn)設(shè)備和腳本的關(guān)聯(lián)。每次觸發(fā)報(bào)警,WiFi 模塊可以上傳老人的報(bào)警信息到云平臺(tái)。 裝置上電后,先初始化各項(xiàng)參數(shù)。串口1 啟動(dòng)GPRS 連接和接入GPRS 網(wǎng)絡(luò),串口2 啟動(dòng)WiFi 模塊連接和接入云平臺(tái)。其次,開(kāi)始循環(huán)收集語(yǔ)音識(shí)別模塊的數(shù)據(jù)。若發(fā)現(xiàn)是報(bào)警數(shù)據(jù),則發(fā)短信給所有緊急聯(lián)系人,并且撥打號(hào)碼薄里的緊急聯(lián)系人電話。只要有一個(gè)打通,就不再撥打。最后,將報(bào)警信息上送到云平臺(tái)。當(dāng)檢測(cè)到有電話呼入時(shí),先判斷是否是白名單里的電話,若是則自動(dòng)接聽(tīng),否則不接聽(tīng)。主程序流程圖如圖3 所示。 在OneNET 云平臺(tái)上創(chuàng)建一臺(tái)名為“語(yǔ)音識(shí)別報(bào)警器-南信院”的設(shè)備,通過(guò)串口對(duì)WiFi 模塊設(shè)置AT 指令,使WiFi 模塊成功接入到OneNET 云平臺(tái),如圖4 所示。設(shè)備狀態(tài)顯示“在線”,表示本系統(tǒng)通過(guò)WiFi 模塊成功接入OneNET 云平臺(tái)。當(dāng)WiFi 模塊發(fā)送不同的報(bào)警信息時(shí),OneNET 云平臺(tái)都能收到,并記錄了相應(yīng)的時(shí)間和數(shù)據(jù)。 將各模塊連接好上電,如圖5 所示。說(shuō)“小李”,系統(tǒng)回復(fù)“我在呢”,緊接著說(shuō)“快來(lái)”,系統(tǒng)回復(fù)“好的,正在聯(lián)系”,此時(shí)系統(tǒng)立刻向緊急聯(lián)系人發(fā)送報(bào)警短信并撥打電話,同時(shí)上報(bào)報(bào)警信息到OneNET云平臺(tái)。 系統(tǒng)也可以在收到緊急聯(lián)系人回?fù)艿碾娫挄r(shí)實(shí)現(xiàn)自動(dòng)接聽(tīng)。根據(jù)不同的語(yǔ)音檢查報(bào)警動(dòng)作是否正常,只有當(dāng)說(shuō)“快來(lái)”時(shí)才會(huì)產(chǎn)生相應(yīng)的動(dòng)作,其他相近或常見(jiàn)語(yǔ)音不會(huì)觸發(fā)報(bào)警動(dòng)作。實(shí)驗(yàn)顯示,系統(tǒng)通信質(zhì)量穩(wěn)定,完成了各項(xiàng)設(shè)計(jì)指標(biāo)。 本文采用語(yǔ)音識(shí)別技術(shù)設(shè)計(jì)和實(shí)現(xiàn)了一套空巢老人居家報(bào)警系統(tǒng),使獨(dú)居老人在緊要關(guān)頭可以及時(shí)聯(lián)系到家人,方便實(shí)用,可有效降低老人缺失照看而導(dǎo)致的人身傷害的概率。其中,使用云平臺(tái)實(shí)現(xiàn)了報(bào)警信息的實(shí)時(shí)采集,擴(kuò)展了此類報(bào)警系統(tǒng)的安全救助功能。目前,TCP 透?jìng)鞣绞缴蟼鲾?shù)據(jù)只支持面板和列表的顯示方式,后續(xù)會(huì)研究使用圖形化界面、網(wǎng)頁(yè)以及APP 等方式來(lái)顯示數(shù)據(jù)。3.3 WiFi 模塊軟件設(shè)計(jì)
3.4 主控軟件設(shè)計(jì)
4 系統(tǒng)測(cè)試
4.1 模塊調(diào)試
4.2 系統(tǒng)聯(lián)調(diào)
5 結(jié)語(yǔ)