APP下载

基于树莓派的物联网智能药柜系统

2021-07-31王国伟陆华丽张苗苗薛瑞晨郝媛媛

物联网技术 2021年7期
关键词:药柜指纹服药

王国伟,陆华丽,张苗苗,薛瑞晨,郝媛媛,赵 华

(南京师范大学 计算机与电子信息学院,江苏 南京 210000)

0 引 言

随着医疗和信息技术的快速发展,人们生活质量不断提高,人类的平均寿命在不断增加,但同时“老龄化社会”“慢性疾病”等问题日益突出[1]。成年人由于工作忙碌常忘记服药,老年人也因为健忘而常常忘记服药,错误服药已经成为整个社会密切关注的问题[2]。为了解决用户错误服药等一系列的问题,设计一款集智能化与人性化的智能药柜系统已经迫在眉睫。

目前,智能药柜系统应用广度虽远不及其他的智能家居产品,但也已经有了一些成果[3]。美国Mobile Aspects公司采用了RFID设计了一款智能型的药柜,可以将存储量和使用情况记录下来,而且可以识别药品的使用期限,提醒过期药品需要清除[4]。国内市场也有相关的产品出现,例如,天津德致伦电子科技有限公司基于STM32设计与实现了一款新型智能药箱,该产品可以提醒老年人群体按时用药,安全用药[5]。同时国内市场上也出现了很多适合在智能手机上使用的软件,如“医生树”“医指通”等[6]。但以上涉及的产品存在系统复杂,实施困难,成本较高,功能相对单一等一系列问题,并不能保证正确的人在正确的时间服用正确的药物。

为了解决以上问题,本文结合多种产品的优点,从用户实际使用时易出现的问题的角度出发,设计一款基于树莓派(Raspberry PI)的智能药柜系统。在设计的智能药柜系统中,采用指纹模块以识别服药对象、采用扫码模块扫入条码编号、利用网络爬虫技术提取并存储药品信息、搭建数据库用于信息管理。通过以上设计结合开发的交互界面,保证了用户在正确的时间服用正确的药物。为了进一步提高系统的可用性,在Android Studio开发平台设计了一款基于智能保健系统的掌上管理应用程序(APP),APP可以远程查看和设置服务器的药品信息和用户信息。实验表明,本文提出的系统实施成本较低、功能齐全,从用户使用需求出发,解决了现有产品无法识别身份、无法管理信息的问题。

1 系统总体结构及硬件电路设计

本文设计的智能药柜由树莓派主控板、条形码扫入模块、指纹识别模块、闹钟提醒模块、电磁锁模块和智能Android手机组成,系统总体架构如图1所示。用户通过树莓派显示器进行人机交互,移动终端通过无线网络获得本地服务器数据库数据。

图1 系统总体架构

选用的树莓派主控板是一款基于ARM的微型电脑主板,有40个引脚,包括4个USB接口,以及1个HDMI视频线接口[7]。图1中,电磁锁模块采用GPIO高低电平控制的方式;指纹模块采用串口通信,RXD与TXD交叉连接;扫码模块和闹钟模块采用USB的方式与主控板通信。

2 树莓派服务器软件设计

2.1 主控及周边模块驱动设计

智能药柜功能模块的驱动和上层通信均采用Python语言设计,功能代码在PyCharm平台上完成。指纹电路用于录入用户指纹,通过指纹特征值比对确认身份进入用户界面,显示用户信息。随后可以通过存取药品模块,扫入药品条码检索提取药品信息并存储、显示当前用户该服用的药物并取出、同时可以取出其他药品;可在服药设置模块选择药物后显示药品具体信息,并根据用法用量设置服药闹钟时间;可在信息查询模块查询服药记录、查询药品库存、查询存取药日志;可在参数设置模块设置用户信息和系统设置。程序流程如图2所示。

图2 程序流程

2.2 指纹识别功能实现

指纹模块和主控的通信采用主从模式,主设备发送的命令以及从设备模块的应答根据数据长度分为等于8 B和大于8 B两类,大于8 B的数据格式为“数据头+数据包”,数据头的格式见表1所列。其中:CMD为命令/应答类型;P1,P2,P3为命令参数;Q1,Q2,Q3为应答参数,Q3用于返回操作的有效性信息,0x00为操作成功,0x01为操作失败,0x04为数据库已满,0x06表示用户已存在。

表1 数据头格式

为了确保指纹数据库指纹的唯一性,1枚指纹只能添加1个用户,需要将模块设置为“禁止重复模式”,此时CMD设置为0x2D,P1设置为0,P2设置为Byte5=1:0。在采集图像时,命令数据长度为8 B,CMD=0x24,P1,P2,P3为0,应答数据包中指纹图像200×264像素,每个像素灰度用8位表示,指纹图像如图3所示,模块成功上传指纹图像后提取指纹的特征值,按指定用户号存入DSP模块数据库中。

图3 指纹图像

下传指纹特征值与DSP模块数据库比对为1∶N时,CMD=0x43,命令格式为“数据头+数据包”,数据包中存入当前用户的指纹特征值。

2.3 数据库设计

服务器的数据库使用目前最流行的关系型和关联性数据库管理系统MySQL[8]。关联性数据库将数据保存在不同的表中,而不是将所有的数据放在一个大仓库,这样就提高了速度和灵活性。MySQL使用的操作语言是SQL,操作数据非常便捷。

设计的智能药柜系统的数据库需要存储用户信息、药品库存信息、服药记录信息、存药取药日志信息、药品信息。

建立的表与对应的含义见表2所列。

表2 数据库表

2.4 药品信息扫入功能设计和实现

扫码存药功能采用扫码模块识别药盒上的条码,系统将条码编号输入到“1药网”药品网站检索此药品,进一步地,系统爬虫模块爬取药品的名称、功能主治、用法用量、用药禁忌、不良反应并保存到数据库药品信息表中,系统流程如图4所示。扫码模块录入药盒条码编号并检索信息过程如图5所示。

图4 系统流程图

图5 扫码检索药品过程

传统的爬虫通过直接模拟HTTP请求来爬取站点信息,由于这种方式和浏览器访问差异比较明显,很多站点都采取了反爬手段,无法有效地爬取需要的信息。为了避免站点的反爬导致药品信息爬取失败,本文采用Selenium爬虫框架对药品进行主要信息检索、分类、存储。Selenium是一个用于对Web网页进行自动化测试的工具,可以通过它提供的方法自动操作浏览器,完全模拟人的操作行为,浏览器选择Google Chrome 87.0.4280.88,同时安装对应版本的驱动WebDriver。Selenium通过WebDriver协议控制浏览器来完成一系列的任务。首先,通过Selenium的API得到“1药网”输入框对象;接下来在输入框输入条码编号进入此药品对应的页面,此时就拿到了该药品网页的HTML源码;下一步利用Xpath方法提取系统需要的“药品名称”“功能主治”“用法用量”“用药禁忌”“不良反应”。爬取过程如图6所示。在数据库药品信息表中创建字段,将上述5类药品信息保存至数据库中。创建的字段与对应的含义见表3所列。

图6 爬取过程

表3 MySQL药物信息字段

2.5 用户界面设计

智能药柜系统用户界面设计采用PyQt5工具包。PyQt是由 Phil Thompson开发的一个创建GUI应用程序的工具包,其是Python编程语言和Qt库的成功融合[9-10]。在本系统上位机的设计中,使用QtDeSinger设计用户GUI,将生成的UI文件通过PYUIC5工具转换成PY文件,下一步在PyCharm平台编写功能代码,使用到的组件包括QWidget、QLabel、QPushButton、QTextEdit、QMessageBox、QTextBrowse。智能药柜登录页面如图7所示。

图7 智能药柜登录页面

3 移动端应用程序设计

3.1 功能设计

应用程序(APP)的设计使用Java语言,在Android Studio平台上完成[11]。手机APP模块包括存取药日志、健康信息、服药记录、药品库存信息和用户信息5个子模块,如图8所示。其中:存取药日志模块用于查看存药和取药记录;健康信息模块用于查看用药禁忌;服药记录模块用于查看用户历史服药记录;药品库存信息模块用于查看药品信息及药品的剩余量;用户信息模块用于查看用户的个人信息。

图8 手机APP功能设计框图

3.2 操作数据库

数据库操作使用JDBC(Java Database Connectivity)。JDBC是实现Java应用程序与各类不一样数据库会话的一种体制,主要作用是实现了对数据库的访问和操作。JDBC能实现的主要功能包括:请求连接数据库、向数据库发送 SQL请求、查询结果等功能[12]。其实现步骤为:加载JDBC驱动程序;提供JDBC连接的URL;创建数据库的链接和执行SQL语句操作[13]。加载驱动就是在使用数据库之前需要导入MySQL和JDBC的驱动包到Android的Java build path[14],使用JDBC驱动程序链接MySQL数据库,连接成功之后就可以使用SQL语句对数据库进行操作,在MySQL数据库中建立数据表。

4 系统测试

本文通过硬件及软件的设计,实现了如图9所示的智能药柜。为了验证系统的可行性和系统工作流程,将可触摸显示器安装到药柜上,将主控板及周边功能模块部署到药柜对应位置。首先给主控板供电,设置目标IP地址为192.168.1.101,固定端口号。经过测试,Android手机APP与数据库可以做到实时通信,各功能模块均可正常工作。系统各模块如10所示。

图9 实物图

图10 模块实物图

登入系统后进入主页面,主页面功能包括:

(1)显示当前用户信息;

(2)存取药品模块,包括当前用户此时需要服用的药物、选择其他药物以及扫入药品条形码检索药品信息并存储;

(3)服药设置模块,选择该用户关联下的药品,并调取数据库关于该药品的基本信息,根据用法用量设置服药闹钟并在右侧显示该药品的图片;

(4)参数设置模块,包括用户信息设置以及系统设置;

(5)信息查询模块,包括历史服药记录查询、药品库存查询以及存取药品记录查询。

系统主页面如图11所示。

图11 智能药柜系统

点击“历史服药记录查询”按钮,系统则调取该用户数据库所有的历史服药记录并显示在主栏目中,如图12所示。

图12 用户历史服药记录

点击“扫码存药”按钮,使用扫码模块扫入药盒上的条码编号,检索、分类并保存到数据库中。使用Navicat数据库可视化管理工具连接到树莓派MySQL数据库,输入MySQL用户名、密码登录成功,在药品信息表中查看药品信息添加情况。图13是Navicat中查看扫码爬取“1药网”药品的关键信息。

图13 扫码存药测试

智能终端登录测试如图14所示,终端功能包括查看“存取药日志”“健康信息”“服药记录”“药品库存信息”以及“用户信息”。

图14 手机终端测试

5 结 语

本文针对已有的智能药柜在实际使用中出现的问题,基于树莓派主控设计了一种智能药柜。设计的智能药柜可解决现实生活中服药的用户身份识别和药品信息管理,及用户经常忘、漏服药等问题。测试结果表明,该系统软硬件工作正常,APP能正常操作数据库内容,上位机能够正常使用,能满足用户实际的需求。

猜你喜欢

药柜指纹服药
服药禁忌
基于STM32的智能药柜设计研究
像侦探一样提取指纹
为什么每个人的指纹都不一样
警惕服药期间的饮食禁忌
黑漆描金双龙纹药柜
服药先分阴阳
智能药柜应用环节用药错误识别与防范指导原则
基于自适应稀疏变换的指纹图像压缩
可疑的指纹