基于Arduino单片机的智能药盒系统设计

2021-10-16 12:45武宇星韩祥森
现代信息科技 2021年7期

武宇星 韩祥森

摘  要:为帮助慢性病人养成良好的吃药习惯,设计了基于压力传感器的智能药盒。其内设有开盖检测模块和计时模块,可实时检测用户是否在规定的吃药时间内打开药盒。若未在规定的吃药时间内开启药盒,会提醒用户按时吃药,内设压力传感器模块,可检测药盒内的药品是否减少,并且智能药盒与手机APP之间采用Wi-Fi连接,能够让病人及其家人通过手机APP实时查看药品的使用情况和药品的储存情况。实验结果表明系统运行稳定,可满足用户实际要求。

关键词:计时模块;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年山东省大学生创新创业训练项目(S202013857021)

0  引  言

随着社会的发展和人们生活水平的提高,人们对身体健康的追求也越来越高,人们对用药的安全也越来越关注,时刻在影响着人们的身体健康。如果错误地使用药物、不按照医嘱使用药物会导致身体出现不适药物中毒,更严重者会导致死亡。如果错过吃药的最佳时间,则会导致药物不能发挥最大的作用,影响到疾病的治疗。在服用药物的时候我们大多数人都会忽视了药物的有效期,导致服用过期药物,这不仅不能帮助治愈疾病还可能导致毒素进入身体。针对以上问题,市面上出现了许多智能电子药盒以及相关产品,但是,这些药盒往往设计过于简单,只是用于提醒用户吃药,但是对于患者提前打开药盒后是否吃药的情况无法判断,并不能很好地对用药情况进行监测,患者的家人也无法及时查看患者的用药情况,这就导致了智能药盒难以普及。笔者基于大学生创新创业项目对基于Arduino单片机的智能药盒系统进行了设计与开发,实现了实时检测用户是否在规定的吃药时间内打开药盒,并通过闹钟提醒用户按时吃药,同时智能药盒通过无线模块与用户手机APP连接,可以实时查看药品使用及存储情况。

1  系统总体设计方案

本智能药盒中所使用的压力传感器为高精度的电阻应变式压力传感器,这种传感器精度极高,量程较小。在设计本药盒时,使用压力传感器组成全桥电路,与专用高精度电子秤的24位A/D转换器芯片HX711连接在一起,实现对药品重量的高精度测量。HX711这种高精度电子秤专用的高精度的AD转换模块,精确度较高,使用简单。系统控制核心为Arduino单片机,具体芯片型号为Atmega328P,这款单片机是开源的硬件开发平台,其因具有处理速度较快,资料多,操作与编程简单,芯片不容易烧坏,外设丰富等优点被广泛应用于系统设计中,故采用该单片机作为控制核心。

本药盒使用DS12C887时钟芯片作为计时模块的核心,该芯片可以很容易地实现各种时间的获取,其自带晶体振荡器和锂电池,可以实现在没有外部电源供电的情况下,持续工作10年,它还具有3种可编程中断,可通过编程实现多种方波的输出,因其性能优越,在各种仪器设备以及工业控制系统中具有广泛的应用。经过综合比较考虑后,最终确定了整个系统主要由Arduino核心控制模块、压力传感器模块、ESP8266无线模块、计时模块、报警模块及手机APP等部分组成。

在对本药盒进行总体系统设计时,首先将每一个系统组成部分进行分步研究设计,然后将各模块组合起来,减少各模块间的干扰因素,确定各模块可以独立工作,最后形成一个完整的药盒系统。系统总体设计框图如图1所示。

本药盒系统在开始工作时首先进行自校准,实时检测系统是否正常工作,若系统不能正常工作则会向用户进行报警。当用户将药品放入药盒时,系统会通过手机APP指引用户进行用药设置。当用户设定好吃药时间而未在规定的时间内开启药盒,则手机APP和警报模块会发出报警提醒用户按时吃药,另外,本药盒还可通过开盖检测模块和压力检测模块来精准检测用户是否取药,所有的用药信息及药品存储信息都会在手机APP上进行显示,可供用户实时查看,操作简单,方便快捷。

2  理论分析与计算

电阻应变式压力传感器工作时,通过弹性敏感元件将力的变化转化为形变,然后利用电阻应变片的应变效应转换成电阻的变化量  。其中,计算其转化时,设引起的电阻阻值变化为ΔR,伸长量为Δl,电阻率变化量为Δρ,横截面积相应减少量为ΔS,则有:

式中为电阻式的轴向应变,用ε表示,电阻应变片的电阻应变为,电阻丝的纵向伸长和横向收缩关系用泊松比μ表示为:

式中,k0称为电阻丝的灵敏系数,表示电阻丝产生单位形变时电阻值相对变化的大小,受材料的几何尺寸和材料的电阻率随应变发生变化两个因素的影响。

由于应变片电阻的变化比较小,需要经过检测电路将电阻值的变化转换成电压或电流的变化,才能用电测仪表进行测量。常用的检测电路有单臂电桥、两臂差动电桥与全桥电路,在本药盒系统中选用的检测电路为全桥差动电路,其输出电压的灵敏度较高,电路图如图2所示。

根据电阻应变片的常用检测电路的计算方法,我们可知,一般电桥的输出电压为:

U0=Ui

对于全桥电路输出电压计算时,设初始值R1=R2=R3= R4,工作时ΔR1=-ΔR2=ΔR3=R4=ΔR,可得电路的输出电压:

U0=Ui

在得到压力传感器的输出电压后,经过HX711 24位高精度A/D转换芯片进行数据采集,然后传递给Arduino单片机对采集数据进行运算处理,最终转换成相应的重量数值,完成重量的测量。

3  硬件电路与软件设计

3.1  硬件电路设计

本智能药盒系统核心控制器采用了Arduino单片机,该单片机的运算能力强,处理速度较快,用其来完成重量数据的采集、运算处理以及计时模块的时间转换极大程度上提高了系统的灵敏度与准确性。

根据系统实际设计时的需求,在电阻应变式压力传感器的基础上,使用HX711 24位高精度A/D转换芯片设计了重量测量模块电路,HX711高精度AD转换芯片采用差分输入电路,串口输出的方式,满额度的差分输入范围为±16.8 mV,工作在5 V的电压条件下,采样精度为24位,有较高的抗干扰共模抑制比,其高采样精度和高共模抑制比可以保证对微弱信号进行数据采集的准确性。

使用DS12C887时钟芯片设计了计时模块电路,该电路在没有外部供电的情况下,也能够正常工作,不会因系统掉电产生任何影响,它可计算到2 100年前的秒、分、小时、星期、日期、月、年七种日历信息并带闰年补偿,当芯片的输入电压为5 V时,用户可以直接访问其芯片RAM中的数据,并可对其进行读、写操作,当芯片的输入电压小于3 V时,芯片会自动将电源切换到内部自带的锂电池,以保证内部的电路能够正常工作。

使用ESP8266无线模块将药盒与手机APP连接起来,可保证用户实时查看药品的使用及存储情况,确保药盒系统的正常运行。

除此之外,本药盒系统还有报警提醒模块,其主要由LED和蜂鸣器组成。当称量药品的重量超出预先设定的范围时会发出报警提示同时在手机上显示相关警告内容,或者当到达规定的吃药时间而未取药时,也会报警提醒用户已到达吃药时间,提醒用户吃药。

系统使用LM7805可调降压模块将12 V锂电池电压转换成5 V电压给整个系统进行供电,在搭建完基本模块电路后,对各模块进行测试分析,确定系统能正常运行后,将各部分组合,整体电路图如图3所示。

3.2  软件设计

系统软件整体流程图如图4所示,系统开启后,程序会对包括单片机在内的各模块进行初始化,然后单片机会启动HX711、DS12C887、ESP8266读写函数、实时获取压力数据、时间数据及APP显示数据并通过中值滤波算法以及单片机内部对数据进行运算处理,最终得到实际数值。

以HX711对采集的压力数据進行转换及滤波为例,部分核心转换程序及中值滤波算法程序为:

函数功能:简单中值滤波

入口参数:无

返回值:无

void setup() {

Serial.begin(9600);//串口初始化

Serial.println("Initializing the scale");//系统模块初始化

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模块采集的数据

Serial.print("read average: \t\t");

Serial.println(scale.read_average(20));//读取未设定时AD模块采集的多个数据,打印平均值

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读数的平均值减除以传感器设定参数

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数值

Serial.print("read average: \t\t");

Serial.println(scale.read_average(20));//读取设定后AD模块采集的多个数据,打印其平均值

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);// 输出重量数据

Serial.println("Readings:");

}

4  实验测试与分析

最终本药盒系统包括硬件与手机APP,如图5所示,该系统供电后开始运行,当系统在正常运行过程中按下复位键后系统会重新启动。该系统的操作过程简单,将需要被称重的药品放在称重台面上,系统会自动进行重量检测,当所称重的物体重量一旦超过最大的可称重数值后,装置将会自动的发出警报声。本系统通过手机APP进行定时时间的设定,并在APP同一界面显示当前药物的剩余量。

图5中所示的药盒系统正在测量药品的重量,通过图片可看到手机APP界面实时显示设定的吃药时间和药品的剩余数量。可以看出药盒中的药品数量与APP显示界面的剩余药品数量是一致的。

在对药品的重量进行测试时,使用每颗重量为0.3 g的小球模拟真实的药品对其重量进行测量,在对药品重量的测试过程中,选用了标准的电子秤作对比测试,以保证测量的数据准确性与可靠性。药品的重量信息经过Arduino单片机处理后通过串口通信在上位机界面进行显示,手机APP中显示药品的数量,经过多次的实际测量,不断的对系统测量的数据进行对比分析,对系统进行改进完善,最后得到如表1所示的测量数据。

从以上测量数据可以看出,本药盒系统测量出来的药品重量与专业电子秤测量出来的数据基本一致,测量误差不超过0.01%,满足系统的准确度与精确度要求。

除此之外,对于其他模块的性能也进行过多次测试,通过与手机自带的计时软件对计时模块进行多次对比测试,对ESP8266无线模块的灵敏度与在保证传输数据准确的情况下,发送数据的时延作为对其测试的重点。测试表明本系统性能良好,准确度较高,灵敏性较强,能够满足设计的要求。

5  结  论

该系统对基于Arduino的智能药盒系统进行了设计,设计了一种基于快速且高精度的数据采集传感器的智能药盒系统设计方案,可提醒用户按时吃药,通过手机APP实时查看药品使用及存储情况。在上述基础上加入了报警模块来对用户进行提醒,并在程序中采用了中值滤波算法提高数据处理的精确性。智能药盒可广泛应用于健康管理机构、医院、科研机构等,一方面可以管理用户的真实服药状况,培养用户的服药习惯,使服药计划可以得到顺利实施;另一方面也可以根据用户的健康状况,实时调整用户的服药计划,减少过度治疗的情况发生。通过实验测试可知,本设计方案具有传输速率快、准确性高、功耗低、成本低等特点,而且符合模块化设计思路,便于日后扩展其他功能,满足人们的需求,具有一定的实用价值。

参考文献:

[1] 葛海江.基于HX711的高精度电子称重研究 [J].电子测试,2019(10):31-32.

[2] 李明明,俞宏霖,王薇.基于DS12C887芯片的实时时钟设计与研究 [J].软件导刊,2017,16(2):106-109.

[3] 谢文和.传感器及其应用 [M].北京:高等教育出版社,2003.

[4] 刘巍.应变式传感器的原理及对应变片性能的测定 [J].科技经济市场,2015(2):102-103.

[5] 汪曲波.船舶推进轴系振动与功率测量分析研究 [D].武汉:武汉理工大学,2009.

[6] 李艳,李新娥,裴东兴.应变式压力传感器及其应用电路设计 [J].计量与测试技术,2007(12):32-33+36.

[7] 高天学.基于STM32的无线运动传感节点设计 [J].现代信息科技,2020,4(24):35-38.

[8] 邱麥迪,任芳,蒋飞.基于STM32的电子称重系统的设计与实现 [J].中国仪器仪表,2020(7):73-76.

[9] 蔡睿妍.Arduino的原理及应用 [J].电子设计工程,2012,20(16):155-157.

作者简介:武宇星(2000—),男,汉族,内蒙古乌海人,本科在读,研究方向:电子信息工程;韩祥森(1994—),男,汉族,山东淄博人,助教,本科,研究方向:电子与通信技术、智能控制。