武宇星 韓祥森



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