劉靜琦,阮煜婕,劉靜波
(南京工程學(xué)院信息與通信工程學(xué)院,南京211167)
阿爾茨海默?。ˋlzheimer’s disease,AD)是一種中樞神經(jīng)系統(tǒng)退行性疾病,具有不可逆性和致死性,病程緩慢,多發(fā)病于老年時(shí)期,嚴(yán)重威脅人類健康。目前世界上有5 000萬(wàn)人患有AD,并且每隔3 s就會(huì)確診1位AD患者[1]。我國(guó)65歲以上老人AD患病率為5.9%,每年約增加30萬(wàn)老年AD患者[2]。AD患者常出現(xiàn)認(rèn)識(shí)、記憶功能障礙及人格、行為異常等[3],患者走失、失蹤事件時(shí)有發(fā)生。目前,為避免意外發(fā)生,防止老年AD患者走失,最常用的方式是在老人身上佩戴個(gè)人名片,將老人信息、監(jiān)護(hù)人電話等寫在卡片上,這樣當(dāng)出現(xiàn)老人走失時(shí),有關(guān)部門根據(jù)卡片信息就可以把其送回家中或聯(lián)系監(jiān)護(hù)人[4]。這種方法缺乏美觀性,不考慮老人的自尊心,也不能第一時(shí)間發(fā)現(xiàn)老人走失,是一種被動(dòng)的解決方法。另有一種報(bào)警系統(tǒng)是采用基于計(jì)步統(tǒng)計(jì)加藍(lán)牙傳感的實(shí)現(xiàn)方法對(duì)老人在房間內(nèi)進(jìn)行計(jì)步檢測(cè),當(dāng)老人行走步數(shù)超過(guò)預(yù)設(shè)值后發(fā)出警報(bào),提示看護(hù)人關(guān)注老人當(dāng)前情況。該方法針對(duì)老人在居住房間的走動(dòng)步數(shù)進(jìn)行檢測(cè),老人不能離開(kāi)居住場(chǎng)所,限制其走出居住區(qū)域。同時(shí),即使老人沒(méi)有離開(kāi)室內(nèi),此方法也會(huì)記錄在房間里的所有走動(dòng),行走步數(shù)超過(guò)設(shè)定值也會(huì)觸發(fā)報(bào)警[5]。
本文設(shè)計(jì)一種適用于AD人群的智能提示與報(bào)警系統(tǒng),采用Wi-Fi模塊檢測(cè)老人是否離家外出,當(dāng)老人在家時(shí),系統(tǒng)處于待機(jī)檢測(cè)狀態(tài),不干擾老人在家中的日?;顒?dòng);當(dāng)老人外出時(shí),系統(tǒng)檢測(cè)到老人外出后開(kāi)始計(jì)時(shí),當(dāng)計(jì)時(shí)時(shí)間超過(guò)預(yù)設(shè)時(shí)間(例如20 min)后,系統(tǒng)發(fā)出語(yǔ)音提示語(yǔ),告知其家庭住址、提示老人回家,并以短信方式把老人位置信息發(fā)送給家人,以這種主動(dòng)提示和報(bào)警的方法,預(yù)防老人走失的意外發(fā)生。若老人外出未超過(guò)20 min正常回家,系統(tǒng)回到待機(jī)檢測(cè)狀態(tài)。
離家外出狀態(tài)檢測(cè)可以采用若干種方式,例如光線強(qiáng)度或紫外線強(qiáng)度檢測(cè),通過(guò)室內(nèi)外光線或紫外線的變化來(lái)檢測(cè)老人是否離家外出。一般可采用模擬數(shù)字轉(zhuǎn)換器(analog-to-digital converter,ADC)接口讀取傳感器輸出的模擬數(shù)據(jù),從而檢測(cè)到不同狀態(tài)下的模擬數(shù)據(jù)變化。但該方法有明顯的局限性,與天氣、光照等因素關(guān)聯(lián)較大,沒(méi)有統(tǒng)一設(shè)定的閾值標(biāo)準(zhǔn),容易出現(xiàn)誤差,不能可靠地判斷老人是否離家外出。
本系統(tǒng)采用Wi-Fi模塊檢測(cè)老人是否離家外出。老人在家或離家外出時(shí),Wi-Fi模塊處于在線或離線狀態(tài),通過(guò)對(duì)Wi-Fi模塊進(jìn)行配置或開(kāi)發(fā)編程,來(lái)判斷老人是否外出。
(1)對(duì)Wi-Fi模塊進(jìn)行簡(jiǎn)單的AT指令配置。設(shè)定好名稱和密碼后,連接到家中的無(wú)線網(wǎng)絡(luò),Wi-Fi模塊在線和離線2種狀態(tài)下其串口輸出2種不同的特定字符。當(dāng)從在線變?yōu)殡x線時(shí)輸出WIFI DISCONNECT,當(dāng)從離線變?yōu)樵诰€時(shí)輸出WIFI CONNECT。單片機(jī)可以對(duì)字符進(jìn)行檢測(cè)并判斷老人當(dāng)前的狀態(tài)。此方式較為簡(jiǎn)單,但要注意的是,Wi-Fi模塊串口輸出狀態(tài)字符發(fā)生在離線或在線狀態(tài)改變的時(shí)刻。
(2)基于Arduino環(huán)境[6],把Wi-Fi模塊作為Arduino的特定開(kāi)發(fā)板獨(dú)立編程應(yīng)用。即獨(dú)立應(yīng)用Wi-Fi模塊并訪問(wèn)網(wǎng)絡(luò),輸出用戶編程的特定編碼字符。當(dāng)Wi-Fi模塊在線時(shí),訪問(wèn)特定時(shí)間應(yīng)用程序接口(application programming interface,API),以5 s為周期輸出網(wǎng)絡(luò)時(shí)間信息,通過(guò)串口發(fā)送給單片機(jī),系統(tǒng)則判斷老人當(dāng)前為在家狀態(tài)。如老人離家,Wi-Fi模塊離線后則不輸出時(shí)間信息,系統(tǒng)則判斷出老人已離家外出,并開(kāi)始計(jì)時(shí)。對(duì)其離家時(shí)間是否超過(guò)20 min進(jìn)行判斷,為下一步是否提示或發(fā)送信息做準(zhǔn)備。在線與離線狀態(tài)下一直以5 s為周期發(fā)送不同的字符信息,從而得到老人是否離家的實(shí)時(shí)準(zhǔn)確狀態(tài)。在特定時(shí)刻,用網(wǎng)絡(luò)時(shí)間來(lái)校準(zhǔn)系統(tǒng)時(shí)鐘芯片的計(jì)時(shí),保證系統(tǒng)計(jì)時(shí)的準(zhǔn)確。
本系統(tǒng)由主控芯片、GPS模塊、GSM模塊、Wi-Fi模塊、語(yǔ)音模塊、時(shí)鐘芯片、EEPROM存儲(chǔ)芯片和LCD顯示模塊等組成。系統(tǒng)組成結(jié)構(gòu)框圖如圖1所示。串口1接入GSM模塊用來(lái)發(fā)送短信報(bào)警信息,串口2接入GPS模塊以獲取老人外出后的位置信息,串口3接入Wi-Fi模塊并連接于家中的無(wú)線網(wǎng)絡(luò),通過(guò)檢測(cè)Wi-Fi模塊的在線狀態(tài),掌握老人是否離家外出。語(yǔ)音模塊播放特定的語(yǔ)音,包括家庭住址和提示回家等語(yǔ)音信息。時(shí)鐘芯片和EEPROM存儲(chǔ)芯片通過(guò)I2C總線接口方式連接于主控芯片,具有計(jì)時(shí)與系統(tǒng)存儲(chǔ)數(shù)據(jù)功能。LCD顯示模塊連接于主控芯片的可變靜態(tài)存儲(chǔ)器(flexible static memory controller,F(xiàn)SMC)接口,用以顯示系統(tǒng)測(cè)試數(shù)據(jù)和配置信息。在主控芯片控制下,待機(jī)檢測(cè)當(dāng)前狀態(tài),當(dāng)檢測(cè)到老人外出后開(kāi)始計(jì)時(shí),同時(shí)實(shí)時(shí)獲取老人位置信息,直至超時(shí)后本系統(tǒng)發(fā)出報(bào)警信息,播報(bào)語(yǔ)音提示,從而形成整體的閉環(huán)控制。
圖1 智能提示與報(bào)警系統(tǒng)組成結(jié)構(gòu)框圖
1.3.1 主控芯片
主控芯片是本系統(tǒng)的核心,負(fù)責(zé)系統(tǒng)的整體運(yùn)行、數(shù)據(jù)讀寫、狀態(tài)判斷與控制。主控芯片采用STM32F103VET6。該芯片采用ARM公司的Cortex-M3內(nèi)核,主頻72 MHz,具備高速存儲(chǔ)器和豐富端口,具有定時(shí)器、外中斷、串口等多項(xiàng)資源。該芯片的FSMC不僅可以控制靜態(tài)隨機(jī)存儲(chǔ)器(static random access memory,SRAM)、NOR FLASH等,還可以方便地實(shí)現(xiàn)薄膜晶體管(thin film transistor,TFT)液晶顯示屏的驅(qū)動(dòng),滿足本系統(tǒng)的設(shè)計(jì)需求。
1.3.2 主要模塊選型
GSM模塊選用SIM800C。這是一款四頻GSM/GPRS模塊,工作頻率為850、900、1 800、1 900 MHz。SIM800C采用5 V供電。STM32F103VET6把發(fā)送的信息數(shù)據(jù)轉(zhuǎn)換為相應(yīng)的Unicode碼,通過(guò)串口發(fā)送到GSM模塊,GSM模塊發(fā)送信息到監(jiān)護(hù)人手機(jī)。
GPS模塊選用VK2828U7G5LF。該模塊采用高精度溫度補(bǔ)償晶體振蕩器(temperature compensate x’tal oscillator,TCXO),內(nèi)置FLASH,可自由配置多項(xiàng)參數(shù),包括波特率和數(shù)據(jù)刷新率。本系統(tǒng)配置GPS模塊串口波特率為38 400 bit/s,數(shù)據(jù)更新速率為5 Hz。
Wi-Fi模塊選用ESP8266。ESP8266是高性能無(wú)線系統(tǒng)級(jí)芯片(system on chip,SOC),在較小尺寸封裝中集成了業(yè)界領(lǐng)先的超低功耗32位微型微控制單元(microcontrol unit,MCU)[7],主頻支持80和160 MHz。該模塊符合IEEE802.11b/g/n標(biāo)準(zhǔn),支持TTL(transistor transistor logic)電平。ESP8266支持熱點(diǎn)(AP)、客戶端(STA)、熱點(diǎn)+客戶端(AP+STA)3種模式[8-9],本系統(tǒng)配置Wi-Fi模塊為STA模式。該模塊基于Arduino環(huán)境進(jìn)行編程配置,通過(guò)串口輸出特定信息作為系統(tǒng)判斷老人是否離家的傳感信號(hào)。
語(yǔ)音模塊選擇JQ8900,可直接寫入MP3類型的語(yǔ)音信號(hào),有多種觸發(fā)播放方式可選,允許IO口低電平觸發(fā)播放的方式。該模塊體積小,可直接驅(qū)動(dòng)小型揚(yáng)聲器,因此適用于本系統(tǒng)語(yǔ)音播放的要求。
時(shí)鐘芯片選用DS3231芯片,這是一款內(nèi)置TCXO的時(shí)鐘芯片[10],采用3.3 V供電,精度可達(dá)±2 ppm(1 ppm=1×10-6,溫度范圍為0~40℃)。DS3231的器件地址分別為0XD0(寫)、0XD1(讀),3腳為INT/SQW中斷信號(hào)輸出,INT引腳為開(kāi)漏輸出模式,該管腳外加上拉電阻連接到3.3 V電壓。其輸出狀態(tài)是由內(nèi)部控制寄存器控制的,控制寄存器地址為0EH,其中配置為00H時(shí),表示控制寄存器中的BIT4和BIT3(RS2和RS1)以及BIT2(INTCN)為0,則3腳輸出1 Hz方波。該方波信號(hào)連接STM32F103VET6端口PC6,可作為外中斷信號(hào),在外中斷服務(wù)程序中處理對(duì)應(yīng)的程序,減小主程序的占用。
EEPROM存儲(chǔ)芯片采用AT24C02。該芯片工作電壓范圍寬(1.7~5.5 V),具有2 Kibit的存儲(chǔ)容量,采用I2C接口,可以與其他I2C器件共用一組I2C接口連接到主控芯片,主控芯片根據(jù)器件地址訪問(wèn)不同的I2C器件。其中AT24C02的A0、A1、A2接地,表示設(shè)置AT24C02的器件地址為0XA0(寫地址)和0XA1(讀地址)。AT24C02的5腳和6腳為I2C接口的數(shù)據(jù)線和時(shí)鐘線,7腳WP為寫保護(hù)引腳,當(dāng)WP接地時(shí),可以進(jìn)行普通的讀寫操作,WP接VCC時(shí)執(zhí)行寫保護(hù)。
LCD顯示模塊選擇基于ILI9486驅(qū)動(dòng)芯片的3.5 in(1 in=25.4 mm)TFT顯示屏,其接口包括16位并口數(shù)據(jù)接口(D0-D15)、片選控制線(CS)、讀寫控制線(WR/RD)、數(shù)據(jù)寄存器選擇控制線(RS)、復(fù)位控制線(RES)和背光控制線(BLK)。本系統(tǒng)采用FSMC方式驅(qū)動(dòng)LCD顯示屏。
1.3.3 硬件電路具體設(shè)計(jì)
硬件電路圖如圖2所示。其中PA9/PA10為串口1,接入GSM模塊;PA2/PA3為串口2,接入GPS模塊;PB10/PB11為串口3,接入Wi-Fi模塊。PC11和PC12作為I2C數(shù)據(jù)總線接入DS3231和AT24C02,PC11為數(shù)據(jù)線SDA,PC12為時(shí)鐘線SCL。DS3231的1 Hz輸出信號(hào)接到PC6,是外中斷信號(hào),I2C的數(shù)據(jù)線SDA、時(shí)鐘線SCL和DS3231的INT信號(hào)輸出端口都接有10 kΩ上拉電阻。PB8為語(yǔ)音模塊的驅(qū)動(dòng)信號(hào)端,低電平播放;PB1控制Wi-Fi模塊的復(fù)位(低電平復(fù)位)。
圖2 電路硬件設(shè)計(jì)圖
基于FSMC方式下的LCD驅(qū)動(dòng)電路設(shè)計(jì),實(shí)際上是把LCD作為存儲(chǔ)器件接入,可以理解為單地址線的存儲(chǔ)器件。因此,LCD的讀寫控制線WR和RD接入STM32F103VET6主控芯片的FSMC_NWE和FSMC_NOE,LCD的數(shù)據(jù)接口D0-D15與FSMC_D0-FSMC_D15連接。主控芯片提供的FSMC_NE1管腳接入LCD的片選CS,F(xiàn)SMC_A16連接LCD的數(shù)據(jù)寄存器控制RS,F(xiàn)SMC_NE1和FSMC_A16 2個(gè)控制線設(shè)定本系統(tǒng)LCD的驅(qū)動(dòng)地址是0x60000000|0x0001FFFE。
軟件編寫是基于STM32庫(kù)函數(shù)設(shè)計(jì)方式,在Keil5編譯環(huán)境下進(jìn)行,重點(diǎn)是串口程序的編寫。串口2和串口3分別接入GPS模塊和Wi-Fi模塊,這2個(gè)串口是STM32F103VET6對(duì)模塊數(shù)據(jù)的接收程序,因此采用串口中斷方式[11]。串口2中斷得到標(biāo)志位,然后在主程序中對(duì)數(shù)據(jù)進(jìn)行處理,即對(duì)GPS數(shù)據(jù)進(jìn)行解析,得到時(shí)間和經(jīng)緯度位置信息。串口3中斷接收數(shù)據(jù)字符,主程序則是對(duì)Wi-Fi接收的字符進(jìn)行判斷,從而得出Wi-Fi模塊ESP8266是否在線。主程序中檢測(cè)的狀態(tài)通過(guò)外出狀態(tài)標(biāo)志位傳遞,每1 s的外中斷服務(wù)程序根據(jù)外出狀態(tài)標(biāo)志位進(jìn)行計(jì)時(shí),計(jì)時(shí)超過(guò)20 min發(fā)出報(bào)警信息。STM32F103VET6通過(guò)串口1發(fā)送短信數(shù)據(jù),把經(jīng)緯度發(fā)送到監(jiān)護(hù)人的手機(jī)號(hào)碼。程序中對(duì)時(shí)間芯片的讀寫放在外中斷中進(jìn)行。由于有1 s的外中斷,大大方便了對(duì)老人外出是否超時(shí)的時(shí)間計(jì)數(shù),使程序設(shè)計(jì)得到優(yōu)化。主程序流程如圖3所示,外中斷程序流程如圖4所示。
圖3 主程序流程圖
圖4 外中斷程序流程圖
主程序檢測(cè)離家外出部分的代碼如下。其中ReceiveState3為串口3的接收中斷標(biāo)志,Wi-Fi模塊輸出字符后,STM32F103VET6串口3接收并作出判斷。RxCounter3為串口3接收的字節(jié)數(shù),在線時(shí)接收的字符數(shù)為25,其中包含0x0D和0x0A。flag_out為在家或離家的標(biāo)志位,通過(guò)該標(biāo)志位傳遞給外中斷服務(wù)程序進(jìn)行計(jì)時(shí)。
外中斷服務(wù)程序中,在得到離家外出時(shí)的flag_out=1的狀態(tài)后開(kāi)始計(jì)時(shí),此時(shí)程序中的全局變量計(jì)時(shí)時(shí)間time_out每1 s計(jì)數(shù)累加。其程序如下:
(1)本系統(tǒng)采用智能芯片主動(dòng)實(shí)時(shí)檢測(cè)老人在家或離家的狀態(tài),當(dāng)老人外出超時(shí),系統(tǒng)發(fā)送報(bào)警信息給監(jiān)護(hù)人,并播報(bào)語(yǔ)音提示,避免老人意外走失情況發(fā)生。
(2)在外出狀態(tài)檢測(cè)方面,為避免錯(cuò)誤判斷,不采用簡(jiǎn)單的光線傳感、紫外線傳感檢測(cè)等,而是采用Wi-Fi模塊ESP8266連接家中的網(wǎng)絡(luò),對(duì)老人是否離家狀態(tài)進(jìn)行判斷。Wi-Fi模塊在Arduino模式下獨(dú)立運(yùn)行,在線或離線時(shí)輸出特定字符信息,可對(duì)老人是否外出狀態(tài)進(jìn)行可靠的判斷。
(3)系統(tǒng)可設(shè)定超時(shí)時(shí)間(20 min),允許老人在約定時(shí)間內(nèi)離家外出,而不是老人一旦離家就干擾其正常生活節(jié)奏。
(4)增加語(yǔ)音播報(bào)提示,以間隔2 min的頻率多次提醒老人,告知其家庭地址,提醒老人回家,幫助認(rèn)知障礙的老人恢復(fù)正常狀態(tài)。
對(duì)本系統(tǒng)進(jìn)行了實(shí)際測(cè)試,分為在家和外出2種狀態(tài)。首先對(duì)Wi-Fi模塊ESP8266進(jìn)行在線和離線狀態(tài)的檢測(cè),檢測(cè)ESP8266在不同狀態(tài)下是否能輸出不同字符信息。圖5為ESP8266串口輸出的2種不同狀態(tài)字符的顯示界面,圖中輸出為“**2021-03-15/12:36:30**”表示在線,接收到網(wǎng)絡(luò)時(shí)間并輸出時(shí)間字符,“[HTTP]GET...failed,error:connection refused”表示離家外出時(shí)ESP8266離線輸出的字符信息。
圖5 Wi-Fi模塊ESP8266檢測(cè)在家或外出2種狀態(tài)輸出字符顯示界面
老人在家時(shí),STM32F103VET6主控芯片接收ESP8266輸出的正常時(shí)間信息,系統(tǒng)處于待機(jī)檢測(cè)狀態(tài),不會(huì)接收到GPS等信息,不發(fā)出語(yǔ)音提示和報(bào)警短信。外出狀態(tài)下,ESP8266輸出Wi-Fi未連接的字符狀態(tài)信息,系統(tǒng)內(nèi)部開(kāi)始計(jì)時(shí),同時(shí)顯示外出后接收的GPS數(shù)據(jù)信息,包括當(dāng)前運(yùn)行時(shí)間、經(jīng)緯度位置信息等。如果外出時(shí)間未超過(guò)20 min,系統(tǒng)恢復(fù)到待機(jī)檢測(cè)狀態(tài),計(jì)時(shí)清零;當(dāng)外出時(shí)間超過(guò)設(shè)定時(shí)間20 min后,系統(tǒng)發(fā)送報(bào)警提示短信到監(jiān)護(hù)人手機(jī),短信內(nèi)容包括提示語(yǔ)和老人當(dāng)前的經(jīng)緯度位置信息。監(jiān)護(hù)人接收的報(bào)警短信如圖6所示。
圖6 監(jiān)護(hù)人接收到的報(bào)警短信
針對(duì)老年AD患者容易出現(xiàn)外出走失等意外情況,本系統(tǒng)提出了一種基于Wi-Fi在線或離線狀態(tài)下的外出狀態(tài)檢測(cè)方法,主控芯片根據(jù)Wi-Fi模塊不同狀態(tài)下的輸出字符,對(duì)老人是否離家及時(shí)作出有效的判斷。利用STM32F103VET6豐富的外設(shè)與資源,通過(guò)語(yǔ)音提示和短信報(bào)警的方式,主動(dòng)預(yù)防可能出現(xiàn)的走失等意外情況發(fā)生。通過(guò)實(shí)際測(cè)試,本系統(tǒng)可有效地對(duì)離家狀態(tài)作出檢測(cè),并發(fā)送信息和播報(bào)語(yǔ)音。后續(xù)將進(jìn)一步對(duì)各模塊進(jìn)行集成化設(shè)計(jì),加入電源管理及STM32F103VET6待機(jī)狀態(tài)下的低功耗設(shè)計(jì),使系統(tǒng)小型化、集成化。此外,可以加入預(yù)設(shè)時(shí)間的更改設(shè)置,以及更改監(jiān)護(hù)人手機(jī)號(hào)接收?qǐng)?bào)警短信,由用戶根據(jù)需要進(jìn)行配置,實(shí)現(xiàn)更加實(shí)用、便于推廣。