張力弓,蔣一筆,鄒林宏,印 松
(上海電機(jī)學(xué)院機(jī)械學(xué)院,上海 201306)
目前,許多家庭中會(huì)常備一些藥物以應(yīng)對(duì)常見的疾病,例如治療感冒、咳嗽的藥品,但是這些藥品通常直到過期都極少被使用,而現(xiàn)有普通的家用藥箱缺少過期提醒功能,如果使用者稍不注意誤服過期藥物會(huì)導(dǎo)致意外發(fā)生[1]。此外,許多老年人會(huì)受一些慢性疾病的困擾,需要長(zhǎng)期服用各種藥品,因此,藥品的存放管理是必須面對(duì)的一個(gè)問題。許多家庭通常將藥品隨意存放在床頭柜、抽屜等地方,不僅容易造成找尋困難,甚至有可能導(dǎo)致小孩誤食藥品而威脅生命。同時(shí),在無監(jiān)護(hù)人陪伴時(shí),家中的老人或小孩經(jīng)常由于遺忘、視力不好等原因,容易出現(xiàn)錯(cuò)服、漏服藥品的情況[2]。
針對(duì)以上問題,基于Arduino 設(shè)計(jì)了一種具有藥品信息存儲(chǔ)功能的家用智能藥箱,該藥箱可實(shí)現(xiàn)對(duì)藥品的智能化管理,可監(jiān)控藥箱內(nèi)所存放藥品的保質(zhì)期,同時(shí)可以設(shè)置鬧鐘定時(shí)提醒用戶服藥,解決了現(xiàn)有藥箱存在的問題,可有效避免藥品誤服、錯(cuò)服、漏服的情況。
該家用智能藥箱結(jié)構(gòu)設(shè)計(jì)如圖1 所示。其箱體為三層抽屜結(jié)構(gòu),每個(gè)抽屜通過隔板分隔成多數(shù)量的存儲(chǔ)格,抽屜兩側(cè)設(shè)置有滑軌,抽屜通過滑軌設(shè)置在箱體中,并在抽屜兩側(cè)設(shè)有電磁鎖,用以控制抽屜的開閉。在每層抽屜以及抽屜的存儲(chǔ)格中均設(shè)有LED 燈,用以指示藥品所處位置。觸摸顯示屏嵌在箱體的上表面,用于和用戶交互,通過觸摸顯示屏實(shí)現(xiàn)對(duì)藥箱的控制。上表面還設(shè)有開關(guān),用以控制藥箱的開啟、關(guān)閉。箱體底部設(shè)有蜂鳴器,通過蜂鳴器向用戶發(fā)出聲音提醒,提醒用戶按時(shí)吃藥,或者提醒藥箱內(nèi)有藥品即將過期。箱體頂部設(shè)有電氣層,用以放置控制器、電源及繼電器等電氣元件。
圖1 家用智能藥箱結(jié)構(gòu)設(shè)計(jì)示意圖
家用智能藥箱主菜單界面設(shè)計(jì)如圖2 所示。該家用智能藥箱除具有現(xiàn)有家用藥箱的存儲(chǔ)功能外,還具有存儲(chǔ)藥品相關(guān)信息,自動(dòng)計(jì)算過期時(shí)間、及時(shí)提醒用戶更換,定時(shí)提醒用藥等功能。
圖2 家用智能藥箱主菜單界面設(shè)計(jì)
用戶通過電容觸摸屏編輯存放藥品的名稱、生產(chǎn)日期、保質(zhì)期、主要療效的相關(guān)信息,系統(tǒng)會(huì)依據(jù)藥品信息給出存儲(chǔ)位置建議供用戶選擇,用戶確定存放位置后,相應(yīng)層抽屜的電磁鎖開關(guān)被打開,使藥箱相應(yīng)層的抽屜沿導(dǎo)軌自動(dòng)彈出,同時(shí)存儲(chǔ)位置的LED 燈亮起,用戶將藥品放入后將抽屜關(guān)上,電容觸摸屏?xí)@示存放成功的字樣。
藥品取出過程與存放過程類似,用戶通過電容觸摸屏輸入藥品名稱或是藥品存放位置確認(rèn)所要取出的藥品,相應(yīng)層抽屜的電磁鎖開關(guān)被打開,使藥箱相應(yīng)層的抽屜自動(dòng)彈出,同時(shí)存儲(chǔ)位置的LED 燈亮起,用戶將藥品取出后將抽屜關(guān)上,電容觸摸屏?xí)@示存放成功的字樣。
通過藥品信息存儲(chǔ)系統(tǒng),用戶可以查看藥箱中所存藥品的名稱、存放位置、過期時(shí)間等相關(guān)信息,并在藥品過期前30 d 通過藥箱底部的蜂鳴器提醒用戶及時(shí)處理,并通過電容觸摸屏顯示過期藥品相關(guān)信息。如藥品已過期,則會(huì)在藥品列表中顯示已過期的狀態(tài),同時(shí)在用戶取藥時(shí)也會(huì)判斷藥品是否過期,以防止服用過期藥物導(dǎo)致意外發(fā)生。此外,用戶還可以根據(jù)醫(yī)囑,設(shè)置服藥鬧鐘,藥箱會(huì)在指定時(shí)間通過蜂鳴器和觸摸顯示屏提醒用戶服藥,最多可支持設(shè)置4 個(gè)服藥鬧鐘。
藥品建議部分列舉了多數(shù)家用藥箱中常備的列表清單供用戶參考[3]。用戶可以根據(jù)此清單來儲(chǔ)備藥品,以備不時(shí)之需,也可以在此基礎(chǔ)上添加自己需要的藥品。
本文控制部分基于Arduino UNO 開發(fā)板設(shè)計(jì)??刂葡到y(tǒng)如圖3 所示,9 V 電源模塊為控制電路供電,Arduino 與電容觸摸屏使用I2C 方式通信,完成控制命令和數(shù)據(jù)傳輸,從DS1302 時(shí)鐘模塊獲取實(shí)時(shí)時(shí)間,并通過I/O 口控制指示燈、蜂鳴器、電磁鎖做出相應(yīng)動(dòng)作。
圖3 控制系統(tǒng)組成
相較于其他單片機(jī)(例如STM32 等)而言,Arduino具有編程簡(jiǎn)單、易于上手的優(yōu)點(diǎn),且價(jià)格相對(duì)便宜。Arduino UNO 采用ATmega328 微控制器,有14 個(gè)數(shù)字輸入/輸出引腳、6 個(gè)模擬輸入引腳,支持UART 串口通信、I2C 通信和SPI 通信等多種通信模式??赏ㄟ^官方提供的Arduino IDE對(duì)其進(jìn)行編程,使用便捷,并支持加載第三方的函數(shù)庫(kù)。
Arduino UNO 與vLcds HMI 電容觸摸屏通過I2C 數(shù)字化串口連接,采用雙線(SDA、SCL)方式進(jìn)行雙向分時(shí)通信,該方式可以通過串口地址識(shí)別總線上的不同類型器件,是器件間主要接口類型。I2C 接口利用這兩條線上信號(hào)的變化,實(shí)現(xiàn)物理比特傳輸,并按規(guī)定的數(shù)據(jù)格式進(jìn)行信息交換,完成控制命令和數(shù)據(jù)傳輸[4],其具體接線方式如表1 所示,VCC和GND 引腳分別連接Arduino 的5 V 和GND 引腳,為觸摸屏供電;SDA、SCL 引腳連接Arduino I2C 通信接口SDA 和SCL;INT 信號(hào)引腳連接Arduino 外部中斷復(fù)用端口D2,用于接收中斷觸發(fā)信號(hào),進(jìn)入中斷服務(wù)程序。
表1 Arduino UNO 與vLcds HMI 電容觸摸屏接線方式
MH 實(shí)時(shí)時(shí)鐘模塊集成了DS1302 實(shí)時(shí)時(shí)鐘芯片、32 768 Hz晶振和CR2032 紐扣電池。在Arduino 控制程序中通過DS1302 函數(shù)庫(kù)驅(qū)動(dòng)DS1302 時(shí)鐘芯片獲取時(shí)間、日期等信息。使用DS1302_SetTime 函數(shù)設(shè)置當(dāng)前時(shí)間和日期,把程序燒錄至?xí)r鐘芯片后將該命令注釋掉,再次燒錄,所設(shè)置時(shí)間便儲(chǔ)存在時(shí)鐘芯片的內(nèi)存中。使用DS1302_GetTime 函數(shù)將實(shí)時(shí)的時(shí)間、日期信息作為返回值輸出,即可獲得實(shí)時(shí)的時(shí)間、日期信息。當(dāng)藥品的生產(chǎn)日期和保質(zhì)期信息被錄入后,控制程序自動(dòng)計(jì)算過期時(shí)間,通過比較實(shí)時(shí)日期以判斷藥品是否過期。
藥箱的單層抽屜采用12 V 四線電磁鎖開關(guān)進(jìn)行控制,由單獨(dú)的12 V 電源模塊供電,使用Arduino 的數(shù)字I/O 引腳驅(qū)動(dòng)繼電器對(duì)其進(jìn)行控制,只需對(duì)其提供0.5 s 的高電平即可開啟。該電磁鎖除電源線和接地線外,還有2 根線,具有檢測(cè)開關(guān)狀態(tài)的功能,根據(jù)不同的返回值,可以對(duì)電磁鎖開關(guān)的狀態(tài)進(jìn)行判斷,進(jìn)而判斷單層抽屜的開關(guān)狀態(tài),從而避免忘記關(guān)閉藥箱情況的發(fā)生。
本文提出的家用智能藥箱相較于傳統(tǒng)藥箱實(shí)現(xiàn)了對(duì)藥品信息的存儲(chǔ)與管理,且方便存取,可提醒人們藥品過期,對(duì)常見病癥可提供用藥建議,具有傳統(tǒng)家用藥箱不具有的智能化功能。同時(shí)為適應(yīng)智能家居的發(fā)展,這套信息存儲(chǔ)系統(tǒng)可應(yīng)用于智能衣柜、智能冰箱等其他智能家居領(lǐng)域。未來,還可以設(shè)計(jì)配套的手機(jī)應(yīng)用程序,可實(shí)現(xiàn)遠(yuǎn)程操作,能夠隨時(shí)隨地了解家中藥箱的一切情況,避免家中常備藥品過期情況的發(fā)生。