張力弓,蔣一筆,鄒林宏,印 松
(上海電機學院機械學院,上海 201306)
目前,許多家庭中會常備一些藥物以應對常見的疾病,例如治療感冒、咳嗽的藥品,但是這些藥品通常直到過期都極少被使用,而現有普通的家用藥箱缺少過期提醒功能,如果使用者稍不注意誤服過期藥物會導致意外發生[1]。此外,許多老年人會受一些慢性疾病的困擾,需要長期服用各種藥品,因此,藥品的存放管理是必須面對的一個問題。許多家庭通常將藥品隨意存放在床頭柜、抽屜等地方,不僅容易造成找尋困難,甚至有可能導致小孩誤食藥品而威脅生命。同時,在無監護人陪伴時,家中的老人或小孩經常由于遺忘、視力不好等原因,容易出現錯服、漏服藥品的情況[2]。
針對以上問題,基于Arduino 設計了一種具有藥品信息存儲功能的家用智能藥箱,該藥箱可實現對藥品的智能化管理,可監控藥箱內所存放藥品的保質期,同時可以設置鬧鐘定時提醒用戶服藥,解決了現有藥箱存在的問題,可有效避免藥品誤服、錯服、漏服的情況。
該家用智能藥箱結構設計如圖1 所示。其箱體為三層抽屜結構,每個抽屜通過隔板分隔成多數量的存儲格,抽屜兩側設置有滑軌,抽屜通過滑軌設置在箱體中,并在抽屜兩側設有電磁鎖,用以控制抽屜的開閉。在每層抽屜以及抽屜的存儲格中均設有LED 燈,用以指示藥品所處位置。觸摸顯示屏嵌在箱體的上表面,用于和用戶交互,通過觸摸顯示屏實現對藥箱的控制。上表面還設有開關,用以控制藥箱的開啟、關閉。箱體底部設有蜂鳴器,通過蜂鳴器向用戶發出聲音提醒,提醒用戶按時吃藥,或者提醒藥箱內有藥品即將過期。箱體頂部設有電氣層,用以放置控制器、電源及繼電器等電氣元件。

圖1 家用智能藥箱結構設計示意圖
家用智能藥箱主菜單界面設計如圖2 所示。該家用智能藥箱除具有現有家用藥箱的存儲功能外,還具有存儲藥品相關信息,自動計算過期時間、及時提醒用戶更換,定時提醒用藥等功能。

圖2 家用智能藥箱主菜單界面設計
用戶通過電容觸摸屏編輯存放藥品的名稱、生產日期、保質期、主要療效的相關信息,系統會依據藥品信息給出存儲位置建議供用戶選擇,用戶確定存放位置后,相應層抽屜的電磁鎖開關被打開,使藥箱相應層的抽屜沿導軌自動彈出,同時存儲位置的LED 燈亮起,用戶將藥品放入后將抽屜關上,電容觸摸屏會顯示存放成功的字樣。
藥品取出過程與存放過程類似,用戶通過電容觸摸屏輸入藥品名稱或是藥品存放位置確認所要取出的藥品,相應層抽屜的電磁鎖開關被打開,使藥箱相應層的抽屜自動彈出,同時存儲位置的LED 燈亮起,用戶將藥品取出后將抽屜關上,電容觸摸屏會顯示存放成功的字樣。
通過藥品信息存儲系統,用戶可以查看藥箱中所存藥品的名稱、存放位置、過期時間等相關信息,并在藥品過期前30 d 通過藥箱底部的蜂鳴器提醒用戶及時處理,并通過電容觸摸屏顯示過期藥品相關信息。如藥品已過期,則會在藥品列表中顯示已過期的狀態,同時在用戶取藥時也會判斷藥品是否過期,以防止服用過期藥物導致意外發生。此外,用戶還可以根據醫囑,設置服藥鬧鐘,藥箱會在指定時間通過蜂鳴器和觸摸顯示屏提醒用戶服藥,最多可支持設置4 個服藥鬧鐘。
藥品建議部分列舉了多數家用藥箱中常備的列表清單供用戶參考[3]。用戶可以根據此清單來儲備藥品,以備不時之需,也可以在此基礎上添加自己需要的藥品。
本文控制部分基于Arduino UNO 開發板設計??刂葡到y如圖3 所示,9 V 電源模塊為控制電路供電,Arduino 與電容觸摸屏使用I2C 方式通信,完成控制命令和數據傳輸,從DS1302 時鐘模塊獲取實時時間,并通過I/O 口控制指示燈、蜂鳴器、電磁鎖做出相應動作。

圖3 控制系統組成
相較于其他單片機(例如STM32 等)而言,Arduino具有編程簡單、易于上手的優點,且價格相對便宜。Arduino UNO 采用ATmega328 微控制器,有14 個數字輸入/輸出引腳、6 個模擬輸入引腳,支持UART 串口通信、I2C 通信和SPI 通信等多種通信模式。可通過官方提供的Arduino IDE對其進行編程,使用便捷,并支持加載第三方的函數庫。
Arduino UNO 與vLcds HMI 電容觸摸屏通過I2C 數字化串口連接,采用雙線(SDA、SCL)方式進行雙向分時通信,該方式可以通過串口地址識別總線上的不同類型器件,是器件間主要接口類型。I2C 接口利用這兩條線上信號的變化,實現物理比特傳輸,并按規定的數據格式進行信息交換,完成控制命令和數據傳輸[4],其具體接線方式如表1 所示,VCC和GND 引腳分別連接Arduino 的5 V 和GND 引腳,為觸摸屏供電;SDA、SCL 引腳連接Arduino I2C 通信接口SDA 和SCL;INT 信號引腳連接Arduino 外部中斷復用端口D2,用于接收中斷觸發信號,進入中斷服務程序。

表1 Arduino UNO 與vLcds HMI 電容觸摸屏接線方式
MH 實時時鐘模塊集成了DS1302 實時時鐘芯片、32 768 Hz晶振和CR2032 紐扣電池。在Arduino 控制程序中通過DS1302 函數庫驅動DS1302 時鐘芯片獲取時間、日期等信息。使用DS1302_SetTime 函數設置當前時間和日期,把程序燒錄至時鐘芯片后將該命令注釋掉,再次燒錄,所設置時間便儲存在時鐘芯片的內存中。使用DS1302_GetTime 函數將實時的時間、日期信息作為返回值輸出,即可獲得實時的時間、日期信息。當藥品的生產日期和保質期信息被錄入后,控制程序自動計算過期時間,通過比較實時日期以判斷藥品是否過期。
藥箱的單層抽屜采用12 V 四線電磁鎖開關進行控制,由單獨的12 V 電源模塊供電,使用Arduino 的數字I/O 引腳驅動繼電器對其進行控制,只需對其提供0.5 s 的高電平即可開啟。該電磁鎖除電源線和接地線外,還有2 根線,具有檢測開關狀態的功能,根據不同的返回值,可以對電磁鎖開關的狀態進行判斷,進而判斷單層抽屜的開關狀態,從而避免忘記關閉藥箱情況的發生。
本文提出的家用智能藥箱相較于傳統藥箱實現了對藥品信息的存儲與管理,且方便存取,可提醒人們藥品過期,對常見病癥可提供用藥建議,具有傳統家用藥箱不具有的智能化功能。同時為適應智能家居的發展,這套信息存儲系統可應用于智能衣柜、智能冰箱等其他智能家居領域。未來,還可以設計配套的手機應用程序,可實現遠程操作,能夠隨時隨地了解家中藥箱的一切情況,避免家中常備藥品過期情況的發生。