侯向鋒,鄧 楠,羅德州,張 瓏
(湖北師范大學(xué) 物理與電子科學(xué)學(xué)院,湖北 黃石 435002)
目前,醫(yī)院和藥房大多由人工售藥,且多數(shù)藥房夜間不營業(yè)。醫(yī)院取藥窗口前長長的隊伍,不僅讓藥師疲憊不堪,也讓取藥人等得著急。當病人夜間急需用藥時,藥房處于停止營業(yè)狀態(tài),給購藥帶來不便[1,2]。隨著自助服務(wù)終端的迅速發(fā)展和醫(yī)療服務(wù)水平的提高,無人售藥系統(tǒng)應(yīng)運而生。國內(nèi)已有的無人售藥系統(tǒng)均可以實現(xiàn)自動售藥及結(jié)賬,但是有些完全沒有自動上藥功能[3,4],有的可以利用掃碼器半自動上藥[5]。此外,這些自動售藥系統(tǒng)大多不能自動審核取出的藥是否正確。針對存在的問題,本文利用互聯(lián)網(wǎng)和圖像識別技術(shù)設(shè)計了一款基于云端具有自動上藥和審核功能的智能售藥系統(tǒng)。
智能售藥系統(tǒng)主要由主控模塊、GPRS(General Packet Radio Service,通用無線分組業(yè)務(wù))通訊模塊、藥品識別模塊、動作控制模塊、環(huán)境監(jiān)測模塊和人機界面(Human Machine Interface, HMI)組成。該售藥系統(tǒng)通過GPRS通訊模塊實現(xiàn)與云端服務(wù)器的通訊。計算機和手機作為終端控制器可實時監(jiān)控售藥系統(tǒng)中藥品的庫存情況、實收金額以及環(huán)境的溫濕度。系統(tǒng)硬件的整體框圖如圖1所示。
圖1 硬件的整體框圖
主控模塊采用以微處理器STM32F429ZET6為核心的自主設(shè)計的智能售藥系統(tǒng)控制電路板,其尺寸為13cm×14cm×1.6cm.STM32F429ZET6是由ST公司開發(fā)的基于ARM Cortex-M4內(nèi)核的最高工作頻率為168MHz的32位處理器,具有2MB Flash、256+4KB SRAM、168個中斷I/O口、21個通信接口、IEEE 1588V2 10/100M的以太網(wǎng)接口,滿足售藥系統(tǒng)的控制處理及數(shù)據(jù)同步,為售藥系統(tǒng)入網(wǎng)省去同步和通信處理的負擔(dān),方便系統(tǒng)擴展。
STM32F429ZET6的引腳USART2、USART3、USART4和USART5分別與人機界面、藥品識別模塊和GPRS通訊模塊相連。
藥品識別模塊采用智能攝像頭OpenMV4 H7 Cam.它是一款基于處理器STM32H743VI的低功耗的圖像識別模塊[6],具有Lenet數(shù)字識別、條形碼識別、二維碼識別、顏色識別、形狀識別等功能。STM32H743VI具有480 MHz超高主頻、1MB RAM、2 MB Flash,能夠快速地處理圖像并通過串口將處理后的數(shù)據(jù)發(fā)送給主控模塊。上藥端OpenMV和取藥端OpenMV的USART分別與STM32F429ZET6的USART3和USART4相連。本系統(tǒng)主要應(yīng)用其條形碼識別以及文字輔助識別的功能,來獲取藥品的名稱、生產(chǎn)廠家以及條形碼編號,并與服務(wù)器中數(shù)據(jù)進行對比再做出相應(yīng)的動作。
動作控制模塊主要由電機、電渦流傳感器、紅外感應(yīng)傳感器、電磁閥、真空吸盤、真空發(fā)生器和氣動推桿組成。電機選用銳特57閉環(huán)伺服電機,采用上下雙X軸驅(qū)動控制結(jié)構(gòu)控制推桿的水平位置,以保證整個電機組穩(wěn)定地運行。Y軸電機控制推桿的垂直位置,使推桿可以精準到達售藥系統(tǒng)中每個儲藥盒所在的位置。電機由銳特CL57大電流驅(qū)動器提供動力。三個CL57的端口EA、DIR分別與STM32F429ZET6的引腳PA4、PA5、PA6、PA7、PC10、PC12相連,控制電機的使能以及運動方向。X軸的兩個電機驅(qū)動器CL57的端口PUL都與STM32F429ZET6的引腳PA2相連,Y軸電機驅(qū)動器CL57的端口PUL與STM32F429ZET6的引腳PC8相連,控制電機的運動距離。
電渦流傳感器、紅外感應(yīng)傳感器分別與STM32F429ZET6的PD0、PD1、PD2、PD3、PD13、PD14、PD15相連。電渦流傳感器檢測電機運動的定位,紅外感應(yīng)傳感器檢驗藥品是否完全移出儲藥盒,它們都是下降沿觸發(fā)的外部中斷。動作控制模塊電路原理圖如圖2所示。
圖2 動作控制模塊電路原理圖
真空發(fā)生器采用正泰CV-15/25HS 負壓發(fā)生器,配合科士達SMC ZPT系列的真空吸盤能夠產(chǎn)生超強的吸力。
藥品的儲存條件較為嚴格,因此需要對售藥系統(tǒng)的溫度、濕度實時監(jiān)測,并且進行相應(yīng)的補償措施。溫濕度監(jiān)測采用溫濕度傳感器DHT11.為了能準確測得藥柜的溫濕度,本系統(tǒng)采用分布式測量,并通過GPRS將柜內(nèi)的溫濕度上傳至云端。藥柜為半封閉環(huán)境,在藥柜內(nèi)設(shè)置小型干燥器,當濕度過大時可進行干燥。當溫度過高時,開啟降溫設(shè)備。
GPRS通訊模塊選用的是由有人物聯(lián)網(wǎng)有限公司開發(fā)的一款工業(yè)級多頻段NB-loT模塊USR-GPRS232-7S3,該模塊可工作在GSM850/900和DCS1800/1900四個頻段,具有短信透傳、網(wǎng)絡(luò)透傳、HTTPD、UDC 等多種工作模式,支持 GSM/GPRS 網(wǎng)絡(luò)以及4 路網(wǎng)絡(luò)連接同時在線[7]。USR-GPRS232-7S3的USART與STM32F429ZET6的USART4相連可實現(xiàn)串口與網(wǎng)絡(luò)的雙向數(shù)據(jù)透明傳輸。因此,智慧售藥系統(tǒng)的實時信息可同步到透傳云端服務(wù)器。手機端或計算機端可對售藥系統(tǒng)進行遠程實時監(jiān)控和訪問,讓用戶有良好的體驗。
市場上大多數(shù)的OTC藥品均為盒裝,表面光滑易于吸取,綜合考慮系統(tǒng)的功能和成本,上藥和取藥均采用吸盤。在上藥和取藥時移動藥品的過程中吸盤處于水平吸取和垂直吸取兩種典型方式,如圖3所示。
圖3 吸盤的典型工作方式
本文選用硅膠吸盤,其直徑為:
(1)
其中m為被吸取藥品的質(zhì)量,這里按1kg計算;g為重力加速度;為安全系數(shù),水平吸取時,垂直吸取時,本文中取8;為吸盤的個數(shù),本文中n為1;P為吸盤內(nèi)的真空壓力,為了提高吸盤的吸著能力,縮短吸著響應(yīng)時間,P一般取真空發(fā)生器的最大真空度的63%至95%,本文取83.3%.真空發(fā)生器CV-15/25HS提供0.1~0.6Mpa的負壓,本文選取負壓值為0.5Mpa.
根據(jù)公式(1)并考慮安全問題結(jié)合實際吸盤尺寸,最終選取直徑為20mm的吸盤。
售藥系統(tǒng)中每個儲藥盒的底部預(yù)留兩個螺孔,可將其固定在售藥系統(tǒng)的平臺上。儲藥盒的后端留空,其前端有擋板。側(cè)面由兩個M5孔徑的螺母、兩個M4孔徑的螺母、一只M4直徑的螺栓組成。兩個M5孔徑的螺母固定在儲藥盒側(cè)面,用于支撐螺栓,而兩個M4孔徑的螺母用于調(diào)節(jié)擋板的間距。擋板上方設(shè)置一紅外感應(yīng)傳感器,用于檢測藥品是否被完全推出。
系統(tǒng)開機后,微處理器STM32F429ZET6對人機界面HMI、動作控制模塊、藥品識別模塊、GPRS通訊模塊進行初始化。默認情況下系統(tǒng)進入主菜單界面,用戶可通過點擊“開始購藥”進行購藥,管理員可點擊“管理員模式”輸入密碼查詢售藥系統(tǒng)的銷售情況和自動上藥。
系統(tǒng)首先需要打開串口2、3、4、5及相關(guān)端口的時鐘,接著設(shè)置I/O狀態(tài)及相應(yīng)的波特率,設(shè)串口2的波特率為9 600bps,設(shè)串口3、串口4和串口5的波特率為115 200bps,配置為1位起始位、8位數(shù)據(jù)位、無奇偶校驗位及1位停止位,使能接收緩沖區(qū)非空中斷,并設(shè)置中斷優(yōu)先級。然后打開外部中斷的相關(guān)時鐘,設(shè)置I/O口的狀態(tài)為下降沿觸發(fā),并設(shè)置相應(yīng)的寄存器以及優(yōu)先級。最后對TIME2、TIME8進行初始化設(shè)置。
當系統(tǒng)處于主菜單界面時,用戶點擊“開始購藥”后,可通過人機界面選擇所需藥品然后根據(jù)結(jié)算信息利用移動支付完成付款。智能售藥系統(tǒng)收到支付完成的消息后,先優(yōu)化取藥路徑,再啟動動作控制模塊取藥。在取藥的同時啟動藥品識別模塊中的取藥核對OpenMV對取出藥品逐一地核驗。若取出的藥品與用戶的選擇一致,則將其放入藥筐中;若不一致,則將該藥品回收,并給用戶重新取所需的藥品,直到取出的藥品與用戶的選擇一致為止。當選擇的藥品全部取出,則打印清單,用戶完成取藥。
當系統(tǒng)處于主菜單界面時,管理員點擊“管理員模式”后,通過人機界面不僅可以訪問售藥系統(tǒng)的銷售數(shù)量、實收金額、藥品庫存量等,還可以查看系統(tǒng)所處環(huán)境的溫濕度和實現(xiàn)自動上藥。上藥時藥品識別模塊中的上藥識別OpenMV首先對藥品進行識別,如果系統(tǒng)中已有此藥,則通過吸盤將之運送到相應(yīng)的儲藥盒之中;如果是新藥,則創(chuàng)建藥品信息,并根據(jù)藥盒尺寸分配新的儲藥盒并運送到該儲藥盒中。軟件整體流程圖如圖4所示。
圖4 軟件的整體流程圖
人機界面采用面向?qū)ο蟮木幊陶Z言進行設(shè)計。開機時人機界面處于主菜單界面。此界面包括“開始購藥”“管理員”和“語音求助”三個按鈕。用戶以及管理員都是通過HMI選擇系統(tǒng)的工作模式。不管是用戶選擇藥品以及數(shù)量,還是管理員統(tǒng)計庫存或上藥,都通過串口發(fā)送指令給主控制器進行數(shù)據(jù)處理。部分人機界面顯示如圖5所示。
(a)主菜單界面
智能售藥系統(tǒng)自動上藥時需要對藥品識別,用戶取藥時需要對藥品審核,這分別由上藥OpenMV和取藥OpenMV來實現(xiàn)。系統(tǒng)中的OpenMV可以采用條形碼掃描和文字輔助處理兩種方式進行識別。當一種藥品被OpenMV鋪捉到時,哪一種信息先被捕捉到就先對它進行處理,快速地得到藥品的信息,進而提高系統(tǒng)上藥和取藥的效率。
OpenMV采用Python語言編程,本系統(tǒng)調(diào)用相應(yīng)的處理函數(shù)對條形碼和文字識別,并將得到的返回值通過串口發(fā)送給微處理器STM32F429ZET6進行處理。上藥OpenMV和取藥OpenMV工作流程一樣,其流程圖如圖6所示。
圖6 識別模塊流程圖
主控芯片將數(shù)據(jù)通過串口發(fā)送出去,在后臺檢測藥品的數(shù)量信息,以做到及時的補充藥品。當OpenMV在取藥時掃描到與用戶選擇的藥品不一致時,還會通過串口向云端傳輸數(shù)據(jù)顯示藥品掃描錯誤的信息,提示管理員。
DHT11與主控芯片的I/O相連接,設(shè)置為推挽輸出,初始化為高電平,通過I/O口讀取40bit的數(shù)據(jù),高16位為濕度,中間16位為溫度,低8位為校驗和,在主程序中判斷校驗數(shù)據(jù)是否等于溫度與濕度的byte之和,如果是則成功讀取一次溫濕度,將溫濕度數(shù)據(jù)通過GPRS同步至云端[8],實時監(jiān)控。其監(jiān)控平臺如圖7所示。
圖7 透傳云監(jiān)控顯示
藥品存放在相應(yīng)的儲藥盒之中,通過前期的多次試驗,記錄儲藥盒的二維坐標。當用戶同時選取了多種藥品時,就會出現(xiàn)先取哪一種藥后取哪一種藥的問題。為了提高取藥效率,本設(shè)計在優(yōu)化取藥的路徑上選用蟻群算法[9~12]。系統(tǒng)將用戶選取的藥品的坐標存放于一個數(shù)組中,動作控制模塊根據(jù)此數(shù)組的坐標來控制電機X和電機Y運動到相應(yīng)的位置。
本文在實驗室搭建了具有個儲藥盒的智能售藥系統(tǒng)模型,并選用16種不同藥品,每種藥品10盒進行測試,其中14種藥品系統(tǒng)中已經(jīng)存有信息,另外2種藥品售藥系統(tǒng)中還沒有出現(xiàn)過。
系統(tǒng)在管理員模式下對14種系統(tǒng)中已經(jīng)有的藥品,每種藥品10盒進行上藥。最終系統(tǒng)以100%的正確率把140盒藥放入到相應(yīng)的藥盒中。系統(tǒng)對2種系統(tǒng)中未錄入過的藥品,每種10盒進行上藥。測試表明系統(tǒng)能自動給這2種藥分配儲藥盒并以100%的正確率將20盒藥送入相應(yīng)的儲藥中。
在16種不同藥品,每種藥品10盒正確放入對應(yīng)的16個儲藥盒后,按照表1中4種取藥方案取藥,每種藥品只取1盒。每種取藥方案都測試2次按選藥順序取藥所需的時間,測試3次按本文優(yōu)化路徑取藥所需的時間。取藥的所有測試中,云端監(jiān)控沒有接收到報警信息,取藥正確率為100%.測試結(jié)果如表2所示。
表1 取藥方案
表2 取藥時間與取藥正確率
將16個儲藥盒中都故意錯放入1盒其他藥品,然后按照表1的取藥方案依次取藥。每次錯誤取藥系統(tǒng)都通過發(fā)信息的方式告知管理員取藥有誤,并在云端監(jiān)控有記錄取藥錯誤的信息。圖8是某次取藥錯誤時的云端報警界面。
圖8 取藥錯誤報警界面
智能售藥系統(tǒng)中16種藥品全部或部分藥品的數(shù)量到了5盒以下,系統(tǒng)都通過串口向云端發(fā)送數(shù)據(jù)提醒該藥品不足。圖9是某次測試時斯達舒數(shù)量不足時的報警界面。
圖9 藥品數(shù)量不足時報警界面
本文設(shè)計的智能取藥系統(tǒng)利用真空吸盤及氣動推桿實現(xiàn)全自動上藥和取藥,并通過GPRS通訊實現(xiàn)售藥系統(tǒng)的云端監(jiān)控。此外,在上藥和取藥端采用OpenMV實現(xiàn)藥品審核的雙重保障,提高了系統(tǒng)自動上藥和取藥的安全性。測試結(jié)果表明,該系統(tǒng)具有上藥、取藥準確率高,工作效率高,自動化程度高的優(yōu)點。智能售藥系統(tǒng)對線上就診的推廣具有重要意義。