劉靜琦,阮煜婕,劉靜波
(南京工程學院信息與通信工程學院,南京211167)
阿爾茨海默病(Alzheimer’s disease,AD)是一種中樞神經系統退行性疾病,具有不可逆性和致死性,病程緩慢,多發病于老年時期,嚴重威脅人類健康。目前世界上有5 000萬人患有AD,并且每隔3 s就會確診1位AD患者[1]。我國65歲以上老人AD患病率為5.9%,每年約增加30萬老年AD患者[2]。AD患者常出現認識、記憶功能障礙及人格、行為異常等[3],患者走失、失蹤事件時有發生。目前,為避免意外發生,防止老年AD患者走失,最常用的方式是在老人身上佩戴個人名片,將老人信息、監護人電話等寫在卡片上,這樣當出現老人走失時,有關部門根據卡片信息就可以把其送回家中或聯系監護人[4]。這種方法缺乏美觀性,不考慮老人的自尊心,也不能第一時間發現老人走失,是一種被動的解決方法。另有一種報警系統是采用基于計步統計加藍牙傳感的實現方法對老人在房間內進行計步檢測,當老人行走步數超過預設值后發出警報,提示看護人關注老人當前情況。該方法針對老人在居住房間的走動步數進行檢測,老人不能離開居住場所,限制其走出居住區域。同時,即使老人沒有離開室內,此方法也會記錄在房間里的所有走動,行走步數超過設定值也會觸發報警[5]。
本文設計一種適用于AD人群的智能提示與報警系統,采用Wi-Fi模塊檢測老人是否離家外出,當老人在家時,系統處于待機檢測狀態,不干擾老人在家中的日常活動;當老人外出時,系統檢測到老人外出后開始計時,當計時時間超過預設時間(例如20 min)后,系統發出語音提示語,告知其家庭住址、提示老人回家,并以短信方式把老人位置信息發送給家人,以這種主動提示和報警的方法,預防老人走失的意外發生。若老人外出未超過20 min正常回家,系統回到待機檢測狀態。
離家外出狀態檢測可以采用若干種方式,例如光線強度或紫外線強度檢測,通過室內外光線或紫外線的變化來檢測老人是否離家外出。一般可采用模擬數字轉換器(analog-to-digital converter,ADC)接口讀取傳感器輸出的模擬數據,從而檢測到不同狀態下的模擬數據變化。但該方法有明顯的局限性,與天氣、光照等因素關聯較大,沒有統一設定的閾值標準,容易出現誤差,不能可靠地判斷老人是否離家外出。
本系統采用Wi-Fi模塊檢測老人是否離家外出。老人在家或離家外出時,Wi-Fi模塊處于在線或離線狀態,通過對Wi-Fi模塊進行配置或開發編程,來判斷老人是否外出。
(1)對Wi-Fi模塊進行簡單的AT指令配置。設定好名稱和密碼后,連接到家中的無線網絡,Wi-Fi模塊在線和離線2種狀態下其串口輸出2種不同的特定字符。當從在線變為離線時輸出WIFI DISCONNECT,當從離線變為在線時輸出WIFI CONNECT。單片機可以對字符進行檢測并判斷老人當前的狀態。此方式較為簡單,但要注意的是,Wi-Fi模塊串口輸出狀態字符發生在離線或在線狀態改變的時刻。
(2)基于Arduino環境[6],把Wi-Fi模塊作為Arduino的特定開發板獨立編程應用。即獨立應用Wi-Fi模塊并訪問網絡,輸出用戶編程的特定編碼字符。當Wi-Fi模塊在線時,訪問特定時間應用程序接口(application programming interface,API),以5 s為周期輸出網絡時間信息,通過串口發送給單片機,系統則判斷老人當前為在家狀態。如老人離家,Wi-Fi模塊離線后則不輸出時間信息,系統則判斷出老人已離家外出,并開始計時。對其離家時間是否超過20 min進行判斷,為下一步是否提示或發送信息做準備。在線與離線狀態下一直以5 s為周期發送不同的字符信息,從而得到老人是否離家的實時準確狀態。在特定時刻,用網絡時間來校準系統時鐘芯片的計時,保證系統計時的準確。
本系統由主控芯片、GPS模塊、GSM模塊、Wi-Fi模塊、語音模塊、時鐘芯片、EEPROM存儲芯片和LCD顯示模塊等組成。系統組成結構框圖如圖1所示。串口1接入GSM模塊用來發送短信報警信息,串口2接入GPS模塊以獲取老人外出后的位置信息,串口3接入Wi-Fi模塊并連接于家中的無線網絡,通過檢測Wi-Fi模塊的在線狀態,掌握老人是否離家外出。語音模塊播放特定的語音,包括家庭住址和提示回家等語音信息。時鐘芯片和EEPROM存儲芯片通過I2C總線接口方式連接于主控芯片,具有計時與系統存儲數據功能。LCD顯示模塊連接于主控芯片的可變靜態存儲器(flexible static memory controller,FSMC)接口,用以顯示系統測試數據和配置信息。在主控芯片控制下,待機檢測當前狀態,當檢測到老人外出后開始計時,同時實時獲取老人位置信息,直至超時后本系統發出報警信息,播報語音提示,從而形成整體的閉環控制。

圖1 智能提示與報警系統組成結構框圖
1.3.1 主控芯片
主控芯片是本系統的核心,負責系統的整體運行、數據讀寫、狀態判斷與控制。主控芯片采用STM32F103VET6。該芯片采用ARM公司的Cortex-M3內核,主頻72 MHz,具備高速存儲器和豐富端口,具有定時器、外中斷、串口等多項資源。該芯片的FSMC不僅可以控制靜態隨機存儲器(static random access memory,SRAM)、NOR FLASH等,還可以方便地實現薄膜晶體管(thin film transistor,TFT)液晶顯示屏的驅動,滿足本系統的設計需求。
1.3.2 主要模塊選型
GSM模塊選用SIM800C。這是一款四頻GSM/GPRS模塊,工作頻率為850、900、1 800、1 900 MHz。SIM800C采用5 V供電。STM32F103VET6把發送的信息數據轉換為相應的Unicode碼,通過串口發送到GSM模塊,GSM模塊發送信息到監護人手機。
GPS模塊選用VK2828U7G5LF。該模塊采用高精度溫度補償晶體振蕩器(temperature compensate x’tal oscillator,TCXO),內置FLASH,可自由配置多項參數,包括波特率和數據刷新率。本系統配置GPS模塊串口波特率為38 400 bit/s,數據更新速率為5 Hz。
Wi-Fi模塊選用ESP8266。ESP8266是高性能無線系統級芯片(system on chip,SOC),在較小尺寸封裝中集成了業界領先的超低功耗32位微型微控制單元(microcontrol unit,MCU)[7],主頻支持80和160 MHz。該模塊符合IEEE802.11b/g/n標準,支持TTL(transistor transistor logic)電平。ESP8266支持熱點(AP)、客戶端(STA)、熱點+客戶端(AP+STA)3種模式[8-9],本系統配置Wi-Fi模塊為STA模式。該模塊基于Arduino環境進行編程配置,通過串口輸出特定信息作為系統判斷老人是否離家的傳感信號。
語音模塊選擇JQ8900,可直接寫入MP3類型的語音信號,有多種觸發播放方式可選,允許IO口低電平觸發播放的方式。該模塊體積小,可直接驅動小型揚聲器,因此適用于本系統語音播放的要求。
時鐘芯片選用DS3231芯片,這是一款內置TCXO的時鐘芯片[10],采用3.3 V供電,精度可達±2 ppm(1 ppm=1×10-6,溫度范圍為0~40℃)。DS3231的器件地址分別為0XD0(寫)、0XD1(讀),3腳為INT/SQW中斷信號輸出,INT引腳為開漏輸出模式,該管腳外加上拉電阻連接到3.3 V電壓。其輸出狀態是由內部控制寄存器控制的,控制寄存器地址為0EH,其中配置為00H時,表示控制寄存器中的BIT4和BIT3(RS2和RS1)以及BIT2(INTCN)為0,則3腳輸出1 Hz方波。該方波信號連接STM32F103VET6端口PC6,可作為外中斷信號,在外中斷服務程序中處理對應的程序,減小主程序的占用。
EEPROM存儲芯片采用AT24C02。該芯片工作電壓范圍寬(1.7~5.5 V),具有2 Kibit的存儲容量,采用I2C接口,可以與其他I2C器件共用一組I2C接口連接到主控芯片,主控芯片根據器件地址訪問不同的I2C器件。其中AT24C02的A0、A1、A2接地,表示設置AT24C02的器件地址為0XA0(寫地址)和0XA1(讀地址)。AT24C02的5腳和6腳為I2C接口的數據線和時鐘線,7腳WP為寫保護引腳,當WP接地時,可以進行普通的讀寫操作,WP接VCC時執行寫保護。
LCD顯示模塊選擇基于ILI9486驅動芯片的3.5 in(1 in=25.4 mm)TFT顯示屏,其接口包括16位并口數據接口(D0-D15)、片選控制線(CS)、讀寫控制線(WR/RD)、數據寄存器選擇控制線(RS)、復位控制線(RES)和背光控制線(BLK)。本系統采用FSMC方式驅動LCD顯示屏。
1.3.3 硬件電路具體設計
硬件電路圖如圖2所示。其中PA9/PA10為串口1,接入GSM模塊;PA2/PA3為串口2,接入GPS模塊;PB10/PB11為串口3,接入Wi-Fi模塊。PC11和PC12作為I2C數據總線接入DS3231和AT24C02,PC11為數據線SDA,PC12為時鐘線SCL。DS3231的1 Hz輸出信號接到PC6,是外中斷信號,I2C的數據線SDA、時鐘線SCL和DS3231的INT信號輸出端口都接有10 kΩ上拉電阻。PB8為語音模塊的驅動信號端,低電平播放;PB1控制Wi-Fi模塊的復位(低電平復位)。

圖2 電路硬件設計圖
基于FSMC方式下的LCD驅動電路設計,實際上是把LCD作為存儲器件接入,可以理解為單地址線的存儲器件。因此,LCD的讀寫控制線WR和RD接入STM32F103VET6主控芯片的FSMC_NWE和FSMC_NOE,LCD的數據接口D0-D15與FSMC_D0-FSMC_D15連接。主控芯片提供的FSMC_NE1管腳接入LCD的片選CS,FSMC_A16連接LCD的數據寄存器控制RS,FSMC_NE1和FSMC_A16 2個控制線設定本系統LCD的驅動地址是0x60000000|0x0001FFFE。
軟件編寫是基于STM32庫函數設計方式,在Keil5編譯環境下進行,重點是串口程序的編寫。串口2和串口3分別接入GPS模塊和Wi-Fi模塊,這2個串口是STM32F103VET6對模塊數據的接收程序,因此采用串口中斷方式[11]。串口2中斷得到標志位,然后在主程序中對數據進行處理,即對GPS數據進行解析,得到時間和經緯度位置信息。串口3中斷接收數據字符,主程序則是對Wi-Fi接收的字符進行判斷,從而得出Wi-Fi模塊ESP8266是否在線。主程序中檢測的狀態通過外出狀態標志位傳遞,每1 s的外中斷服務程序根據外出狀態標志位進行計時,計時超過20 min發出報警信息。STM32F103VET6通過串口1發送短信數據,把經緯度發送到監護人的手機號碼。程序中對時間芯片的讀寫放在外中斷中進行。由于有1 s的外中斷,大大方便了對老人外出是否超時的時間計數,使程序設計得到優化。主程序流程如圖3所示,外中斷程序流程如圖4所示。

圖3 主程序流程圖

圖4 外中斷程序流程圖
主程序檢測離家外出部分的代碼如下。其中ReceiveState3為串口3的接收中斷標志,Wi-Fi模塊輸出字符后,STM32F103VET6串口3接收并作出判斷。RxCounter3為串口3接收的字節數,在線時接收的字符數為25,其中包含0x0D和0x0A。flag_out為在家或離家的標志位,通過該標志位傳遞給外中斷服務程序進行計時。


外中斷服務程序中,在得到離家外出時的flag_out=1的狀態后開始計時,此時程序中的全局變量計時時間time_out每1 s計數累加。其程序如下:


(1)本系統采用智能芯片主動實時檢測老人在家或離家的狀態,當老人外出超時,系統發送報警信息給監護人,并播報語音提示,避免老人意外走失情況發生。
(2)在外出狀態檢測方面,為避免錯誤判斷,不采用簡單的光線傳感、紫外線傳感檢測等,而是采用Wi-Fi模塊ESP8266連接家中的網絡,對老人是否離家狀態進行判斷。Wi-Fi模塊在Arduino模式下獨立運行,在線或離線時輸出特定字符信息,可對老人是否外出狀態進行可靠的判斷。
(3)系統可設定超時時間(20 min),允許老人在約定時間內離家外出,而不是老人一旦離家就干擾其正常生活節奏。
(4)增加語音播報提示,以間隔2 min的頻率多次提醒老人,告知其家庭地址,提醒老人回家,幫助認知障礙的老人恢復正常狀態。
對本系統進行了實際測試,分為在家和外出2種狀態。首先對Wi-Fi模塊ESP8266進行在線和離線狀態的檢測,檢測ESP8266在不同狀態下是否能輸出不同字符信息。圖5為ESP8266串口輸出的2種不同狀態字符的顯示界面,圖中輸出為“**2021-03-15/12:36:30**”表示在線,接收到網絡時間并輸出時間字符,“[HTTP]GET...failed,error:connection refused”表示離家外出時ESP8266離線輸出的字符信息。

圖5 Wi-Fi模塊ESP8266檢測在家或外出2種狀態輸出字符顯示界面
老人在家時,STM32F103VET6主控芯片接收ESP8266輸出的正常時間信息,系統處于待機檢測狀態,不會接收到GPS等信息,不發出語音提示和報警短信。外出狀態下,ESP8266輸出Wi-Fi未連接的字符狀態信息,系統內部開始計時,同時顯示外出后接收的GPS數據信息,包括當前運行時間、經緯度位置信息等。如果外出時間未超過20 min,系統恢復到待機檢測狀態,計時清零;當外出時間超過設定時間20 min后,系統發送報警提示短信到監護人手機,短信內容包括提示語和老人當前的經緯度位置信息。監護人接收的報警短信如圖6所示。

圖6 監護人接收到的報警短信
針對老年AD患者容易出現外出走失等意外情況,本系統提出了一種基于Wi-Fi在線或離線狀態下的外出狀態檢測方法,主控芯片根據Wi-Fi模塊不同狀態下的輸出字符,對老人是否離家及時作出有效的判斷。利用STM32F103VET6豐富的外設與資源,通過語音提示和短信報警的方式,主動預防可能出現的走失等意外情況發生。通過實際測試,本系統可有效地對離家狀態作出檢測,并發送信息和播報語音。后續將進一步對各模塊進行集成化設計,加入電源管理及STM32F103VET6待機狀態下的低功耗設計,使系統小型化、集成化。此外,可以加入預設時間的更改設置,以及更改監護人手機號接收報警短信,由用戶根據需要進行配置,實現更加實用、便于推廣。