武宇星 韓祥森
摘? 要:為幫助慢性病人養(yǎng)成良好的吃藥習慣,設計了基于壓力傳感器的智能藥盒。其內(nèi)設有開蓋檢測模塊和計時模塊,可實時檢測用戶是否在規(guī)定的吃藥時間內(nèi)打開藥盒。若未在規(guī)定的吃藥時間內(nèi)開啟藥盒,會提醒用戶按時吃藥,內(nèi)設壓力傳感器模塊,可檢測藥盒內(nèi)的藥品是否減少,并且智能藥盒與手機APP之間采用Wi-Fi連接,能夠讓病人及其家人通過手機APP實時查看藥品的使用情況和藥品的儲存情況。實驗結果表明系統(tǒng)運行穩(wěn)定,可滿足用戶實際要求。
關鍵詞:計時模塊;Wi-Fi;APP顯示
中圖分類號:TH788;TP212? ? ? 文獻標識碼:A 文章編號:2096-4706(2021)07-0029-05
Design of Intelligent Medicine Box System Based on
Arduino Single-Chip Microcomputer
WU Yuxing,HAN Xiangsen
(Shandong Huayu University of Technology,Dezhou? 253034,China)
Abstract:In order to help chronic patients develop good habit of taking medicine,an intelligent medicine box based on pressure sensor is designed. It is equipped with a cover opening detection module and a timing module,which can detect in real time whether the user opens the medicine box or not within the specified medication time. If the medicine box is not opened within the specified medication time,the user will be reminded to take the medicine on time. A pressure sensor module is built in to detect whether the drugs in the medicine box are reduced,and the intelligent medicine box is connected with the mobile APP by Wi-Fi. It enables patients and their families to view the use and storage of drugs in real time through mobile APP. The experimental results show that the system runs stably and can meet the actual requirements of users.
Keywords:timing module;Wi-Fi;APP display
收稿日期:2021-03-14
基金項目:2020年山東省大學生創(chuàng)新創(chuàng)業(yè)訓練項目(S202013857021)
0? 引? 言
隨著社會的發(fā)展和人們生活水平的提高,人們對身體健康的追求也越來越高,人們對用藥的安全也越來越關注,時刻在影響著人們的身體健康。如果錯誤地使用藥物、不按照醫(yī)囑使用藥物會導致身體出現(xiàn)不適藥物中毒,更嚴重者會導致死亡。如果錯過吃藥的最佳時間,則會導致藥物不能發(fā)揮最大的作用,影響到疾病的治療。在服用藥物的時候我們大多數(shù)人都會忽視了藥物的有效期,導致服用過期藥物,這不僅不能幫助治愈疾病還可能導致毒素進入身體。針對以上問題,市面上出現(xiàn)了許多智能電子藥盒以及相關產(chǎn)品,但是,這些藥盒往往設計過于簡單,只是用于提醒用戶吃藥,但是對于患者提前打開藥盒后是否吃藥的情況無法判斷,并不能很好地對用藥情況進行監(jiān)測,患者的家人也無法及時查看患者的用藥情況,這就導致了智能藥盒難以普及。筆者基于大學生創(chuàng)新創(chuàng)業(yè)項目對基于Arduino單片機的智能藥盒系統(tǒng)進行了設計與開發(fā),實現(xiàn)了實時檢測用戶是否在規(guī)定的吃藥時間內(nèi)打開藥盒,并通過鬧鐘提醒用戶按時吃藥,同時智能藥盒通過無線模塊與用戶手機APP連接,可以實時查看藥品使用及存儲情況。
1? 系統(tǒng)總體設計方案
本智能藥盒中所使用的壓力傳感器為高精度的電阻應變式壓力傳感器,這種傳感器精度極高,量程較小。在設計本藥盒時,使用壓力傳感器組成全橋電路,與專用高精度電子秤的24位A/D轉換器芯片HX711連接在一起,實現(xiàn)對藥品重量的高精度測量。HX711這種高精度電子秤專用的高精度的AD轉換模塊,精確度較高,使用簡單。系統(tǒng)控制核心為Arduino單片機,具體芯片型號為Atmega328P,這款單片機是開源的硬件開發(fā)平臺,其因具有處理速度較快,資料多,操作與編程簡單,芯片不容易燒壞,外設豐富等優(yōu)點被廣泛應用于系統(tǒng)設計中,故采用該單片機作為控制核心。
本藥盒使用DS12C887時鐘芯片作為計時模塊的核心,該芯片可以很容易地實現(xiàn)各種時間的獲取,其自帶晶體振蕩器和鋰電池,可以實現(xiàn)在沒有外部電源供電的情況下,持續(xù)工作10年,它還具有3種可編程中斷,可通過編程實現(xiàn)多種方波的輸出,因其性能優(yōu)越,在各種儀器設備以及工業(yè)控制系統(tǒng)中具有廣泛的應用。經(jīng)過綜合比較考慮后,最終確定了整個系統(tǒng)主要由Arduino核心控制模塊、壓力傳感器模塊、ESP8266無線模塊、計時模塊、報警模塊及手機APP等部分組成。
在對本藥盒進行總體系統(tǒng)設計時,首先將每一個系統(tǒng)組成部分進行分步研究設計,然后將各模塊組合起來,減少各模塊間的干擾因素,確定各模塊可以獨立工作,最后形成一個完整的藥盒系統(tǒng)。系統(tǒng)總體設計框圖如圖1所示。
本藥盒系統(tǒng)在開始工作時首先進行自校準,實時檢測系統(tǒng)是否正常工作,若系統(tǒng)不能正常工作則會向用戶進行報警。當用戶將藥品放入藥盒時,系統(tǒng)會通過手機APP指引用戶進行用藥設置。當用戶設定好吃藥時間而未在規(guī)定的時間內(nèi)開啟藥盒,則手機APP和警報模塊會發(fā)出報警提醒用戶按時吃藥,另外,本藥盒還可通過開蓋檢測模塊和壓力檢測模塊來精準檢測用戶是否取藥,所有的用藥信息及藥品存儲信息都會在手機APP上進行顯示,可供用戶實時查看,操作簡單,方便快捷。
2? 理論分析與計算
電阻應變式壓力傳感器工作時,通過彈性敏感元件將力的變化轉化為形變,然后利用電阻應變片的應變效應轉換成電阻的變化量? 。其中,計算其轉化時,設引起的電阻阻值變化為ΔR,伸長量為Δl,電阻率變化量為Δρ,橫截面積相應減少量為ΔS,則有:
式中為電阻式的軸向應變,用ε表示,電阻應變片的電阻應變?yōu)?,電阻絲的縱向伸長和橫向收縮關系用泊松比μ表示為:
式中,k0稱為電阻絲的靈敏系數(shù),表示電阻絲產(chǎn)生單位形變時電阻值相對變化的大小,受材料的幾何尺寸和材料的電阻率隨應變發(fā)生變化兩個因素的影響。
由于應變片電阻的變化比較小,需要經(jīng)過檢測電路將電阻值的變化轉換成電壓或電流的變化,才能用電測儀表進行測量。常用的檢測電路有單臂電橋、兩臂差動電橋與全橋電路,在本藥盒系統(tǒng)中選用的檢測電路為全橋差動電路,其輸出電壓的靈敏度較高,電路圖如圖2所示。
根據(jù)電阻應變片的常用檢測電路的計算方法,我們可知,一般電橋的輸出電壓為:
U0=Ui
對于全橋電路輸出電壓計算時,設初始值R1=R2=R3= R4,工作時ΔR1=-ΔR2=ΔR3=R4=ΔR,可得電路的輸出電壓:
U0=Ui
在得到壓力傳感器的輸出電壓后,經(jīng)過HX711 24位高精度A/D轉換芯片進行數(shù)據(jù)采集,然后傳遞給Arduino單片機對采集數(shù)據(jù)進行運算處理,最終轉換成相應的重量數(shù)值,完成重量的測量。
3? 硬件電路與軟件設計
3.1? 硬件電路設計
本智能藥盒系統(tǒng)核心控制器采用了Arduino單片機,該單片機的運算能力強,處理速度較快,用其來完成重量數(shù)據(jù)的采集、運算處理以及計時模塊的時間轉換極大程度上提高了系統(tǒng)的靈敏度與準確性。
根據(jù)系統(tǒng)實際設計時的需求,在電阻應變式壓力傳感器的基礎上,使用HX711 24位高精度A/D轉換芯片設計了重量測量模塊電路,HX711高精度AD轉換芯片采用差分輸入電路,串口輸出的方式,滿額度的差分輸入范圍為±16.8 mV,工作在5 V的電壓條件下,采樣精度為24位,有較高的抗干擾共模抑制比,其高采樣精度和高共模抑制比可以保證對微弱信號進行數(shù)據(jù)采集的準確性。
使用DS12C887時鐘芯片設計了計時模塊電路,該電路在沒有外部供電的情況下,也能夠正常工作,不會因系統(tǒng)掉電產(chǎn)生任何影響,它可計算到2 100年前的秒、分、小時、星期、日期、月、年七種日歷信息并帶閏年補償,當芯片的輸入電壓為5 V時,用戶可以直接訪問其芯片RAM中的數(shù)據(jù),并可對其進行讀、寫操作,當芯片的輸入電壓小于3 V時,芯片會自動將電源切換到內(nèi)部自帶的鋰電池,以保證內(nèi)部的電路能夠正常工作。
使用ESP8266無線模塊將藥盒與手機APP連接起來,可保證用戶實時查看藥品的使用及存儲情況,確保藥盒系統(tǒng)的正常運行。
除此之外,本藥盒系統(tǒng)還有報警提醒模塊,其主要由LED和蜂鳴器組成。當稱量藥品的重量超出預先設定的范圍時會發(fā)出報警提示同時在手機上顯示相關警告內(nèi)容,或者當?shù)竭_規(guī)定的吃藥時間而未取藥時,也會報警提醒用戶已到達吃藥時間,提醒用戶吃藥。
系統(tǒng)使用LM7805可調(diào)降壓模塊將12 V鋰電池電壓轉換成5 V電壓給整個系統(tǒng)進行供電,在搭建完基本模塊電路后,對各模塊進行測試分析,確定系統(tǒng)能正常運行后,將各部分組合,整體電路圖如圖3所示。
3.2? 軟件設計
系統(tǒng)軟件整體流程圖如圖4所示,系統(tǒng)開啟后,程序會對包括單片機在內(nèi)的各模塊進行初始化,然后單片機會啟動HX711、DS12C887、ESP8266讀寫函數(shù)、實時獲取壓力數(shù)據(jù)、時間數(shù)據(jù)及APP顯示數(shù)據(jù)并通過中值濾波算法以及單片機內(nèi)部對數(shù)據(jù)進行運算處理,最終得到實際數(shù)值。
以HX711對采集的壓力數(shù)據(jù)進行轉換及濾波為例,部分核心轉換程序及中值濾波算法程序為:
函數(shù)功能:簡單中值濾波
入口參數(shù):無
返回值:無
void setup() {
Serial.begin(9600);//串口初始化
Serial.println("Initializing the scale");//系統(tǒng)模塊初始化
scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
Serial.println("Before setting up the scale:");
Serial.print("read: \t\t");
Serial.println(scale.read());// 讀取A/D模塊采集的數(shù)據(jù)
Serial.print("read average: \t\t");
Serial.println(scale.read_average(20));//讀取未設定時AD模塊采集的多個數(shù)據(jù),打印平均值
Serial.print("get value: \t\t");
Serial.println(scale.get_value(5));//打印5個未設定時AD讀取的平均值
Serial.print("get units: \t\t");
Serial.println(scale.get_units(5), 1); //打印5個ADC讀數(shù)的平均值減除以傳感器設定參數(shù)
scale.set_scale(2280.f);
scale.tare();// 讓傳感器歸0
Serial.println("After setting up the scale:");
Serial.print("read: \t\t");
Serial.println(scale.read());//輸出讀取的ADC數(shù)值
Serial.print("read average: \t\t");
Serial.println(scale.read_average(20));//讀取設定后AD模塊采集的多個數(shù)據(jù),打印其平均值
Serial.print("get value: \t\t");
Serial.println(scale.get_value(5)); //打印5個測量重量的平均值
Serial.print("get units: \t\t");
Serial.println(scale.get_units(5), 1);// 輸出重量數(shù)據(jù)
Serial.println("Readings:");
}
4? 實驗測試與分析
最終本藥盒系統(tǒng)包括硬件與手機APP,如圖5所示,該系統(tǒng)供電后開始運行,當系統(tǒng)在正常運行過程中按下復位鍵后系統(tǒng)會重新啟動。該系統(tǒng)的操作過程簡單,將需要被稱重的藥品放在稱重臺面上,系統(tǒng)會自動進行重量檢測,當所稱重的物體重量一旦超過最大的可稱重數(shù)值后,裝置將會自動的發(fā)出警報聲。本系統(tǒng)通過手機APP進行定時時間的設定,并在APP同一界面顯示當前藥物的剩余量。
圖5中所示的藥盒系統(tǒng)正在測量藥品的重量,通過圖片可看到手機APP界面實時顯示設定的吃藥時間和藥品的剩余數(shù)量。可以看出藥盒中的藥品數(shù)量與APP顯示界面的剩余藥品數(shù)量是一致的。
在對藥品的重量進行測試時,使用每顆重量為0.3 g的小球模擬真實的藥品對其重量進行測量,在對藥品重量的測試過程中,選用了標準的電子秤作對比測試,以保證測量的數(shù)據(jù)準確性與可靠性。藥品的重量信息經(jīng)過Arduino單片機處理后通過串口通信在上位機界面進行顯示,手機APP中顯示藥品的數(shù)量,經(jīng)過多次的實際測量,不斷的對系統(tǒng)測量的數(shù)據(jù)進行對比分析,對系統(tǒng)進行改進完善,最后得到如表1所示的測量數(shù)據(jù)。
從以上測量數(shù)據(jù)可以看出,本藥盒系統(tǒng)測量出來的藥品重量與專業(yè)電子秤測量出來的數(shù)據(jù)基本一致,測量誤差不超過0.01%,滿足系統(tǒng)的準確度與精確度要求。
除此之外,對于其他模塊的性能也進行過多次測試,通過與手機自帶的計時軟件對計時模塊進行多次對比測試,對ESP8266無線模塊的靈敏度與在保證傳輸數(shù)據(jù)準確的情況下,發(fā)送數(shù)據(jù)的時延作為對其測試的重點。測試表明本系統(tǒng)性能良好,準確度較高,靈敏性較強,能夠滿足設計的要求。
5? 結? 論
該系統(tǒng)對基于Arduino的智能藥盒系統(tǒng)進行了設計,設計了一種基于快速且高精度的數(shù)據(jù)采集傳感器的智能藥盒系統(tǒng)設計方案,可提醒用戶按時吃藥,通過手機APP實時查看藥品使用及存儲情況。在上述基礎上加入了報警模塊來對用戶進行提醒,并在程序中采用了中值濾波算法提高數(shù)據(jù)處理的精確性。智能藥盒可廣泛應用于健康管理機構、醫(yī)院、科研機構等,一方面可以管理用戶的真實服藥狀況,培養(yǎng)用戶的服藥習慣,使服藥計劃可以得到順利實施;另一方面也可以根據(jù)用戶的健康狀況,實時調(diào)整用戶的服藥計劃,減少過度治療的情況發(fā)生。通過實驗測試可知,本設計方案具有傳輸速率快、準確性高、功耗低、成本低等特點,而且符合模塊化設計思路,便于日后擴展其他功能,滿足人們的需求,具有一定的實用價值。
參考文獻:
[1] 葛海江.基于HX711的高精度電子稱重研究 [J].電子測試,2019(10):31-32.
[2] 李明明,俞宏霖,王薇.基于DS12C887芯片的實時時鐘設計與研究 [J].軟件導刊,2017,16(2):106-109.
[3] 謝文和.傳感器及其應用 [M].北京:高等教育出版社,2003.
[4] 劉巍.應變式傳感器的原理及對應變片性能的測定 [J].科技經(jīng)濟市場,2015(2):102-103.
[5] 汪曲波.船舶推進軸系振動與功率測量分析研究 [D].武漢:武漢理工大學,2009.
[6] 李艷,李新娥,裴東興.應變式壓力傳感器及其應用電路設計 [J].計量與測試技術,2007(12):32-33+36.
[7] 高天學.基于STM32的無線運動傳感節(jié)點設計 [J].現(xiàn)代信息科技,2020,4(24):35-38.
[8] 邱麥迪,任芳,蔣飛.基于STM32的電子稱重系統(tǒng)的設計與實現(xiàn) [J].中國儀器儀表,2020(7):73-76.
[9] 蔡睿妍.Arduino的原理及應用 [J].電子設計工程,2012,20(16):155-157.
作者簡介:武宇星(2000—),男,漢族,內(nèi)蒙古烏海人,本科在讀,研究方向:電子信息工程;韓祥森(1994—),男,漢族,山東淄博人,助教,本科,研究方向:電子與通信技術、智能控制。