李 彬,黎鈺珍
(廣東理工學院電氣與電子工程學院,廣東 肇慶526100)
隨著醫(yī)療條件的改善,我國老年人口數(shù)量和比例的不斷增加,導致我國人口趨向老齡化的問題日益突出。許多老年人往往伴隨著一些慢性病,因此需要長期服藥來改善身體狀況,但隨著老年人記憶力的下降,常常會出現(xiàn)忘記服藥的情況。不僅僅是老年人,當今許多年輕人也因為工作和生活壓力的增加,頭緒繁多,生病后也會出現(xiàn)同等的情況,從而導致用藥時間不準確,藥物也未能發(fā)揮最佳的效果,所以準時準點吃藥幾乎是人們面對一個社會難題[1-3]。針對此類問題,可以設計一款智能藥盒,既具有與家中儲藥箱相同的儲物功能,也有日常鬧鐘提醒功能。
智能藥盒設計采用STM32F103ZET6 單片機作為系統(tǒng)主控芯片,由液晶模塊、按鍵輸入模塊、檢測模塊、時鐘模塊、響應模塊、GSM 模塊等部分組成。系統(tǒng)總體框架如圖1 所示。系統(tǒng)的液晶模塊配合按鍵輸入模塊和時鐘模塊進行時鐘的顯示、鬧鐘時間的設定、接收短信手機號碼編輯,還有多個頁面的切換等;時鐘模塊包括了時鐘的顯示還有鬧鐘的設定;檢測模塊和響應模塊用于定時提醒時,鬧鐘的響應以及取藥動作的檢測,當檢測模塊判斷到取藥動作時,鬧鐘響應也會實時關閉;GSM 模塊的功能也是用于提醒,區(qū)別于響應模塊觸發(fā)時間不同,在鬧鐘提醒長達一分鐘后,會向系統(tǒng)配置完成的手機號碼發(fā)送一條信息,用于二次提醒用戶進行服藥[4-6]。
圖1 系統(tǒng)框圖
將硬件設計后的主電路板內(nèi)置于盒子內(nèi)部,用于用戶操作或顯示信息的按鍵、液晶屏與LED 燈置于藥盒表面。用戶可以很方便的操控藥盒,并從LED燈與液晶屏獲取信息。紅外對管模塊垂直于底部并安裝在藥盒蓋子上,跟隨藥盒的蓋子運動而運動,當蓋下與打開能夠明顯的分辨兩種信號,并設計6 個取藥格子,供用戶取藥放藥。
液晶模塊選用LCD1602A 模塊,特點是操作簡單、與單片機以并行的方式傳輸數(shù)據(jù),傳輸速度快,帶有背光效果用于輔助顯示。單片機可以通過傳送不同的數(shù)據(jù)來讓液晶顯示數(shù)字、符號、英文,大部分的數(shù)據(jù)指令與C 語言的ASCII 碼值相同,大大方便了軟件部分的程序編寫。模塊的RS 引腳用于區(qū)分寫入指令還是數(shù)據(jù)。E 引腳為使能腳,當E 腳從高電平到低電平,液晶模塊執(zhí)行命令。RW 引腳判斷讀操作還是寫操作。該模塊還帶有V0 引腳,用于調(diào)節(jié)液晶顯示時的對比度。LCD1602A 在系統(tǒng)中用于顯示不同界面,包括主界面、鬧鐘設置界面、號碼配置界面、以及鬧鐘響應時的動畫顯示等[7]。主界面顯示當前日歷以及時間信息,最小顯示到分鐘信息;鬧鐘設置界面可以設置鬧鐘的開關和設定鬧鐘;號碼配置界面用于配置鬧鐘響應超時后接收短信的手機號碼。液晶模塊接線原理圖如圖2 所示。
圖2 液晶模塊電路
該模塊一共使用三個輕觸按鍵構成。硬件上按鍵一端接地,另一端接單片機的GPIO 口。在程序上打開與按鍵連接的單片機GPIO 口的上拉輸入模式,保持相對于按鍵按下后輸入為低電平的一種對立狀態(tài)[8]。在設計中,三個按鍵通過程序控制在各個界面模式下有不同的功能,按鍵與單片機的連接如圖3所示。功能分配如下:
圖3 按鍵輸入模塊電路
(1)在液晶主界面下按鍵1 可進入鬧鐘調(diào)節(jié)頁面,按鍵2 無效,按鍵3 可進入號碼調(diào)節(jié)界面。
(2)在鬧鐘調(diào)節(jié)頁面下按鍵1 可在選中數(shù)據(jù)字符與不選中之間進行切換,長按此鍵1.5s 可以保存數(shù)據(jù)并退出。按鍵2 和按鍵3 可以進行數(shù)據(jù)字符的選擇,不再更改數(shù)據(jù)的狀態(tài)下可以左右移選擇需要調(diào)節(jié)的字符,若在更改狀態(tài)下則可以進行數(shù)據(jù)的加減。
(3)在號碼配置界面各個按鍵與鬧鐘調(diào)節(jié)界面的功能相同。
模塊的紅外反射距離可以通過調(diào)節(jié)其上面的電位器調(diào)節(jié)。通過紅外模塊上的主控,判斷是否接收到紅外信號來輸出一個電平,反饋該電平給本次實驗的微控制器,此時,傳感器上的指示燈也會點亮[9]。利用此特性,可以用作檢測藥盒的開關動作,合上與打開兩個動作會觸發(fā)紅外傳感器的兩個狀態(tài)。當鬧鐘提醒時檢測模塊會被使能,開始檢測,檢測到藥盒打開時,系統(tǒng)會關閉鬧鐘響應,同時防止1 min 后的GSM 模塊的觸發(fā)。其原理圖以及接線如圖4 所示。
圖4 檢測模塊電路
配置后的RTC 實時時鐘的32 位可編程計數(shù)器將按分頻后的頻率進行累加,由于系統(tǒng)實現(xiàn)的是日常的時間功能,所以分頻后的時鐘周期為1 s。當RTC 的32 位可編程計數(shù)器與RTC_ALR 寄存器的值比較后相等時,鬧鐘將產(chǎn)生中斷。
單片機通過實時讀取RTC 時鐘,將讀取后的數(shù)據(jù)傳送給液晶,以此來顯示時鐘信息給用戶,用戶可以很直觀的了解到當前的時間。當用戶需要配置鬧鐘時,系統(tǒng)會提供液晶模塊的鬧鐘配置界面,在調(diào)節(jié)好鬧鐘時間并打開鬧鐘。長按按鍵1.5s 退回液晶主界面,此時鬧鐘時間會寫入到鬧鐘響應的寄存器并打開。
響應模塊是為了提供鬧鐘的定時提醒功能,由一個有源蜂鳴器和紅色的發(fā)光二極管組成。有源蜂鳴器是指自帶了震蕩電路的蜂鳴器,對有源蜂鳴器驅(qū)動比較方便,只需要往蜂鳴器通上電就會震蕩發(fā)聲,通常頻率固定,所以響聲單一。而對于發(fā)光二級管,電路上只需要連接合適的限流電阻,加上正向?qū)c壓后即可發(fā)光,采用灌電流的驅(qū)動LED。
當RTC 實時時鐘判斷到用戶設定的鬧鐘到點時,響應模塊與檢測模塊會同時打開。蜂鳴器根據(jù)程序模擬鬧鐘播放聲音,發(fā)光二極管以相同頻率閃爍。響應模塊此時可以被任意按鍵關閉,或者通過檢測模塊的判斷關閉響應。原理圖如圖5 所示。
圖5 響應模塊電路
移動臺由終端設備或數(shù)據(jù)電流終端設備發(fā)出的AT 命令控制,所以SIM800C 是以各種AT 指令進行控制的。AT 指令在程序中是以“AT”開頭,后邊緊跟模塊能識別的操作命令的格式。
STM800C 模塊與SIM 卡連接時會通過網(wǎng)絡狀態(tài)指示燈(NET)進行指示,通過該指示燈的閃爍情況,可以很方便的判斷SIM800C 模塊的工作狀態(tài)。發(fā)送程序設定好的短信內(nèi)容,在系統(tǒng)中可以通過按鍵更改接收短信的號碼。短信觸發(fā)在定時提醒狀態(tài)下一分鐘后,如果檢測模塊在一分鐘內(nèi)未接收到打開藥盒的信號,此時會觸發(fā)GSM 模塊發(fā)送短信給系統(tǒng)設定的手機,提醒用戶吃藥。發(fā)送完短信后系統(tǒng)會關閉鬧鐘響應,與鬧鐘設置。
主函數(shù)上電部分對系統(tǒng)的中斷優(yōu)先級、各個模塊的通用GPIO 口、定時器、串口等進行模式的初始化配置。主循環(huán)部分由5 個主要函數(shù)組成,按鍵掃描、液晶的界面模式處理、按鍵長按判斷、鬧鐘的響應程序、短信發(fā)送程序。流程圖如圖6 所示。中斷部分設置了STM32 的TIM3 定時器和RTC 鬧鐘功能為中斷源。定時器TIM3 配置為100 μs 產(chǎn)生一次中斷,這部分程序只做一些變量、部分時間計數(shù)。RTC 鬧鐘中斷用于打開響應模式GSM 模塊等。
圖6 系統(tǒng)流程圖
液晶的界面模式處理是較為重要的部分之一。用戶的操作建立在液晶顯示之上,程序也是圍繞著液晶開始的。程序可分為兩部分,第一部分是驅(qū)動液晶模塊的代碼,這部分程序關系到液晶能否正常顯示需要的內(nèi)容,包括了單片機向液晶模塊寫指令、寫數(shù)據(jù),還有上電時液晶的初始化。第二部分是本次設計需要顯示的內(nèi)容。此部分程序還包含了對RTC 實時時鐘的讀取。程序流程上包括各個界面的初始化,還有一些需要循環(huán)顯示的變化量,比如主界面的時間。此部分的流程圖如圖7 所示。
圖7 液晶模式流程圖
測試系統(tǒng)由于初期選材的問題,液晶模塊采用了5 V 器件1602 A,而STM32 單片機采用3.3 V 供電,所以提供不了5 V 的電平輸出,所以出現(xiàn)了電平不兼容的問題。解決問題采用了CMOS 器件74HC245 的總線收發(fā)器,三態(tài)緩沖門電路。將該芯片的VCC 連接5 V 電源,控制芯片的DIR 端可控制信號傳輸?shù)姆较?,設置完成后,將單片機控制液晶的引腳連接至芯片的輸入端,即可輸出5 V 電壓,解決此問題。
進行軟件部分調(diào)試后,系統(tǒng)上電時液晶主界面如圖8 所示,液晶屏顯示分為兩行,第一行顯示了當前的日歷信息與時間信息;第二行則是對按鍵的左右鍵功能的提示,按下按鍵1 時可進入鬧鐘配置頁面,按下按鍵3 時可進入號碼配置頁面。
圖8 液晶主界面
進入時鐘配置界面后,液晶第一行成功顯示了鬧鐘開關和時間,采用光標閃爍顯示可進行調(diào)節(jié)的數(shù)據(jù),通過按鍵2、3 左右移動黑色光標進行選擇數(shù)據(jù)。按下按鍵1 選中需要調(diào)節(jié)的數(shù)據(jù)時,對應數(shù)據(jù)進行白底交替閃爍,按鍵2、3 可進行數(shù)據(jù)的加減。通過改變這個時間可以配置時間,并打開鬧鐘開關,設置后的時間會被保存。第二行顯示了用藥數(shù)量,用戶也可以設置該數(shù)字,在鬧鐘響應時,界面上會彈出動畫提示服藥數(shù)。按鍵1 長按1.5 s 后可保存并退出。
根據(jù)系統(tǒng)的功能,能正常運行以下功能:(1)液晶上能夠顯示對應的日歷和時間,與北京時間誤差足夠小,界面信息顯示正常;(2)按鍵經(jīng)過程序的編寫,能實現(xiàn)多個按鍵互不干擾,保證各個按鍵功能實時實現(xiàn);(3)鬧鐘功能準時響應,蜂鳴器可以模擬常規(guī)鬧鐘的響聲;(4)檢測模塊判斷的動作是從藥盒關閉到打開,若是盒子打開的狀態(tài)下進行鬧鐘響應,關閉該響應除了可以將盒子關上再打開,任意按鍵的按下也可以關閉響應;(5)GSM 模塊可以成功發(fā)送短信到用戶手機。